Agile is a Means, not the End

At ThoughtWorks, my role is technical, however, as do many ThoughtWorkers, I do work on things like proposals or business development opportunities from time to time, especially when between assignments.

One thing you might be surprised about with ThoughtWorks is that the value proposition isn’t that “We are The Agile Company”.  This makes sense if you think about it – as good as Agile is, it is but merely a method.  It isn’t a destination.  Value to the client is the destination.  Agile is – at best – a means to an end.

There are clients – who… gasp… don’t care how we get the results.  We could get them by hanging bats upside-down in a glowing cave where we serve coffee to leprechauns.  They don’t care how (within, of course, the bounds of ethics and law) – they just care that they have a quality solution that meets their business needs at the end of the project, while not burdening them with endless technical debt.

Results matter more than process.  The problem, historically, with waterfall, and more recently, it’s uglier twin, scrummerfall (the process of doing scrum without TDD and other quality oriented practices) … is that at best, when they work, they give you a solution that might meet the business needs as they existed at the start of the project.  The traditional constraints of software development dictate that when you have quality, scope, and time each in contention (as they always are) – the one that is hardest to measure typically loses.  In software, quality is historically hardest to measure, which means it is the first to go.  Viola, unmanaged, hidden, technical debt.

So what do you do when your client does not want to see the sausage factory?  Well – that is where you have to focus on quality.  What I want to see more of in contracts are success criteria that state a required level of quality, measured by (albeit imperfect) metrics that help us get there.  Test coverage is a good start – but there are many others.

Another success criteria is that a late change of some definable complexity should be achievable at some definable, lower than what it would be without TDD, cost.  I would love to see some work done to find a way to put something to this effect in a contract clause (maybe some friendly contract attorney can help me there).

Competition will always, at some level, come to price for a solution.  However, smart procurement folks will make sure to ask that the quality and adaptability variables be controlled, so that when prices are compared, they are comparing the price of Morton’s Steak to Ruth’s Chris, not Morton’s Steak to Sizzler.  Agile is just a means to delivering a solution that scores well not just on the cost variable, but on the quality and changeability ones as well.  The business value that comes from solutions that do not take on unmeasured and ill understood technical debt?  That is what, in my opinion, a significant part of the ThoughtWorks value proposition.

Agile is a Means, not the End

One thought on “Agile is a Means, not the End

  1. You do have some good points, scrummfall is a disease that sweeps across the industry, as many companies don’t spend the energy or resource to completely move away from waterfall. And now everyone stuck with some half baked process that is even more broken then before.

    But how do you measure quality of a product? Many people ask me this question again and again. What would be a good successful metric to use, that does not end up taking most of the time, which can be spent doing something productive.

    I suggest the simplest solution, divide the bugs found in production by bugs found before the build is in production. You get a nice percentage value, of coarse you need to account for the severity of each bug to make the value more reasonable.

    Do you have any other suggestions?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s