Lately, I find myself in a weird place when talking to people who might employ me or contract me in the software community. We can have these amazing conversations where we really see eye-to-eye on a number of programming topics. We can get a sense that we might work well together. By all accounts so many of those initial signals in the interview process can be there, and we can all feel happy about it.
And then, from out of the blue, someone mentions the term 'Agile'.
In one way or another, the team is Agile, the client is Agile, some process or another is 'Agile'.
I sort of nod my head and go along with it, kinda like how you go along with your one friend who is gluten intolerant and can't eat whatever thing, or your other friend who went to Thailand and had this amazing experience eating street food and you just have to go there too. You can't just totally ignore the thing because it's impolite to do so. On some level you have to acknowledge it, whatever 'it' is.
I am at this place with Agile and all of the bits of cognitive infrastructure built up around the term.
Let me clarify. I am not here to argue for or against 'Agile'. I am not here to declare that Agile is dead or alive or maybe we killed it but then we've decided to resurrect these parts of it but not these other parts. I am also not here to say these people really do Agile while these other people don't and are just faking Agile (while I actually understand what Agile is so you should listen to me).
No. No. And No.
Honestly, I am here to simply point out that I don't understand what Agile means anymore.
Whatever it is you have in your mind that means Agile may or may not mean what I think Agile is or what someone else thinks it is. If I come into any particular conversation with some pre-conceived notion of what Agile is, there is a very strong likelihood that I will be wrong about the matter and will judge your thinking incorrectly. By extension, I will have judged you incorrectly, and I try not to make a habit of that.
It is entirely possible for a particular word to be used so many times and in so many ways that it becomes overly saturated with meaning. Imagine what would happen if programming languages never prevented naming conflicts, and you get the basic gist of the idea.
'Agile' has become a canvas upon which people paint whatever interpretation they happen to have of some popular ideas from some time ago mixed with whatever feelings they have about how work ought to be done.
So I simply try not to use the term, just as I try to avoid all buzzwords. I avoid it because it is nebulous and it fails to get at the actual practices I am convinced are most effective, both from experience and from thinking critically about the matter. Were I to use the term, I would be mindlessly adopting someone else's thinking instead of reasoning through it myself.
And I might encourage you to do the same. Avoid buzzwords and jargon. Even if a word may have meant something to you at some point in time, it's always healthy to come back and ask yourself if it still carries the same meaning. Maybe that word's best days are behind it and another term (or the lack thereof) does a better job of communicating whatever it is you want to say.
We keep rehashing this pointless Agile-is-this-or-that debate because, at a fundamental level, we can't seem to agree on the terms of the conversation. This sort of thing is bound to happen when I'm thinking of a horse and you're thinking of a moose. We talk past each other instead of coming to some sort of agreement.
There are other more creative and interesting ways to express how we think we ought to work together. We have the whole of the English language at our feet. We can say what we mean in beautiful complex and thoughtful ways. I suggest we do so.
Let's finally bury this buzzword and replace it with an honest conversation between fully developed humans who can think for themselves. We don't need a book or a two week course to do it. Just pull up a chair and talk to the person next to you.