Somebody recently asked me, “What do you not like about agile?”, I thought about it and here’s what I think.
My first pet peeve, this is not something wrong with agile, but more to do with the literature on agile and its proponents, they do not stress enough on the fact that this is not a buffet of practices where you pick and choose what practices you want to follow and discard others, just because they are inconvenient. And if you do choose to not follow all of the practices then please don’t call your self agile, you are giving the rest of us a bad name.
- You decide to “refactor mercilessly” but forget to write test cases or test before and after.
- You have no daily builds all the members of you team integrate just before the release.
- You have decided to no longer design/document anything and start hacking away code (without test cases or customer involvement or acceptance tests) you are not agile, you are in fact following the “Trial and Error” methodology.
Another example “Our development budget will run out at the end of the year so lets get all the development done in the next two months and during the maintenance phase add the unit tests”. Yes this is a real statement from one of my ex managers, no kidding. It took us a year to recover from this.
And then you hear complaints like “Why is XP not working?” well if you weren’t screwing around with it will.
2. Customer representative, Agile recommends that we have one customer representative who will be talking to the customers and talking to the team. What XP forgets to tell us here is this customer representative better be darn good.
Here is a real life example, I worked in a team where the customer representative role was played by the Team Lead, this team lead was previously a brilliant programmer so ofcourse he was promoted to a team lead and everyone assumed (ass-u-me) that he will also be brilliant in managing the customers/stake holders. Every weekly meeting he had with the stake holder was a mess. Our weekly goals depended on which stake holders attended the meeting, so we kept switching from one priority to another 6 months went by, we did keep giving releases every 2 weeks with bug fixes but non of the priorities ever got done.
When you have multiple stake holder/customer it is natural that there will be different priorities, but if we are constantly changing priorities every week nothing will ever get done.
I heard a talk given by Scott Ambler on evolving agile (which you can watch here ) this talk really drives home the point. When there are multiple stake holders there will be a lot of politics going on at that level. They may not have your best interest at heart!! Someone needs to manage the expectations and also when 2 customers want 2 different priorities, someone needs to step in and manage the priorities.
So there are 2 of my pet peeves with agile, I think agile is good (numbers don’t lie survey shows that 75% of agile projects succeed), but we can improve a lot by making somethings concrete like how you define an agile project, who should be in the role of the customer representative.