What is Agile, really?
I'm tired of reading misinformation about Agile. I'm tired of reading statements like these, that are just outright wrong:
Agile means writing software without writing documentation. Agile means not caring about the long term. Agile means engineers get to decide the project’s features. Agile means not having strict practices.
And worse still are the half truths where Agile is confused for a specific practice of some Agile developers, statements like:
Agile means pairing. Agile means Test Driven Development. Agile means scrum.
So what is agile really?
Agile is writing software in teams that regularly reflect on how to become more effective, and trusting that team to adjust its behavior accordingly.
This is the core of agile, synthesized from Principles behind the Agile Manifesto. It’s about people. It’s about trust. It’s about continual improvement. This is where most implementations of Agile falter: they fail to trust the team. If you can’t build a team you trust to improve themselves; fire yourself. Replace yourself with someone that can.
That’s it. That is all you need to know about Agile. With this core, the team will re-evolve the major practices of Agile, but in the team’s context. Take “ship early, ship often” for example. This principle would quickly get re-derived, as the team’s regular reflections would be blocked on the same problem: they don’t know if they’re doing well or not. A quick root cause analysis would show that they don’t know how they’re doing until they’ve shipped real value to real customers. The rest of the principles can be re-derived in a similar manor.