In a recent workshop, a participant asked me, “What does agile mean? How do you know if you are agile?” He wants to use kanban to see the flow of work through his group. Someone told him he needed to use iterations to be agile. (I had a little rant about this in What Does Agile Mean to You?)
I suggested this could be his working definition:
- You can deliver what you want (some form of value).
- You can deliver that value when you want.
- You can then change to the next most important chunk of valuable work.
- You learn from the previous work you did, both about the work and the process of doing the work.
That's not all agile is, but it might be a good working definition. If you work towards being able to deliver what and when you want, move to the next thing, and learn, you have the feedback cycles. (You might also look at the agile principles behind the Manifesto.)
These are practices that increase your agile capabilities:
- Iterations, because they limit the work a team can commit to in a given time period.
- Kanban with work in progress limits, because they limit the work a team can do, and show the flow of work.
- Retrospectives because you learn from previous work. (Someone important said if they only did one practice it would retrospectives. I can't remember who said that. Sorry.)
- Standups because they reinforce micro-commitments to finishing work.
- Technical excellence practices from XP, because they make changing the code and tests easier.
You don't need any of these to be agile. They help. You might find other practices to be more helpful in your context.
I have some previous posts that might be interesting if you also are wondering what agile means for you:
- Self Assessment Tool for Agile Maturity
- Agile is Not a Silver Bullet
- Agile is Not for Everyone
- Agile is about cultural change. See Stuck in the Middle of Your Agile Transformation, Part 3 for a series I wrote earlier this year.
For me, practices are interesting, especially if I choose to experiment with them. What could I do to increase my throughput and learning, and therefore, my ability to adapt? Agile is not about specific practices. It is about a mindset of finishing small valuable chunks, feedback, and change.