I don’t read many blogs, but one that I’m addicted to is Jeff Atwood’s Coding Horror. I don’t know how Jeff finds the time to write so many lucid blog entries, but the rest of us are the beneficiaries of his diligence and fortitude.
Recently, Jeff blogged about the importance of human factors in software development. In fact, he boils it down to the notion that “it’s always a people problem.” The more I think about it, the more I see the absolute truth in it. To be sure, there are many things that can doom a software project, but even if everything else is just right, you can’t build software with people that don’t know how to build software or that you can’t get along with.
I would add the corollary that if the problem isn’t the developers, it’s the managers. I can’t tell you how many times I’ve seen teams of smart developers fail (or produce a very mediocre product) because management dumped a new platform on them and figured “hey, these guys are smart, they’ll figure it out.” No matter how well you know J2EE, you can’t become a competent .NET programmer in a month by reading a couple of books and building a prototype or two. In the ASP.NET world, this often manifests itself in the form of poorly designed apps that don’t scale.
The quality of the product you build varies proportionally with your knowledge of the platform you’re building it on. Write it down.