I've been thinking lately about Agile. Again.
The first thing I've been thinking about is the people who say "You're doing Agile Wrong."
There's always been a dichotomy for me between the theory of Agile, and the practice. It's a common problem with any dream; it's always cleaner, brighter, simpler, better than the reality. Reality is messy. It is imprecise. It is never seen directly, always filtered through recollections to make each participant the protagonist of their own play.
If you try pair programming, then you're going to find that "you should never pair program 100% of the time." Or that "you should only pair program between people with equal skill sets." Or that "you should practice pair programming ping pong". There will always be a special case. There will always be something that works for you that doesn't work for someone else. There will always be something that doesn't work for you that works for someone else.
Not only do we do Agile "wrong", but we will always do Agile "wrong". We won't ever do anything "right" – we will do imperfect jobs, come home to imperfect relationships, have imperfect children and live imperfect lives. This is what happens when you measure yourself against an ideal.
But why believe in Agile then, if the only way you can do it is wrong? Something that came to mind about that statement.
If you're trying to do Agile, and it's not working for you… then you're doing it wrong.
Another way of phrasing that statement is that Agile is Doing It Right.
In fact, almost by definition, Agile is Doing It Right.
"Agile teams produce a continuous stream of value, at a sustainable pace, while adapting to the changing needs of business." – Elizabeth Hendrickson.
"Agile development uses feedback to make constant adjustments in a highly collaborative environment." – Practices of an Agile Developer.
"Agile has no definition. […] There's no standards board, there's no test, there's no approved workbook, there's no checklist. […] It's based on three things: 1) principles not practices, 2) attention to people, and 3) always be adapting." – Daniel Markham.
Three definitions of Agile. Nothing about practices, or even methodology. What they agree on is a feedback cycle that can respond to changing input and produce useful output.
It's Dorner's model of problem solving. Or Deming's PDCA cycle. Or the Military's OODA cycle. Or the Scientific Method. Or Kaizen. It's continous process improvement, in all its forms.
If you're following a "best practice" and that "best practice" isn't working for you, then it's not a case of "You're Doing Agile Wrong." You're doing something that isn't providing a benefit for you. By following that "best practice", you're not doing Agile at all. Agile is the ability to plan something new, throw out something old, and challenge preconceived beliefs.
That's the core of Agile for me: it's not about Wrong or Right. It's the idea of saying "We can do better." And then doing it.