Everyone is doing some sort-of-Agile stuff these days (you wouldn't believe me, if I could tell you ... I was surprised myself ;>). As a result, I'm clenching my fists while listening about ...
- test (or integration) sprints ...
- velocity variance between sprints limited to X% ...
- 1m sprints grouped in 3m increments, grouped in 6-9m releases (YES, you've read it correctly) ...
- POs obliged to meet the Dev Team just during the meetings ...
- sprint ends when NN% of approval tests are marked as completed ...
... and other crap like that.
It may have been a bit funny, if it wasn't for real. But in such cases, at least you know what has failed: either someone is twisting the idea on-purpose or someone doesn't understand what they're doing (and why they're doing that). But there's one another painful thing that may happen & as it's a touchy subject, I see it mentioned very rarely:
You're team may not be good enough
Yes, I mean it. It doesn't mean that people are stupid, lazy or got bad intentions (which can happen as well ...), but:
- you can't force your team to self-organize if they don't want to -> some prefer to be driven, some are just too poor team-players, some are too afraid to take the responsibility
- Agile makes sense if people can switch to value-focused mindset, otherwise they'll start running circle pretty quickly - I've met intelligent & dedicated people who just weren't able to learn that, it doesn't matter how hard they tried
- the "we're all in" attitude is far more important than you may think -> there are very few factors in efficient team building that may be more deteriorating than some people who just don't give the damn f-word
- collective ownership is something to be worked out - some take their code too personally, some feel responsible for the product, not the service (it's not the same!) and sometimes the product split is that unclear & complex, that there are some "grey" areas no-one admits to
These are just examples, but they don't cover the whole topic. "Agile" may sound like some easy-going, hippie stuff with strict rules replaced by common-sense, informal communication & postponing stuff until it's absolutely critical, but Agile in some areas is about being ...
Strict & disciplined
- Automating tests is hard.
- Automating deployment is hard.
- Loose-coupling & removing dependencies is hard.
- Adding very real business value every sprint is hard.
- Making sure that continuous deployment doesn't break anything is hard.
- Creating (& maintainging) transparent & trustworthy metrics may be hard.
- Creating proper "definition of done" may be easy, but sticking to it is hard.
- Staying focused, up-to-date & organized while facing constant changes is hard.
If you loose your bonds, whole system falls down. Sometimes slowly, sometimes faster. If something starts to ache, it may look easier to walk it around or skip it for a moment, but such stuff has a tendency to pile up & escalate quickly. And the more you create, the more you develop, inertia increases - your stuff may not scale up as well as you would it like to & you may not be able to recover without casualties.
And this is a test for your team - this will tell you what is it made from.
Will it bend, brake or resist?