If you just stumbled over this blog entry searching for what the heck all that buzzing about agile methods amounts to, I may have unfortunate news for you: An agile approach to development might for a lot of people all over the world, but may be not for you. For starters, take a look at the agile manifesto and its principles. These have quite a lot of implications, directly translating into presuppositions about you, if you wanted to participate in an agile development project.
Now, perhaps you’re the well communicating, team oriented developer type who happens to work in a surrounding which you respect and general feel well motivated. But real life experience with your typical geek or ex-geek-turned-professional-developer suggests that having a hard time with direct communication, face-to-face, happening very often with those pesky guys and girls you don’t really like is a more likely scenario (“Eeek, those business and marketing people” anybody?). Now, you might say, baah, I know some communication is a necessary evil of professional software development, but maybe I can get away with my old habits of trading documents (specs, bug reports, etc.) against direct communication, since that is the trusted old way and what do you mean by face-to-face communication being more effective? Everybody hates those horrible meetings eating up all your time, right?
The point is that if you’re wanting to go agile you should better soon adapt your view or else you won’t see any of the promised benefits of all of those agile processes. Agile development is not only about using test driven design, timeboxing, iterations and releasing often. More than anything else, agility is about how people effectively interact with each other as quickly and direct as possible in order to come to solutions. To me, this basically boils down mainly to three issues: adaptability to (changing) situations, an open mind toward communication and taking responsibility for the project at hand.
Being lazy, sticking bone-headed to “trusted paths”, not seeking confrontation when it’s needed, avoiding communication because of being too busy “doing” is the anti-pattern to agility. You could keep a product and sprint backlog, present new features every other week to your customer and even use continuous integration and still would be muddling in pseudo agile, doomed to fail water. What I would suggest is that you should revisit the agile manifesto and think about what those principles might imply for you and your current behaviour. Let’s try an example: If you find that you might end up pointing fingers at your customer (or product owner to use the terminology from Scrum) because he won’t behave as demanded in the agile manifesto, you should reconsider if that fits in with what the agile manifesto demands of you: you wouldn’t do the project any good. You would build up frontiers where there should be a single team including the target of your pointed finger. This is not to say that you shouldn’t point out the defect, no communication about problems is another all too familiar reason for frustration and lack of commitment. What is necessary is direct communication and finding a way that works for all people involved.
Let me sum up this posting: if you’re interested in agile approaches to software development, that’s fine. If you don’t feel comfortable about what this might imply for you, that’s fine too. But it might also tell you that agile development approaches might not work for you.
Update: Irionically, I stumbled via Infoq about the one essential agile ingrediment which says all about it much nicer than I ever could have done, only that Mark Schumann shows the confidence that agile works for the most part whereas I hold the more pessimistic view that it’s not going to work for some, but for exactly the same reasons.
ObTitle: Hermann Hesse, “Steppenwolf”
No comments