Recently, my friend and colleague Kyle Griffin posted a linked in comment around naming that referenced a symphony for an approach to solving problems. It's an excellent post, but it also inspired me to think about the symphony concept even further, as a fantastic example of iterative development. For some background, I have been a trombonist in local orchestras as well as Jazz ensembles for decades.
One common analogy is of the conductor as the manager. In most cases the conductor is probably more analogous to the Product Owner, to use Scrum terminology. Her job is primarily focused on what the finished product will be, not as much on the individual "how". Each section has a Principal, or section lead, who's job that is. Now like with any analogy, this isn't perfect, as some conductors do get deeper into the weeds than others, but bear with me. The conductor's job is far more focused on the whole than each of the parts. I would even go as far as to say that the conductor who focuses too much on the individual sections causes an unhappy, and therefore unproductive, orchestra.
Now, lets focus on the iterative development cycle. We can start by describing how a new piece of music is prepared. Concert schedules, and sometimes what will be performed are usually decided at the beginning of a season, months in advance. The dates are fixed, based on business needs and venue availability. Sound familiar?
At the first rehearsal, the orchestra is handed the new music. Sometimes its something they have played before, and sometimes its not. The first thing the orchestra does is "sight read", or run through the whole thing without stopping. The conductor listens to what is performed. Then she starts tweaking it. "Trombones are too loud, Id like you to play that a little softer". As a side note, as a trombonist, that never works, we'll still be too loud. Then we iterate again. We try more tweaks. Sometimes we might experiment with some changes that aren't even what the original composer wrote.
Each iteration, and there are many, its a potentially shippable product. I would bet that with a professional orchestra, and even more so with the famous ones, even the early iterations would be "good enough" for the majority of listeners. But you don't become a great orchestra by accepting "good enough". Each player is a true craftsman and artist. They bring their "A" game to each rehearsal as well as the final delivery...er...performance.
Is a symphony orchestra a great analogy for iterative, or Agile development? i think so. I think it is a little different from what some might expect around the idea of centralized management and delivery, but it is a great analogy. It provides a framework around how iterative development doesn't need to be overly formalized, and also a great reminder that everyone who is involved is ultimately responsible for providing the best possible performance. The end result with both great orchestras and great software teams? Delighted customers.