The Purpose of Agile Software Development

I often think about the purpose of Agile. It is definitely not to replace the Waterfall development process, or make the life of middle managers even more difficult. I believe it is not about testing more or using new technology either. I see similarities between the purpose of Agile software development and police work. A long time ago, a British police captain said in an interview that “the purpose of the police work is preventing crime and not fighting crime”. Unfortunately, they spend too much time fighting it, because according him they didn’t care much about prevention (limited resources, less knowledge etc). “Preventing crime versus fighting crime”. For example, if the police knows that there is a certain area that may attract thieves, they can put up warning signs for those who don’t live there, and by patrolling they can actually discourage thieves to operate in the area. It is cheaper and more effective than to chase thieves and try to find the stolen merchandise. I’m simplifying the situation, but I think you get the idea. As usual, the metaphor cannot be applied in software development as it is, but if we take the crime out of the previous statement we get “preventing vs fighting” and that can be applied in software development.

When I don’t know what to do, or I’m unsure about the next step, I ask myself the question “are we preventing something from happening, or are we fighting against something?” This question helps me orient myself and think about the next move. If the answer is “fighting” that is an immediate sign of doing something in the wrong way - not in an Agile way. A good example is the situation when we have to balance between bug fixes and features. This is a classic fighting situation because we are “fighting” with the bugs, but we don’t do anything in order to reduce their numbers. Or, we don’t know what the next step is, and we call for a planning meeting because that’s what the book suggests. This is not Agile according to me. We are going with the flow, but with the wrong one, and we don’t do anything to get out of this flow and make a difference in our lives. We are “fighting”.

You can guess where I’m going with this: Agile is the prevention of known problems from happening. This requires us to know about future problems, and be able to react in time. Going back to the police metaphor, the policemen really know about future problems but due to high volume in crime and their limited resources they cannot react in time. This is a reason why I think that Waterfall is not a good choice anymore: the model doesn’t allow us to react faster to known problems. In the beginning of my career I was working in Waterfall, and I enjoyed it. But when we were doing not so good it was always because of the reaction time. We never managed to react to situations in time.

Even if you can react in time, what if your knowledge of future problems is obsolete? Let’s say you are doing Scrum and you do iteration after iteration, but release to the customer after ten iterations. Are you Agile? I would say no. The iterations help you to react faster but your backlog can be obsolete, so you react to the wrong thing and that is not different from not reacting at all. Translating this to the police metaphor: the thieves found another area, while the police is still putting up warning signs in the old area.

My advice is to ask yourself or your team several times a week: “are we preventing crime or are we fighting crime”, and see the answers. If you do all the Agile practices and yet you do more “fighting” than “preventing”, you are not Agile.

comments powered by Disqus