Monday, October 25, 2010

Where did Agile get it wrong?



Dilbert.com


Dont't get me wrong, I am not anti-agile. I love agile and a lot of good things that it brings to the table. However, it also has its share of shortcomings and problems. I am going to focus on one specific shortcoming for this post - effect of daily standup meetings on the team.

Focus of agile is to maintain a sustainable pace of work. For all agile practices "in the ideal world" it has come to mean a sustained constant pace of work "all the time". Humans, unlike computers, do not produce same number of processing cycles every day. There are days when one feels out of element and does not want to code and then there are days when one can accomplish far more than what would be expected of a daily average. Problem with agile is that what used to be hidden behind a weekly status update now comes to fore - non uniform productivity.

Even the most brilliant and passionate software developers would have off days when they are not in the groove. And these are the days when it is hardest to own up to doing nothing or lie. It is a lose-lose situation for the employee as well as the organization.

What that means is either the team member needs to stand up in front of his/her entire team and say "Ummm, I was feeling kind of offish yesterday and could not finish the API implementation and there was nothing blocking my work" or they need to lie outright claiming progress on work or a fake obstacle while deep inside they know that they would be working harder during remaining week to make it up.


If the process drives you to a corner and makes you feel stupid or makes you lie, it has lost its purpose and sanctity. Once you start tooling it, the fine line between what is right and wrong starts to blur and when the need arises to tool it a little further, one has precedents and some reasonable explanation to convince self to do it.

Some organizations say that they encourage people to be honest and it is okay if they did not accomplish anything on a given day. They can stand up and say so and it is fine. This, as most discover at their own expense, is fantasy land. Why? Imagine yourself in the shoes of the manager when the delivery gets delayed. What does his boss tell him - "You knew that your team was not working, people said in daily meetings that nothing was done and yet you took no action. Whole purpose of agile to raise flags quickly."

There is a conflict - manager needs to make sure everything is on track everyday and raise flag quickly. It would take amazing rapport between manager and team member for latter to say that they accomplished nothing and it to be fine. And I have not yet touched upon the effect on other team members and bad example it would set for younger team members.

Manager would have tough time explaining why it was ok for Tim to not accomplish anything today but same is not acceptable for Tom. Even though it might be true that Tim would be able to stretch and make up while Tom's delivery would almost certainly get delayed (you know it if you have been working with the team). However, when you are talking at day level, there is no room for adjustment and no justification for differentiation.

Long and short - expectation of same level of productivity every day is unrealistic and since software development is all about people, this is a fundamental shortcoming of agile.

3 comments:

  1. Completely agree!! Any programmer will agree to this but the managers only make fool of themselves by saying things like discipline in work on per day basis. Come on man, start distinguishing your programmer from the processors and RAM's.

    ReplyDelete
  2. Even though it might be true that Tim would be able to stretch and make up while Tim's delivery would almost certainly get delayed (you know it if you have been working with the team).

    ReplyDelete