In this posting I will attempt to generally answer the "how do you do it?" question. This is basically a question of process. What is the overall process for "swiftly sensing and rapidly responding to change & uncertainty in close collaboration with stakeholders to create simple, sustainable structures with sufficient flexibility to dynamically adapt & evolve business processes, products & plans."
This process is essentially an overall cycle. Something that you do, and then "rinse, lather & repeat." It is called the Agility Cycle. Let's look at a few different descriptions of this cycle (mostly from the realm of business agility) and then formulate our own for software development agility.
Gartner describes the business agility cycle as:
- Sense the need for change in the environment (includes the proactive initiation of change)
- Strategize the available options and develop alternatives
- Decide which path to take and commit to the approach
- Communicate internally and externally to everyone who needs to know
- Act to produce results and follow-through efficiently
John Boyd describes it as an OODA loop:
- Observe your environment (yourself; your threats and opportunities; the physical, mental, and ethical situation; and potential allies and opponents)
- Orient yourself to grasp what it all means and identify patterns, approaches and likely outcomes
- Decide upon a course of action and tactical plan
- Act on the plan (execute while minding the terrain)
- Scan emerging trends and issues through gathering information and analysis
- Sense opportunities to translate information into actionable solutions
- Respond to opportunities and risks by being sufficiently flexible at tactical and strategic levels
- Shape future environments through driving change.
- Monitor & Sense: monitor the business environment and sense critical market signals, events, and changing conditions
- Interpret & Evaluate: interpret the information and evaluate if it is something to (re)act to or ignore.
- Decide & Plan: decide which response is best and plan to implement it
- Reconfigure & Adapt: reconfigure or adapt business, operations, or IT capabilities
- Respond & Execute: respond by executing with new or adapted capabilities
- Learn: Record the cycle, learn from previous cycles, share to improve future cycles
- Manage: manage the sense-respond-learn cycle to support completing the process as rapidly and effectively as required
We'll discuss this next time when we try to describe the software agility cycle.