As a profession, software engineering is so broken. I can only think of one other field where so many incompetent people are permitted to work and that's politics. Really, besides politicians, software engineers are the most unqualified people for their respective job. My guess is that upwards of 95% of all software engineers, programmers, developers--whatever we choose to call ourselves--should not be allowed to write code. I include myself among this 95%. Most of us don't have the proper background for software and even if we do we don't go through any serious training, internships or fellowships. We try to learn C++ in three days when we know it'll take at least ten years of dedication to learn programming.
Compare software with medicine. A friend recently passed his board certification. This is after four years of university, a few more years of medical school and a couple years of residency. He'll start a fellowship soon, and even after the fellowship he'll probably not be doing any "serious" work until he gets a few more years under his belt.
To be a programmer, you don't even need a college degree. After a few years you might get promoted to "senior" programmer but you're still very unqualified due to lack of adequate training and mentoring during your junior years. A couple of years later maybe you decide you should go into management because you realize writing proper code is too difficult and it's just easier to spend most of your days in meetings; or you just decide the money is better being a manager, director, VP, etc. Some toughen it out, fooling themselves into thinking they're actually good programmers. They also fool the higher-ups because the higher-ups don't know any better, and so they get promoted to "principal" or "staff" engineer.
When all said and done, there's still not any qualified people to write code or manage the writing of code. At any given hospital there may be a few bad doctors, but at least you know there are competent doctors running around keeping things in check. At any given software organization I wouldn't be at all surprised if there wasn't a single, truly qualified programmer. Maybe I'm giving doctors too much credit and programmers not enough. Probably not. I mean what other profession do people constantly think to themselves (if they were honest): "the code I wrote last week/month/year is complete garbage." The code I'm about to check-in is crap. I don't know how to improve it, but I do know it's crap.
Is it time that software engineering, as a profession, adopt standards like medicine? Unless you have the equivalent of an MD and are board certified you can't be writing code for the public. Need/want an unlicensed programmer, you'll have to go to Mexico, China or India, but all code written for the United States and Europe are required by law to be written by properly trained and licensed programmers.
Don't laugh. As recent as the turn of the 20th century doctors were largely seen as quacks. Anybody could be a doctor and medical schools were jokes. Doctors were not trusted because the vast majority of them were incompetent and unskilled. It was not until the medical profession started tightening medical school standards that doctors became better trained and saved more people than they killed.
Software engineering is so backwards. Whereas a board certification is a great accomplishment in the medical field--and even then bad doctors pass--certifications in software is largely looked down upon. This is because certifications in programming are typically granted by software vendors for marketing purposes or by night colleges. Some colleges do confer MS and PhD in computer science, but since there's no standard governing body the degrees are unreliable indicators of competency and skill.
Software engineering today is where medicine was 100 years ago and until we start changing things don't expect the bug counts to go down.













While I agree with the basic sentiment of the article, there's some flip sides to consider:
1) In no other professional field would accumulated experience be so worthless. This must be the only field where people in the industry for 10 years can still expect to be tested in interviews like fresh college grads, and discarded for performance on the whiteboard/lack of knowledge of minutiae.
2) Few other engineering disciplines see a need to revamp your toolkit at this pace. There's 3 or 4 generations of technology in a decade.
3) Software reuse is and remains a holy grail. Even with all the frameworks and libraries, few engineering disciplines require this much customization of software to make it work properly.
Some of this comes from my experience pondering the transferability of job skills as I seek a job, but I clearly see this flip side. In my view, what's broken is just the last decade of software development.
Posted by: Sumit | June 14, 2009 at 02:46 PM
I agree to the point that, as an industry, we have not yet taken ourselves seriously. It is a matter of shifting our focus to become better qualified as individuals and to start looking at ourselves and our peers as craftsmen. I don't know of many hardware engineers who don't think through all of the possible problems that the circuit board they are designing will encounter. To call ourselves engineers elevates us to a higher standard that we, often, fail to live up to. We need to start thinking, designing, and crafting with absolute quality in mind as the end goal. It is NOT acceptable to write buggy code. It is NOT acceptable to not test our software for every possible use case. We MUST start holding ourselves to a higher standard or no one else ever will and we will be a laughing stock.
Posted by: jkilgrow | June 15, 2009 at 06:36 AM
It's a worthy objective, but your thoughts seem to be going down a dangerous path.. Who are the geniuses who are going to decide who gets to write software? Your congressman?
On a related note, retweet from Steve Pavlina:
#3 cause of death in USA is iatrogenic disease (death due to complications from a doctor's treatment). Docs kill ~250K ppl/yr.
http://twitter.com/stevepavlina/status/2123385001
Let's not hand the government monopoly power over software quality.
Posted by: Anonymous | June 17, 2009 at 06:29 PM
At any given software organization I wouldn't be at all surprised if there wasn't a single, truly qualified programmer.
Specific examples please, or else I'm inclined to think you're pulling this out of your ass for shock value.
Posted by: Chris | June 23, 2009 at 02:41 PM