I was in a meeting yesterday, and our engineering director made an offhand comment that made me cringe. He commented that our principal developer for one of our products (he really is the only programmer) “like most good programmers” was a physicist. He went on to say that he also did a lot of the initial code for our system, and is a physicist.
Anyone who is a skilled developer, who has been through at least part of a computer science program, who has grounding in architecture, and data structures, and groks object oriented design, will produce vastly superior code.
I speak from experience, since I do have a physics degree and background, and I have done some scientific analysis programming (not professionally).
I believe the reason why he made the observation is that of course physicists will be better suited to understanding the detailed instrument theory, and how it all works, so they are positioned to create real world, usable instruments. (the instrument in question is an electron microscope)
But, Physicists are MASTERS of shortcuts. We get stuff done, and have no concern for the next iteration. We cut corners, use undocumented registers, and in general employ practices that make any professional programmer cringe. What we produce works, but often is a mess of procedural functions, or if we use an OO environment, we bastardize the methods and object inheritance in ways that almost assure that the code will be unsupportable.
In short, when you have physicists as your principal software engineers, you will end up with a pile of spaghetti code, lots of procedural cruft, little usable documentation, and often no real coding style and standard.
But they will deliver something that functions fast.