Jan 20, 2011

The State of the Computer Programming Biz

originally posted to my Windows Live Blog on July 1, 2005

Thinking about going into computer programming?  Everyone knows that salaries are not what they were before the DotCom crash of the 90′s, but salaries are still decent, right?
Well, they may be improving, but the only way the vast majority of software developers will get paid well is if the industry as a whole sets some standards for itself. There are some indemic problems in the industry.  In a move to hire cheaper labor, lots of companies sacrifice quality.  This obviously can impact the sucker, er, I mean end-user buying the cheapware, but it also costs the software company more  in the long run.  The reason is that there are huge differences between the kind of code cranked out coders with low vs. high experience levels.   It is one thing to be able to make something work in your code.  It is another thing to make it work well, not only in terms of the user’s experience but in terms of stability over time, error handling, etc.  It is yet another thing to write code good enough that it is easy for other coders to figure out how to fix and enhance without spending days trying to guess how the code works and complaining that the whole thing needs to be rewritten, preferably in the language that they prefer to code in.
On one hand it is very cool that writing software is easier and more feasible for the average computer user.  On the other hand, that doesn’t mean they should be hired to produce code professionally. 
There aren’t any widely accepted industry standards that rate the quality of work by a software developer.  Lawyers at least have to pass bar exams to certify that they are qualified to do a decent job.  Doctors have to meet requirements established by the AMA.  Why should you care?  If you are a software developer, you are the one that has to help make this industry a better place to work, and a more lucrative career as well.

Are you a software developer who actually cares about quality and professionalism in your work?  Maybe you have learned about the technology, but now you want to know the difference between a good coder and a great coder?  There is actually quite a lot written on the subject, but it seems that only a small percentage of coders bother to learn about this subject, and even fewer to make the effort to do anything about it.  You have to not only learn how to make things work in your code, but you need to pay attention to sometimes very minute details of how you design your code.  You need to also think about the bigger picture of the process of developing software.

Here is some suggested reading for those interested:

  • Software Craftmanship: The New Imperative by Pete McBreen
  • Code Complete (2nd Edition) by Steve McConnell
  • After the Gold Rush: Creating a True Profession of Software Engineering (same author)
  • Rapid Development (same author)
  • Software Project Survival Guide (same author)
  • Writing Solid Code by Steve Maguire
  • Debugging the Development Process (same author)
  • Writing Secure Code by Michael Howard & David LeBlanc
  • Dynamics of Software Development by Jim McCarthy

No comments:

Post a Comment