For weird reasons, this is my most read Quora answer since I started using the site a year ago. Within the answer, the observant reader can easily identify a problem, which is as follows; “How do I separate the Einstein from the Morte?”
First things first, an Einstein is “expensive in maintenance”. By this, I don’t necessarily mean his salary, but I mean his work ethic. In order to understand why, I must answer the above question first. And the answer to the above question is as follows; “Give the developer an existing legacy project, and tell him to add one feature to it.”
The Morte will happily code away, spending a week, or possibly less, to deliver your feature. The Einstein on the other hand, will spend a month, and as he gives you back your project, it’ll have 10% of its original codebase, it’ll be 10x as fast in runtime, he’ll have eliminated 100+ bugs, and he’ll have your feature done, in addition to having fixed dozens of security holes you didn’t even know you had. As a bonus, the code will be so clean, that comments are arguably superfluous.
Hence, if you can get away with crappy code, it’s cheaper to hire the Morte, or some inexperienced overconfident junior developer, believing he can solve every problem tossed at him, because he was able to implement QuickSort in x86 CISC assembly code in College.
If you want to create a product that in the long term requires less resources to maintain, that is easily transferred to new developers, with few bugs, executing at the speed of light though – You’ll need to hire the Einstein. He might not necessarily demand that much more salary than the Morte, but he’ll refuse to deliver something back to you, which he haven’t (at least) improved 10x. Hence, he becomes more expensive in the short run, but less expensive in the long run. If your idea of software development is to make some few short bucks though, go for the Morte.
It’s impossible to become a brilliant software development, without a touch of code quality OCD