I made a new friend at the gym. His name is Joe. Joe and I have been seeing each other at the gym for a few years, and finally introduced ourselves. Typical male gym behavior, I think.
We got to talking about our lives, and I learned that Joe is not in the world of software.
Joe asked me what I do outside of the gym, and I started to tell him about Agile Software Development. He had no clue what I was talking about, so I started looking for an analogy that would be meaningful. As I often do when searching for ideas and words, I looked around me.
Here’s what I realized, as I tried to explain Agile Software Development to Joe.
Waterfall exercise: decide exactly what I want to look like a year from now, prepare a detailed exercise and diet plan that covers every day between now and the end of the year, work on one muscle group at a time (imagine building arms, then legs, then core, then back, then chest,…), and at the end of the year, hope that I have a well balanced, proportional, healthy, attractively sculpted body. Resist change, follow the plan as closely as possible, and hope that it all comes out right.
Agile exercise: well, this is what most of us really do. Plan a week or two (or even four) ahead in some degree of detail. Work on our whole body during each – umm – iteration. Adapt our workout and our diet to the progress we’re making, and as we discover what is working well and what is not working as well. Continuously improve our fitness, our health, and our understanding of exercise and how it affects us. Commit on an ongoing basis, seek input from our “stakeholders” (my wife, my children, my friends, my gym friends), keep learning by reading and talking and such, and consider it always a work-in-progress. Engage a coach (trainer) when I feel I need one. Share what I’m learning with others.
Which sounds more natural to you?