To understand Agile, let's take a look at the Cynefin framework, which categorizes problems into five dimensions. The most critical dimensions are Obvious
(formerly called Simple
) and Chaotic
. In an Obvious environment, it is possible — and easy — to create an optimal plan. Waterfall projects are a perfect framework to implement predefined plans. But Agilists usually do not worry about simple projects. The reason Agile exists is primarily to serve the Chaotic domain. The value of a plan in the Chaotic domain depends on an unknown and uncontrollable time variable.
C = Cause and E = Effect
In a fast-paced market, the half-life of a plan may be shorter than its planning phase. In this situation, planning is not only a waste of capacity but is also unlikely to succeed. An example of a Chaotic domain is a project that depends on society at large. Any new political situation or a shift in social preference can invalidate a business case overnight.
domains are to some extent merely gradients of the previously mentioned domains, depending on capacity. In a corporation in which thousands of projects are ongoing simultaneously and hundreds of thousands of people are involved in daily operations, large-system development projects might be considered chaotic, because it is practically impossible to account for all potential dependencies. (Disorder
is the fifth domain; people go to their own comfort zone to make a decision.)
In the Chaotic domain, the biggest issue is dealing with the so-called "unknown unknowns." For instance, when Christopher Columbus set out to discover the western route toward India, he did not know there was a continent blocking his way, so his plan did not include a strategy for getting around the continent.
The following functional areas are inherently subject to uncertainty:
Agile provides solutions to deal with uncertainty when results are not predictable.
Working empirically, iteratively, and incrementally are altogether vital to succeed in dealing with chaotic processes. Agilists are able to deal with uncertainty under the quality function. When results are outside the scope of quality limits, the process is adapted to yield better quality.
In Agile, the team iteratively works with a dynamic feature list rather than a predefined scope, and it delivers value frequently. Increments are added only when there is increased business value. A change in business strategy merely reprioritizes and adds features to the product feature list. Significant replanning is not required to continue delivering value. The next iteration after a strategy change simply starts delivering increments based on new needs.
In Agile, developers iteratively deliver small increments and subsequently verify them. This is necessary because the inspect-and-adapt is the same process for the customers as well. Once the team knows its customers' requirements or needs, the next step is to minimize the financial impact from implementing the wrong feature. The team delivers just enough functionality for a feature to get feedback from the customers. If the customers like the feature, then the team works on increments for the feature; otherwise, they either elicit improvement suggestions from the customer or change the plan.
Nowadays, new open-source products and frameworks appear and disappear from the market nearly every day, thus forcing developers to work with what they know and to continuously look for better ways to develop products.
A framework that enhances results must be easy to integrate at any stage of the project. Conversely, a framework that causes problems must be easy to decommission at any stage. The team must continuously mix development activities between working in familiar and unfamiliar territories. Technology is a continuous unknown unknown. The Agile mindset enables the team to perform efficiently under unexpected conditions.
As Agile team members work together, they discover what works well for them and what does not. Anything that works well becomes either a formal agreement or an unspoken agreement within the team. Anything that causes problems must be resolved by the most effective means available to the team. The team must cyclically inspect their improvements' potential and adapt accordingly.
Any adaptation that fails by not improving results or by the ensuing side effects of inaction or lack of inspection must be revised.
The essence of Agile methods is to enable the entire team to consistently deliver quality workmanship through a rigorous yet flexible development process in situations in which requirements are not fully known or trustworthy. Self-organization allows the team to produce accurate and precise solutions while the market constraints are subject to unpredictable change.
To realize early results through customer's feedback, the entire team must pursue sustainable quality within frequent delivery cycles. The entire process is extremely rigid yet adaptable to the change. The team has a vision, and it's accountable to this vision. Everybody will know how well the team is doing and what has been accomplished.