This post continues my ongoing series revisiting the principles behind the Agile Manifesto. This time we are focussing on the following Agile principles:
- “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”
- “Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.”
- “Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.”
- “Working software is the primary measure of progress.”
These principles all in some way relate to early value delivery and the concept of iterative & incremental product development. This concept is central to Scrum and many other agile approaches.
The Scrum Guide states that “Scrum employs an iterative, incremental approach to optimize predictability and to control risk”. This is only mentioned once, and no further direct explanation is given as to the reason for this or the benefits it brings.
The requirement in Scrum to produce a Done Increment of your product each Sprint ensures that you will use an iterative, incremental approach, even if you don’t fully understand why you may want to or what it is. So what does this all mean and why is this all so important?
Here are some definitions to help clarify what these terms mean:
- Incremental – Build small pieces of a product which are in a Done and releasable state. This allows a small part of a working product to be made available as early as possible.
- Iterative – Deliver work frequently rather than all at once and repeat.
The idea is to develop a product in smaller parts (incremental) and through repeated cycles (iterative). In this way, we take small steps towards a larger goal and learn more about developing our product along the way.
This approach offers some important benefits which link back to those principles in the Agile Manifesto and the claims made in the Scrum Guide about predictability and risk. Let’s examine those benefits:
- It enables “early and continuous delivery of valuable software”, which is “Our highest priority”. No more making our client wait years to see something that is valuable. Bring them value early and often.
- It allows us to “Welcome changing requirements”. Building our product via small working pieces means the impact of change is reduced. If we haven’t started working on a requirement yet and it changes, there may be little or no impact.
- It ensures we “Deliver working software frequently”. Finishing can be hard, so the earlier and more frequently we do it, the better we will get at it. This enables us to increase predictability and reduce risk.
- An Increment of our product provides a “primary measure of progress”. We can judge our progress through Increments of the product we create at each step. This enables us to increase predictability and reduces risk over time.
- It allows us to take advantage of what is learned along the way. Building a Done Increment of our product will expose many of the challenges in doing so. We can then work to resolve them as early as possible and with reduced impact and cost.
The benefits of the iterative, incremental approach are significant, and central to Scrum. But the move towards working this way is not always an easy one. Teams that adopt Scrum but are not used to working in this way often face significant challenges. Moving from developing an entire product in 1 go over a long time period to delivering pieces of a working product in a short time is a significant change, and this should not be underestimated.
It will require adopting modern engineering practices and a change of culture and mindset from those involved. It may feel less efficient, at least in the short term. Certain activities may need to be repeated far more frequently. This is an increased cost that we are willing to pay to get the benefits of early value delivery, learning, predictability and reduced risk that Agile & Scrum depend upon.
Hi, my name is Simon Kneafsey and I am a Professional Scrum Trainer with Scrum.org & TheScrumMaster.co.uk. I am on a mission to simplify Scrum for a million people. I have helped over 10,000 people so far and I can help you too.