You should expect this and other posts in this "series" to change as I refine my thoughts. I've been toying for some time with comparing software development to theater. Specifically, what are the similarities and differences between releasing an application and opening a play? Can the theater production experience benefit the developer?
The genesis for these questions began when I appeared in a small, local production. I have a long background in the arts, more so in classical music. It struck me that most plays are successfully "released" on time and reasonably on budget. The quality may be questionable, but the product arrives. Why is that? Why are so many software projects late and over budget, when so many amateur and professional groups hit their marks?
First, here are some similarities between theater and software development:
- Both have a deadline. In a play, it's opening night. For software, it's the release date.
- Normally, a team of people are coordinating to achieve an end result.
- Both release their product to a set of users.
- A customer (producer, board of directors) pays for the development, with hopes that the users (employees, patrons) will bring return on the investment.
- The final product is assembled from multiple parts. In a play, it's the set, costuming, acting, sound, lights, etc. In software, it's the various modules, documentation, training, etc.
That's a good start. I'll save the differences for the next post, but one important difference is worth mentioning. In most cases, a play is produced with an existing script. Most software is created from scratch. The best comparison to software would be a play being produced from a commissioned playwrite, and I'll attempt to discuss that. I will also try to talk about that very experience with some theater people I know.
Coming up: some thoughts about why plays finish on time, why software doesn't, and a discussion I had with a software engineer about complexity.