Steve McConnell, who knows a thing or ten about software development best practices, posted some excerpts from a white paper he and his colleagues at Construx Software wrote titled "Software Development's Classic Mistakes 2008". They've collected statistics through a survey and come up with some interesting data on the most common and most severe mistakes that we software developers make. Go check it out.
One thing that immediately struck me, was that none of the top ten mistakes listed were really unexpected. Overly optimistic schedules? Unrealistic expectations? Feature creep? It worries me that these are mistakes that we know about, hear about all the time, and still can't help but make, over and over again. As Steve writes, "many of the mistakes in the survey do indeed deserve to be called "classic" mistakes. I find it interesting that 8 of the top 10 mistakes in this year's report were listed in a book I published in 1996. If these mistakes were classic in 1996, they're even more classic 12 years later!"
One of the comment on the post really struck a chord with me. "Andy" reasons that we treat software development too much like art, as opposed to engineering (emphasis mine): "If the focus was on engineering, [then] learning best practices, and educating the workforce on topics like estimation, project management and SDLC, would be more common. (...) You don't see construction companies figuring out how to build buildings or bridges on their own."
Too often I see developers dismissing the notion of patterns and best practices; they see it as shackles that will only serve to hold their creativity back. I'm not saying that they're the answer to everything - there'd be no innovation, then. After all, software development is still a young discipline, and there are lots of things we've yet to work out how best to. But learn a thing or two from the millions of feet who have tread the path before you, then go off and change the world.