Good software, in Humphrey’s view, “is usable, reliable, defect free, cost effective and maintainable. And software now is none of those things.” [via FuzzyBlog]
This article covers a lot of the same ground as an article I was reading yesterday by Jerry Weinberg in Understanding the Professional Programmer. He compares the “if it compiles it must be OK” approach to students who learn that their essays are being graded by a computer which takes off marks every time it finds a spelling mistake or error in the grammar. Very quickly you’ll end up with a class of students who have perfect spelling and grammar, but who have no idea how to actually communicate ideas in writing.
Thankfully we’re not quite that bad and I don’t think many people can seriously believe that “it compiles, so we’re done” is true. But I’ve started noticing a distubing trend of people misusing the XP approach of “the tests all pass, so we’re done”.
Kent Beck is fond of saying “Make it run, make it right, make it fast.”
Usually this is taken to be a warning against premature optimisation (after all that’s where the quote is mostly commonly quoted from). But it’s also a warning that you’re not done when it manages to run. You still need to make it right. I’m always amazed by how few programmers have ever read the Refactoring book – or are even aware of the concept.