I recently found a great article by Peter Welch (I think) entitled “Programming Sucks”. You might be able to <a href”http://stilldrinking.org/” target=”_new”>find it here</a>.
I agree with most of what it has to say, unfortunately. It’s unfortunate because basically it says our industry is pretty screwed up, and not really get much better.
There are two things we can (perhaps), as members of that industry, do about this:
- Make the cost of crap software clearer, so people in positions of authority don’t make stupid decisions. That’s a topic for another blog post – ok, maybe several.
- Make programmers better so they don’t crank out crap: This is two-fold. First, you need someone to know the difference between crap and not-crap. This is a simple (!) education process. Secondly, you need to disabuse them of the notion that crap is somehow faster than non-crap (and you need their boss to be similarly convinced, which kind of brings us back to point 1).
One of the ways I’ve seen that makes better programmers is the apprenticeship model.
The company 8th Light, which if you haven’t heard of you should go googling for, famously uses this model pretty much exclusively, and one could argue with pretty good success. I’ve done it myself, and likewise with some success.
The one flaw in the apprenticeship model is not the actual learning and teaching – it’s the danger of the Dark Side, when the student decides he has become the master, and builds a Death Star.
If you don’t know who Darth Vader was, then you’re on the wrong blog. Move along, nothing to see here. If you don’t know why it’s amusing that I’m writing this on May the 4th, the same advice applies.
In fact, the analogy holds water a bit further: the creations of these “young masters” often meet with the same fate as the Death Star (both versions!), and in as spectacular a fashion (Healthcare.gov, anyone?)
In software development, the Dark Side consists of the twin threat of hubris and well-defended ignorance. The hubris is usually temporal – that is, the belief that nothing invented before their own birth is worth a damn or has anything to teach them. Mainframes? Pfft, obsolete dinosaurs. Lisp? Bah, no value there., right?
The well-defended ignorance is the opposite of being open-minded and continuously learning – the defender has a set of knowledge that they, in their wisdom, claim is sufficient. Its the best because it’s what I know, what’s why.
I’ve started calling this problem (ok, just today, but still) the “Darth Vader syndrome”, and I think it’s a risk you simply have to take if you’re going to mentor a padawan in this industry. It’s best if you dump the student before you get chopped in half by a light-saber, though. (Pretty sure the red ones are Emacs, the blue ones are Vi).