In a world where change is a constant organizations are turning to agile development practices to help transform everything from software development to business processes. In the software industry, tools and processes are regularly touted as the path to success, but "agile" is not a specific agile process or tool. The first declaration of the Agile Manifesto is "individuals and interactions over processes and tools," yet this seems to be lost on many people.
Although the concept of agility in software development might be somewhat new, other disciplines have practiced agility for much longer. One hundred years ago in similarly challenging circumstances of global conflict, financial crisis and immense change to those we face today, jazz musicians were turning music into an agile art form. Jazz and software development share common performance characteristics that I regularly observe in my work at IBM and in my work as a jazz musician. If you compare a great jazz band (team) with a high-performance software development team, you'll find many common traits:
- Continuous integration. Jazz musicians constantly combine and resolve unique, individual musical contributions. Software developers do the same, but their contributions are typically code and other content integrated into a build.
- Synergy. A solo musical performance is not as compelling as when everyone in a jazz band plays their different parts together. In agile software development, capturing requirements, writing code and testing take place simultaneously rather than in a "waterfall" sequence.
- Feedback. Team members must be open to responses from collaborators, consumers and competitors and adjust their actions accordingly.
- Quality. There is low tolerance for mistakes. A single significant mistake at the wrong time can ruin an otherwise perfect performance.
- On-time delivery. Each team must begin their activity at a previously agreed upon and publicized time. No matter what happens, the show must go on.
- In-time execution. Each team must deliver in real-time without stopping or slowing down to the point where they miss previously agreed upon synchronization checkpoints.
Diversity is essential to deliver a truly excellent performance. Fortunately, the IBM workforce is highly diverse. When a team has a diversity of skills, experience and perspectives, synergy is more likely to be present and there is increased potential to produce extraordinary results. Diversity helps to avoid groupthink and mediocrity, mitigates risk and builds robustness by avoiding extreme tendencies. Jazz musicians build diverse teams by seeking out new musicians with unique talents and artistic approaches. In software development, many leaders build "mirrortocracies" by hiring or promoting people who think and act like themselves. Instead, they should seek out team members with contrasting skills or perspectives.
Organizational agility begins with agile individuals and teams in which everyone can lead by taking initiative. In jazz, leadership is decentralized and dynamic with musicians alternately leading and following between performances and while on the bandstand. Software development leaders need to give up some control to facilitate success. If they straitjacket their teams with restrictive command and reporting, they inhibit creativity and agility and limit their organization's ability to respond to change. Instead, goals must be set collaboratively and people must have the autonomy to achieve the goals in their own way.
Although classical musicians play music from a previously composed script, jazz musicians are constantly improvising. In "classical" waterfall software development, the script is composed during extensive upfront planning. Iterative development decomposes planning into regular, shorter cycles. This dramatically improves a team's ability to respond to change and adjust for unforeseen elements. Further improvisation might be necessary to respond to rapid change and late surprises. The reality is that you can only plan so much and although having a minimal plan or even no plan may seem crazy, blindly following an unrealistic plan is even crazier. Neither software projects nor jazz performances are repeatable.
No team is an island – teams must constantly adjust their plan based on feedback and input of extended project contributors. At Jazz.net, our teams plan, develop and discuss our work openly in collaboration with a community of customers, partners and other key stakeholders. This allows us to execute faster and align our deliveries more closely with the needs of our customers while keeping our stakeholders better informed of progress.
Although diversity increases the potential for greatness, it also increases potential for failure. Leading on demand can produce stellar results, but there is potential for clashes and chaos. Improvisation can produce more relevant responses to unexpected change. but some things still require preparation and improvisation takes time to master. Finally, although transparency can improve the speed and quality of execution, there is an overhead.
To gain the benefits of working like jazz musicians while minimizing the downsides, we do things in balance and respect the health of our teams and our projects. Although we promote individualism, we expect individuals to put the team first.
One way in which we promote health is by using rhythm. Although musicians in an ensemble don't always play the same rhythms simultaneously, they must synchronize at checkpoints and align within a common tempo and pulse. Every activity has a structure of checkpoints and some kind of heartbeat. We build twice a day, produce a stable build every week, declare and self-host on a milestone every three weeks and every six weeks we publish a milestone. When we fail to groove on a consistent rhythm, the project can suffer.
Another way in which we promote health is by constant assessment and improvement. Just as we assess build health by running automated tests, we assess team health by having teams perform regular retrospectives to identify actions for improvement. These synchronization points are critical to prevent the team from devolving into chaos and maintain a reasonable level of group productivity.
As executives, managers, and team leads on an agile project, we must never lose sight that our people are the single most important element of a successful agile initiative. Highly capable people guided by fundamental principles of agility are more important than any tools, technology or overly-specific processes and best practices. Without the right environment for diversity, collaboration, improvisation, and leading on demand, even projects with the best tools and the perfect plan will often fail. However, if you build great teams, provide the right guidance, and strike a balance between structure and freedom, you will reap the rewards of high performance teamwork and more successful projects.
Adrian Cho has worked in the software development industry for more than 20 years in consulting, research and development and intellectual property. At IBM he is responsible for delivery of the Collaborative Lifecycle Management project including Rational Team Concert, Rational Quality Manager and Rational Requirements Composer. The project incorporates contributions from hundreds of software developers located across ten sites worldwide. As a jazz musician, bandleader, and conductor, Adrian has presented thirty major concerts and premiered over ten seminal jazz works in the past seven years. He teaches and speaks to university and business audiences about software development, jazz, and organizational performance. His book, The Jazz Process: Collaboration, Innovation and Agility, has been endorsed by a diverse collection of thought leaders while reviewers have praised it for its "deep exploration of collaborative know-how."