Assumption: Continous Delivery of Software reduces its cost by 5 times

For me the most fundamental principle in Agile Development is to reduce feedback time in everything you do. This helps us do the right thing more often and waste less time doing the wrong thing. It’s not just the feedback time that matters, it’s the quality of that feedback and when it comes to building the right thing the best feedback comes from real users using the real product in the real world. We (and our customers) all to easily ignore this because we don’t know what we don’t know and assume that we know what to build.

Whilst being close to your customer and having conversations helps, nothing beats getting the software out there and having people scream about what is missing. Having a process that allows you to quickly respond to those screams, and we are talking hours not weeks or months, is by far the most effective way to build the right thing.

Now this isn’t rocket science, I think it’s widely accepted in the Agile community but perhaps not so much in the business community. The business needs numbers to be convinced, so lately I’ve been thinking about what is the real cost of not using a continuous deployment process.

Building a product with and without continuous delivery requires a strikingly different mindset:

  1. Build the simplest thing possible that satisfies the story, deliver it to the customer and discover what’s missing. We make as few assumptions as possible and test them as early as possible
  2. Consider all possible permutations of what the customer might need to deliver the story and ensure that they are all covered, because once it’s out there it will take too long to react to problems. Talking to the customer about what they need helps, but they won’t really know till it’s built.

In my experience of working the second way I think you usually end up building at least twice as much as is used. I think many will argue the figure is much higher. But the cost of delivering twice as much is more than  twice the cost. As software becomes more complex and each area of functionality needs to work with other areas the cost of adding new features grows. You also need to spend more time maintaining the features. Good design and engineering practices can help with this but it’s unavoidable that the cost of adding each new story will grow exponentially. If the growth is exponential, and the product lasts long enough, I assume that at some point in its lifecycle the cost of adding a new feature will be 5 times as much as if you were using continuous delivery.

Now that’s the kind of figure that I think could convince organisations to reconsider the way they are working, and treat continuous delivery as essential rather than something just the cool kids do. But is my assumption correct?

3 comments

  1. Mark Durbin · · Reply

    Hi Tom, nice post.

    Whilst I agree wholeheartedly, people would counter that, without understanding the whole problem, you build code that gets too complex because of all the rework as new requirements are discovered. So it’s not as cut a dried as more code more complex, the design has an influence on the complexity.

    Oh and there’s a typo you might want to edit out: “with and with and”.

    Cheers, Mark.

    1. Thanks Mark

      Yes it’s a huge simplification of the problem particularly around whether you can build a product in such a way that adding new features does not get increasingly expensive. I have seen this increasing cost be offset by continually refactoring and improving the design but I think at some point things will tend to start to slow down if you continue to maintain an increasing amount of features, even if this is achieved with less code.

      Thanks

      Tom

  2. […] Assumption: Continous Delivery of Software reduces its cost by 5 times (Diary of a ScrumMaster) […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: