The best developers are generally underpaid

Earlier this week one of my good friends, Jason let me know that he just started a new blog. The thing that’s different about this blog is that it doesn’t focus on the technical side of things, but rather focuses on the software development industry as a whole. Jason is attempting

…to raise awareness of how the Industry succeeds and fails, where it all seems to be going, and what has to happen before we can dig our way out of Dev.Hell and ascend to Tech.Paradise.

What I find interesting about this blog is that on the same day Jason created his opening post, Phil posted about “10 Developers For The Price Of One”. This post and the content of Jason’s blog help underscore some of the problems the software industry is facing.

According to theage.com.au, Australia’s Visa rules are being attacked by a “top representative of India’s IT industry”. The resulting conclusion is that developer salaries are too high. This ties nicely in with the feeling that the best developers are generally underpaid and the worst developers overpaid.

What sets a good developer apart from a bad developer? Actually, a lot of factors determine this difference, and all of them fall under the category of productivity (or Total Cost of Ownership (TCO), to reuse a common principle in the finance industry). Phil does an excellent job describing these factors, but it is important to see the list. If you want the detailed explanations, see his post. In a nutshell, good developers:

  1. take ownership so you don’t have to
  2. write code with less bugs
  3. write maintainable code
  4. do more with less code

This boils down to a good developer has a sense of ownership and pride in the code he/she writes. The higher the sense of ownership and pride, the better the code becomes (over time) and the higher the sense of ownership. If this sounds like a self-fulfilling prophecy, you’re right.

Incidentally, all of these factors are also directly influenced by following a consistent set of code standards. A comprehensive coding standard encompasses all aspects of code construction and is designed to improve program adaptation and maintenance. The readability of source code has a direct impact on how well a developer comprehends a software system. That comprehension has a direct impact on the correctness and reliability of that system.