One of the most poorly understood concepts in product/software development is incremental delivery. “Waterfall” organisations certainly don’t get it, but neither do most who claim to be using/doing/being “Agile”, “Kanban”, “Lean” or whatever the flavour and buzzword of the month is.
If you ask Agile proponents, you will usually get answers along the lines of “delivering value incrementally” or “de-risking technical delivery” through smaller batches.
Those who are further along the scale of “getting it” may mention incremental delivery is about building the right thing and discovering along the road what exact set of features actually solves the underlying problem rather than early speculation about what will. This school of thought is far closer to the real benefits of incremental delivery, but they are still not quite hitting the nail on the head.
Incremental delivery, the insufficient bridge building analogy
An analogy that I have sometimes seen to incremental delivery of software is that of bridge building. The story goes something like:
- If you are building a river crossing as an Agile project, you first take people over a few at a time on a small raft.
- Eventually you swap the raft for a boat that can carry a few more people.
- Then maybe you build a simple, but rickety bridge to get even more people over.
- Eventually you build a massive suspension bridge that will support all the traffic it needs.
All the while you have worked yourself towards having a big bridge that supports all people crossing, you have had other means of getting people across while you have scaled up the amount of people you can get across in one go.
However, this analogy is a bit unsatisfactory, if you know the object is to get people across the river, and you know you need to get a certain amount of people over, why don’t you just bite the bullet and build a sufficient bridge immediately?
Bridge to Nowhere
It’s about measuring demand & ensuring the problem is worth solving to begin with!
However, the points that almost no one get, and the main reasons to deliver incrementally are actually:
- Measure whether there is actually demand for the problem to be solved in the first place!
- Measure whether there is actually demand for the problem to be solved the way your solution solves it!
Those are the only two reasons, nothing else! If you do not get this, to go back to our bridge building analogy, you may end up building Bridges to Nowhere, finding out only after great effort and expense that there was in fact no one who wanted to cross that river in the first place.
Incremental delivery is crucial to prove the business case and value hypothesis for why you are building something in the first place!
But maybe you know exactly what the problem is and how it should be solved?
Well, chances are, even if you are scratching your own itch, that you don’t know. 8 out of 10 new businesses fail.
Whether you are building consumer software for a start-up or doing internal systems integration to be used in the cavernous depth of an enterprise megacorp, software development is new product development. This means the context in which it is build is its “market”, and the product development itself is a “start-up”, even if no one outside will ever know its there.
If you are delivering software, you are delivering a new product of some description. Whether you want it or not, market forces are at work:
- Is there sufficient demand for the proposed problem to be solved?
- Is there sufficient demand for the problem to be solved the way you are solving it?
- Is the demand sufficient to cover and exceed the development cost?
Have you ever come across or heard of an internal initiative or application that was eventually abandoned because no one used it? Market forces. The application or system not being used was evidence that there was no internal demand within the organisation for what it did.
The best way to address these questions is to run your software delivery as a series of experiments, soliciting market feedback to prove or disprove your value hypothesis & business case.
Market risk is the primary concern, decreased delivery risk & incremental value are secondary effects
So lets sum things up: decreasing delivery risk through smaller batches of delivery is still a great benefit of incremental delivery. But it is a secondary concern compared to addressing whether what is being build is worth building.
Delivering value incrementally is a potential benefit of incremental delivery, IF it turns out that you are building something worthwhile. But you are actually only delivering value once you have achieved some level of Product-market fit and you are starting to transition into growth.
Until the point that you have actually proven the worthiness of the problem to be solved, and the solution to solve the problem, you are just dealing with the sunk cost of a series of experiments to try to prove a value hypothesis.
Those who have read this far may already have realised that most software deliveries, even those claiming to do incremental delivery are effectively stabbing in the dark, like a drunken gambler at a casino, they are putting all their money on one throw of the dice, one attempt at proving value, then more often than not wondering what went wrong and where all the money went.