No Royal Road to Software
In ancient times, Euclid was asked a questions like yours by his student King Ptolemy. His response: "There is no royal road to geometry."
You mention that your supervisor would laugh if he knew how much time you spend trying to write code like a professional developer. Others answered your questions with a laundry list of things to learn ranging from source control to Design and Analysis of Algorithms.
They fall short of your goal:
"I need to spend time on actual physics"
Concert Pianist or One Man Band?
The world moves too fast for people to dabble. If you want to be a concert pianist, don't divide your time learning instruments to become a one man band.
My concept for the role of a PhD in physics on medium to large projects is as an idea leader for system definition, expert in theory, subject matter expert during use case creation, and end user / judge for results generated by software artifacts. Work closely with the best software engineers you can.
How do I assess if my work is also good from a programmer's perspective?
If you want to set the bar high, start here:
Software Architecture in Practice, Len Bass, Paul Clements, Rick Kazman
Look for the chapter "Understanding Quality Attributes". Beyond code, it considers usability, modifiable, performance, security, availability, reliability, testability, maintainabiilty, and portablity (not can you carry it, but can you port the design from one platform to another). All need specific measurable goals. Similar references include:
http://msdn.microsoft.com/en-us/library/ee658094.aspx
http://www.sei.cmu.edu/reports/95tr021.pdf
Your Goals vs. C and C++
Like FORTRAN, these are hard and old languages. Positive indicators for C/C++ include:
- Application with hardware, embedded systems.
- Existing project you want as a starting points.
There are a lot of people doing web development, data visualization, and big data. Many are motivated to find or make other languages. For example, physicist Sir Tim Berners-Lee made his success with HTML (but is little know for physics). Evaluate your goal vs. your programming language.
Consider Using Matlab
Matlab has a great installed base, is specialized for math and sciences. It has tools for data visualization. It allows scientist and mathematicians to express problems in the problem domain rather than the solution domain. Matlab makes a Parallel Computing Toolbox and Distributed Computing Server products.
I expect Matlab's success is due to using multidisciplinary teams with people who are experts in physics, math, electronics and instrumentation, operating systems, programming languages, software development, software testing, software architecture and design. The analogy may be a stretch, but why would you put yourself out there alone, starting with a hammer, chisel, and rasp to make something when you have a 3D printer available? As Newton might ask, why not stand on someone's shoulders?