I am often asked: “How do I know if my team is really Agile? They claim they’re Agile, but I think they’re cheating.”
In response I usually ask a barrage of questions aimed at discovering how well the team is doing at delivering valuable and potentially shippable increments frequently (at least once a month), consistently (month after month after month), all while adapting to changing priorities and business needs.
To me, that’s the essence of Agile. It’s not about whether or not a team is doing TDD or CI or pairing or automated regression testing, although I do strongly believe that those are all good practices, and I evangelize them wherever I go.
Ultimately, being Agile means delivering business value frequently and consistently while adapting to changing business needs. No matter what practices we’re following, if we aren’t doing that, we’re not Agile.
So as I am working on a next-generation revision of the materials for the upcoming Agile Testing class that Dale Emery and I are co-leading, I decided that it would be nice to include an Agility self-assessment in the materials, enabling people to answer the question of whether or not their team is really Agile for themselves. And as long as I’m writing it down, I wanted to share it here and get feedback on it.
And so with no further ado, here’s my new back-of-the-napkin Agile assessment checklist:
- The team knows, for sure, that at any given time they are working on deliverables that have the greatest value for the business.
- When the implementation team claims to be Done with something, the business stakeholder usually agrees that it is, in fact, done and Accepts it.
- When something is Accepted, it is sufficiently well-built and well-tested that it would be safe to deploy or ship it immediately.
- The team delivers Accepted product increments at least monthly.
- When the product increments are shipped or deployed, the users and customers are generally satisfied.
- If the business stakeholder changes the priorities or the requirements, the implementation team can adapt easily, switching gears to deliver according to the updated business needs within the next iteration.
- The business stakeholders express confidence that they will get the capabilities they need in a timely manner.
- The business can recognize real value from the deliverables: each product increment ultimately has a positive impact on the bottom line.
- The team has been working at the same pace, delivering roughly the same amount every iteration, for a while.
- The people on the implementation team agree that they could keep working at the current pace indefinitely.
So how Agile is your team? How many of the statements above would you say characterize your team?
And while I’m asking questions, is there anything that you think should be added, removed, or modified?