Much as I agree with (most of) what the agile movement stands for, I have some unease about the way in which agile sometimes seems to assume that money is no object and the original budget and estimate fot the project can be swept away in a heartbeat. Especially if the piece of work involved has ‘business value’ (whatever that is). Some people might find this a controversial or even upsetting statement, but I don’t care, quite honestly.

None of the ideas in agile are wrong. You can’t really disagree with them. But this is because they really represent goals and ideals rather than something you can necessarily implement on every piece of work. This includes work that has ‘business value’ – which – whatever people say – is not always easy to prove. It is slightly like saying “people need to get healthier”. Fine. Nobody would disagree, but how are you going to do it? Who pays? What choices get made?

I was once on the fringes – I can’t claim to have been involved directly – with a legacy application our department maintained which automatically sent out proforma christmas cards by email to customers and various third parties. An attempt was made to bring this into the agile fold by not just implementing automated testing and automated deployment, but undertaking a code refactoring exercise. I wasn’t alone in suggesting – fruitlessly as it turned out – that automated deployment probably wasn’t economically viable since the thing was only used once a year. As for automated testing, the same argument probably applied. Throw pairing into the mix – a practice that doubles the cost of your project instantly – and it’s hardly surprising that the customer bulked at the cost and the whole thing got cancelled.

There are a couple of issues here. Firstly, one could argue that this application didn’t have ‘business value’ anyway and shouldn’t even have existed. Who knows? Maybe it is not a very good example to even quote. But even if something does have business value, it doesn’t imply that sometimes compromises don’t have to be made. Unfortunately in technology, sometimes we have to settle for something less than we would hope and compromise on our ideals. That doesn’t mean we have stopped believing in them – it’s just a matter making a hard choice and recognising that we are here to deliver.

Everything has a price. Even work with ‘business value’. Business value doesn’t mean the work will go ahead at any price.  It may get turned down if the cost spirals out of control.  So who wins if that happens?

What is preferable? Pushing for purist agile ideals and delivering nothing? Or is it better to at least do something – imperfect as it may be? That at least delivers some sort of value and benefit at minimal cost. Maybe we can improve on it later.

I didn’t go into technology to not deliver things. So as far as I am concerned, something is better than nothing.