Software Development != Manufacturing

It’s not surprising to hear this sort of criticism from developers directed towards management—that project managers mistake software development for a manufacturing process. But I’m convinced that many developers themselves fall into this trap too. There exist beliefs that one can create good software via some formulaic mixture of proper tools, patterns, and frameworks. That by hedging my work with the latest libraries and methodologies that I don’t need to think about what I’m developing. I simply add the right tools and start at the top of the process and work my way down.

But software is much more like writing a book, painting a picture, or desiging (not manufacturing) a product. It takes skill, it takes time and it takes a lot of thinking. You don’t get a good book by grabbing off-the-self plots and sticking them together like legos. The same goes for software, even simple software.

This does not mean that software development cannot be efficient, predictable or successful. Agile methodologies provide excellent guides to finding such productivity. What it does mean is that successful software development necessitates an understanding of the nature of the work at hand—a shift from manufacturing to design.