Code is cheap; ignorance is costly

In the past few weeks I've seen two different responses to team interdependencies in software products. I like one much more than I like the other

On initiative A, the team learned that a "strategic" solution to their needs would not be ready in the required timescales

So they asked developers to build a manual workaround to see them through the gap. The architecture isn't pretty. It's not what anyone would have wanted. But it works. Users are getting a service

What's more, the team are learning loads from the experience of running the manual service, and are able to feed the insights from that into delivery of the strategic solution

When it does arrive, the strategic service will be based less on guesswork, and more on learning that can only be gained by having a live service in contact with real users and real data at scale

Meanwhile on initiative B, the team is being asked to wait for another team that has a similar "strategic" solution on their future roadmap

While they wait, the team will be disempowered. Their users are getting no value, and worse, the team are not learning anything about the real user needs

This seems so wrong. It rests on a misunderstanding of scarcity and costs in digital service delivery. Here's the thing: code is cheap; ignorance is costly

Agile teams don't accept and manage dependencies, they work actively to eliminate them. In particular, they should never accept a dependency on something that doesn't exist yet

Any "target future state" is merely that, a target, until it is performing in the world - in the words of the Internet Engineering Task Force - as rough consensus and running code


The agile way is not to wait. Build alphas and betas. Deliver value to users sooner. When the time comes to throw away that code in favour of something better, value all the learning we gained in the time it was live

Sign in to participate in the conversation

Open social media for the UK