What if we framed Agile as a strategy in the Richard Rumelt sense?
What are the biggest challenges we have in software product development?
Misunderstanding the problem, which leads to building the wrong thing. This is typically due to problem-solvers working through too many intermediaries.
Working too long without getting feedback. This is a form of over-optimism. Also known as “going dark”.
Overwhelming complexity. Systems start simple but eventually turn into large, incomprehensible messes. This is worse without ongoing correction.
Given those challenges, how should we respond?
Disintermediate. As much as possible, developers should collaborate directly with the people that have the problem and be provided the context and support to be effective in doing so.
Work in small steps with feedback. Take smaller steps. Test every step.
Prefer simpler designs and as the design evolves, clean-up-as-you-go to maintain simplicity
What are practices that are coherent with the previous policy?
For example,
- facilitating over “protecting” development teams from the context of the problem;
- collaborative design with customers;
- Product Managers more as facilitators or partners than gatekeepers
- Continuous Discovery / Continuous Delivery
- YAGNI
- Simple design
- TDD
- etc.