“Responding to change over following a plan”
Of the four agile values this seems to be, at least in my opinion, the least controversial and most self-explanatory. I can only imagine how frustrating it must have been to rational humans to even have to call out such a thing when they were designing the Agile Manifesto, but here we are. This means that this value, although self-explanatory to many, is still very important to include. It serves as a reminder as something that we should never forget, even if we think it’s common sense. When contemplating this value, my mind always gravitates to Chevy Chase and the movie National Lampoon’s Vacation. I can imagine project managers as so many Clark Griswolds rushing headlong towards the world’s largest ball of mud, also known as code.
The interesting thing about big upfront design is the gall it takes to even begin to believe that all can be known at the beginning of a complex endeavor. This harkens back to some of my earlier posts, including Software Development is Communication, where I argue that those in charge of software development decisions (like team size, composition, physical location, etc.) have no clue about software development. Software development is most often a complex undertaking. Complexity theory tells us that complex problems are solved by feedback and that small changes can lead to large consequences. To me this argues less for upfront design and more for something called emergent design. This can only be accomplished when our development techniques allow for emergent design – hence my nearly fanatical support for BDD (Behavior Driven Development) and CD (Continuous Delivery) as I present in The Two Things You Must Have for Lasting Agility.
The world is ever changing and complex. Software development relies heavily on creativity and communication. These things are only possible when we leave the illusionary safety of upfront design and embrace the uncertainty as well as expect and respond to change and create a development environment (both tactical and cultural) where this can occur.
Be sure to check out the rest of my Agile Values series!
- The Importance of Individuality
- Working Software Over Documentation
- Why Contracts and Software Development Don’t Mix