The biggest challenges of incremental software delivery
August 7, 2022Incremental/iterative software development challenges many of our deeply-ingrained assumptions about efficiency and control.
Today I’m finally going to elaborate on what I see as the challenges to incremental software delivery. A quick recap of how I got here:
Two weeks ago I said:
Of course [incremental software delivery] is not without its challenges. If it were easy, there’d be no need for people like me to help teams achieve fast, reliable software delivery.
As I see it, the challenges to either incremental or iterative software delivery are vast. There’s no way I can provide a comprehensive list. But there are two high-level reasons that I think encompass most or all of the other reasons.
Incremental development goes against our modern mindset
The industrial revolution taught us (as humans, particularly in the Western world) how to improve efficiency through large batches. It’s truly done wonders. But now that we’ve been equipped with this “hammer”, everything looks like a nail. We’ve taken this mindset to software development, where it really doesn’t fit. And it’s a hard habit to break.
- Deploying incomplete features via feature flags contradicts the idea of big-batch efficiency
- All flavors of small batches defy the idea of efficiency of scale (Trunk-Based Development, Continuous Integration, Continuous Delivery)
Incremental development is harder to control
Incremental development (and to a greater degree, iterative development) doesn’t fit neatly into Gantt charts, or other deterministic planning models. This means that those managing such projects often feel they are losing control when they adopt an iterative/incremental approach. (Whether they’re actually losing control is another question–a strong case can be made that the sense of control is an illusion to begin with, but that’s for another discussion.)
Two ways to approach a hard deadline in software
Can incremental software development work under a hard deadline?
There is no "I" in "Agile"
Agile software delivery is a team sport. The team succeeds or fails together.
Two modes of agile failure
I've heard both "Agile is only good for developers" and "Agile is only good for management". I think they're two modes of the same failure.