Movies and the software industry
One of the weblogs that I read relatively regularly belongs to Andy Hunt of Pragmatic Programmers fame. [1]
Last week he had an article about how writing software is similar to making hit movies. I have actually thought this myself on several occasions. It occurred to me originally while watching a documentary on how a particular movie was made (I think it might have been one of the Lord Of The Rings trilogy). While watching this documentary, I was struck by how all of these people with different specific talents were able to come together to produce a single unified work that was every bit as complex as some major software projects, yes was cohesive and seemless.
Now Andy makes the point that it is just as impossible to create a machine to consistently crank out hit movies as it is impossible to create a machine to consistently crank out perfect, on time, projects. I agree with him up to a point, but it forces me to ask the question: "If this is true, then why does it seem that directors like Steven Spielberg, are able to crank out outstanding movies year after year with very little deviation in quality?"
The reality is that they do manage to create hit movies relatively consistently. It does not appear that there is a specific formula that they use, but it does appear to be the result of an extremely talented but small pool of people (specific directors, writers, and actors).
I'm not sure that I'm saying that what Andy said here is wrong. I agree with him that if you remove specific resources from the project or movie it will go downhill fast. But I guess that I'm asking the question, what can we in the software development field learn from the movie industry? Do we all need a Steven Speilberg on our projects? Or is it even as simple as organizational structures such as having directors, story boarders, etc. who are extremely good at what they do and limit their work to their specific area of expertise, and having these overseen by a director with the ability to unify these diverse parts into something cohesive?
[1] Coincidentally, if you ever get a chance, "The Pragmatic Programmer" is an outstanding book, and I recommend it to every one I know. Additionally, for any developers that work for me, the first thing that I do on their first day, is issue them a copy of this book.