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.