What does a customer wants?
Usually your customer wants to know a simple thing – when your team will deliver working software based on agreed requirements. They naively want to safely bet on highly uncertain future outcome – delivery of the complex never created before system that completely fulfil their dreams.
The customer wants reliable McDonalds experience, but with a little tweak – they want to hand in their own exclusive menu, often created by people who don’t have any idea how to cook.
In short, the customer requires creative flexibility of Cooking Master Chef fortified by ability to predictably deliver hamburgers as McDonalds.
But, is it possible in our development reality to chase two opposing goals – Predictability and Flexibility in the same time?
Predictability vs Flexibility
The best way to achieve predictability is standardization – formalize process, nail-down rules, follow and optimize them mercilessly. However, standards have negative effects – lower morale, inhibited creativity, reduced flexibility and slower response to changes.
Rapid adaptation is the best way to to be flexible – eagerness to quickly regroup and self-organize to address new challenges and creatively solve new problems. However, constant changes and creativity sparks lead to unpredictable and ad-hoc results without much opportunity to stabilize and optimize delivery.
Standardization is a crystallized answer to past events – how to repeat effectively something that was solved before and proved to work.
Adaptation is the response to current events – how to embrace unforeseen requests, challenges and events.
Standardization has own cost – processes and rules should be maintained, reviewed and optimized otherwise they will become source of overhead, rigidity and frustration. But if there is no standardization, lessons and best practices could be lost or not followed.
It is difficult, but possible to chase these two contrary goals in the same time. Build standards to solve repeating problems and optimize recurring activities. Adapt to meet new challenges.
Team Maturity Matrix
Development teams have different capabilities to strike both predictable and flexible delivery.
- Amateurs – do even simple things… unpredictably
- Explorers – capable of solving complex non-standard problems, but cannot guarantee time and budget (Ph.D guys)
- Mechanics – very efficient with standard solutions, but struggle with new stuff (anal-retentive guys)
- Regulars – predictability of delivery lowers for more challenging problems
- Strike Force – deliver reliable results for any type of problem
Any team should grow from Amateur status, but rare team could become Strike Force that mastered both – predictable and flexible delivery. Than what direction of growth to choose? It depends on nature of projects and problems the team tackle.
Finding sweet spot
Predictable delivery requires reduced variations in development process: uniform, ordered and consistent approach with focus on high efficiency.
Flexible delivery requires increased variations in the process: enabling more options, wider range of responses to improve fitness in changing environment.
These 2 goals could compliment each other. Predictability (with standardization) could bring consistency and stability in volatile and evolving development ecosystem. Adaptation helps to improve and find better standards and ideas for established processes.
|Predictable delivery – reduce variations, increase efficiency and productivity
Repeatable, well known steps and technology – candidates for standardization (concrete rules)
|Flexible delivery – increase variations and fitness
New, uncertain events, requests and challenges – adaptation and transformation (principles, patterns)
Stabilization and control
Elimination and optimization
Challenges and response
So, can team deliver as McDonalds, but using exclusive menu? Yes, if they not only excel in programming, but also excel in the way they work – persistently re-evaluating approaches and improving both predictability and flexibility.
There are three simple requirements for the team
- Follow standards (minimal, adhering to principles)
- Challenge standards (not relevant, rigid, impeding, excessive)
- Introduce and Improve standards (from lessons learned, best practices, enhancing flexibility and value stream)
And you will build powerful development machine that continuously transforming to embrace fluid reality while keeping steadiness and predictability as McDonalds.