After the gold rush
Recently, a colleague of mine was cleaning his desk and found a copy of After the gold rush (the book, not the album) that he had borrowed from me years ago.
This reminded me of how I felt about that book. When I first read this book, I was just starting my career and I was very impressed by that book. It is one of those books that I would have put on the must-read list for any software developer.
I really liked the idea of software being thought of as an engineering discipline. I wanted software companies to make better software and the process to become more predictable. I used to work for a company that made shrink wrap software and that was known for the death-march style of software development.
Well, the gold rush came and went, and came and went. Software development had changed but I have also changed. More than 10 years later, I don't think the same way at all about programming. In the past 10 years, we have tried to formalize, productize and normalize software development. And as much as we tried, it pushed back and wanted to go back to its true nature.
I think that software development is a craft. Something that skilled, trained people do. There is still a category of software that is purely engineering; like software that runs nuclear power plants and the space shuttle. But that is a tiny fragment of the software that gets written in the world. In the past few years, software has become so entrenched in our lives that it has become very personal. Software is not about machines but more about people.
People don't like to consider software as a craft because they associate craftsmen with the old guy making custom vintage furniture replicas in his workshop. But there are other large-scale human endeavours that are also run by craftspeople. Movies are one great example. Movies have been compared with software development before but I'm looking at it from the point of view of the skill required. Movies involved large budget, tight schedules and lots of specialized, highly technical labor. In many cases, actual engineering is involved. But in the movie industry, engineers that work on a movie set are considered craftsmen and there is no negative connotation to this.
Like software, there is a method to the creation of movies and there are ways to manage these large projects even if it is not all guesswork and gut feel. So I think that, after the gold rush, we should embrace the craft of software development. We should learn to deal with it as such and learn to manage it properly. Instead of trying to force-fit an engineering or manufacturing process that will never really fit.