“Agile” is an increasingly worthless term. Almost everyone, from huge government IT projects to diagram retailers are claiming to be “agile”. Here is an incomplete list of things variously associated with agile teams:

  1. User stories
  2. Iterations
  3. Estimating small pieces of work
  4. Running tests on a central server
  5. Test driven development
  6. Work in progress limits
  7. Retrospectives
  8. Pair programming
  9. Regular software showcases
  10. Meetings where you stand up
  11. Having a product owner
  12. Scrummasters, certified or otherwise

All of the above can be useful! But there is an common tendency to categorise a team as agile or not based on their adoption of these sort of practices.

There is also significant top-down pressure to adopt these practices to become agile.

This has lead to a widespread agile cargo cult where practices are copied from other teams without consideration to what really needs to be achieved.

I would like to suggest an alternative heuristic for judging whether a team is agile:

Agile is when you can change how you work, from inside your existing system of work

For example, if a team decides to adopt an extra quality assurance step or bring a user researcher onto the team and is able to make that change without requiring external budgeting or approval, then you’re doing agile.

As a counter-example, if you find you can’t abandon stand up meetings because you don’t have the authority, then you are not doing agile.

The practices listed above were first tried out and then kept because teams could change their activities as they saw fit, using the knowledge they had about what was working and what was not. Any benchmark for agile needs to consider this as the central feature and not whether your legs are tired at 9:39 AM.