« | »

Agile is like ABS

The stuttered skid marks caused by ABS

I like analogies, metaphors and similes. They can help transfer understanding from one domain, or concept, to another. Here’s an analogy that I think helps illustrate the pros and cons of a agile software development approach, using an explanation of a popular automotive safety feature: Anti-skid Braking System (ABS).

A common misconception is that a vehicle equipped with ABS will stop more quickly than a vehicle without ABS. This is incorrect. All else being equal, when stopping in a straight line, ABS will necessarily cause the vehicle to take longer to come to a stop, because of the very nature of ABS. When the driver of a vehicle fitted with ABS applies the brakes very hard, a computer will continuously turn the brakes on and off very quickly, such that the wheels continue to turn some of the time and thus do not skid (well, not as much). The driver maintains the ability to steer whilst braking, because he or she can steer during those moments when the brakes are off. Thus you can brake very hard but still steer your way around objects, maintaining control of the vehicle.

Without ABS, when the driver brakes very hard, the wheels would stop turning, causing the wheels to “lock up” and skid, making steering impossible. This is when maximum friction occurs, and hence when the maximum braking force is in effect. So you can stop most quickly without ABS, but you won’t be able to steer and will more than likely lose control of the vehicle and crash. All things considered, it’s better to sacrifice some braking force in order to have control of the vehicle. Hence the popularity of ABS.

I see striking similarities between this and the argument over agile software development methodology. Agile will not make the project go quicker! In fact it might take longer to finish the project (but when exactly you “finish” is contentious). Just as an ABS-equipped vehicle can steer while braking, a project using an agile approach will be—as the name suggests—more agile, maintaining the ability to control the direction of travel. Collectively, the project team can adjust their aim if they have wandered off on a tangent, say for example if the product strays from meeting core objectives. By bringing forward design and iterating quite quickly, the end result of the project can be kept in focus and development can be kept on target (incidentally this is where agile can be very beneficial for UCD and vice versa). Agile allows you to not crash head-long into failure!

However, what an agile approach will not do is shorten your project. It’s annoying when people talk about “adopting agile” in order to “deliver in shorter timeframes”. They’re confusing agility and speed. As far as I’m concerned the only thing being delivered earlier are the early design prototypes. The final deliverable is not necessarily completed any quicker than with a good old fashioned waterfall approach, because during the iterations the design will evolve and some stuff won’t be used (either because it’s taking us off target or because it doesn’t work). In return for your agility, you must accept that there may be wastage or re-work caused by each iteration and that you might not finish any sooner.

What say ye?

[Photo source: DervMan]

Comments

  1. Vikki Hsieh | June 12th, 2009 | 3:18 pm

    From my understanding Agile is not designed to make delivery of the “complete project quicker”, it’s a customer and business focused value system that recognises (amongst other things):

    • That change happens and allows for this
    • Enhanced quality at the end of the day, through iterative changes as the product is tested and the test driven design process.
    • Allows the business/product owner to prioritise on what is important to their product and customers, not the IT department.
    • Encourages collaboration and sharing of ideas, over tedious documentation

    More here: http://agilemanifesto.org/principles.html

    An astute Product Manager could choose to deliver incrementally by initially focusing on components that are stand alone and could be in production much earlier…ergo the notion that Agile helps you deliver earlier.

    I think we get too bogged down in the process around Agile and forget that it emerged from a set of principles, where many are closely aligned to HCD principles. Our challenge is finding a way to make it work that embodies the principles and maximises the usability expertise that is available.

    BTW found this Agile UX user group that might be worth exploring. Here’s the blurb:

    This group has the goal of connecting the usability community to the agile development community – and both these groups to the business community they both serve.

    The usability community has a lot of guidance to offer software development on requirements elicitation, product design, user interaction and interface design, and usability testing.

    The agile community offers the potential for higher software quality by way of agile development techniques. The agile community offers the potential for the business community to reap larger benefits through incremental delivery which might allow businesses to earn return on software sooner, or cease development on unprofitable projects before too much capital is sacrificed.

    But, agile software development approaches described so far seem to give short shrift to usability practices. If you’re from the agile community and disagree with that statement, this is the group where you may want to say so.

  2. Patrick Kennedy | June 12th, 2009 | 3:31 pm

    Cheers, Vikki, that’s one of the most thorough responses I’ve ever had.

    You are totally right (told you I would say so!). I’m not debating the intentions of Agile, nor its benefits, but rather this post was a response to what I referred to as the common misconception that Agile shortens time-lines. And you’ve shed some light on why this might be the case.

    cheers

    Pat

Post a comment