Agile: the importance of releasing early and often

One of the 4 key callouts of the agile manifesto is: "Working software over comprehensive documentation".

The first of the 12 principals of agile is: 

  • "Our highest priority is to satisfy the customer through early and continuous delivery of valuable software" 

The third of the 12 principals is: 

  • "Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale."

The seventh of the 12 principals is: 

  • "Working software is the primary measure of progress"

We noticing a theme yet?

Clearly delivering working software early and often is a very important Agile development practice. Notice the guidance provided regarding duration: "from a couple of weeks....with a preference to the shorter.."

Early and often software delivery is one of the most important aspects of being Agile. 

As engineers and leads we have a responsibility to ensure that we plan small frequent releases. We have to avoid long periods (e.g. months) of no material delivery. Lets consider some reasons why this is important:

  • early validation of product ideas; in Inspired Marty Cagan told us that half of all product ideas fail. Lots of ways to mitigate that such as knowing your customers and being data driven, but releasing early and often helps us learn what product ideas are working and not working. Helps us answer that critical question: are we on the right track or not?
  • motivational; as engineers and designers we want to build stuff people use, releasing and then seeing usage is inspiring. It keeps the team motivated and moving forward. It's good in team demos to showcase delivery. It's good for customers to get features sooner.
  • gets team into a cadence and flow; it's important to get teams into a rhythm of planning, scoping, designing, building, releasing and repeating. The team (and that includes product and design) becomes a well oiled machine and must work closely together (collaboration, another agile principal) to make this happen. This helps makes development sustainable which is yet another principal "Agile processes promote sustainable development". On the flip side, the longer the release cycle the more the team (eng, product, design) drifts apart and less closely they work together. 
  • enforces discipline which prevents scope creep and allows for better change management; the longer it takes to release the more scope will creep in, the more unexpected tasks will be added (e.g. infrastructure upgrades etc.). This leads to frustration in the team and increases overhead as engineers have to context switch as wonder when will it end.

This is not easy. We know to do this but sometimes we fail. 
I was on a squad who had a number of releases in 2020 and by the third round I failed to organize and we ended up with a release which was too large and that took months. During that time, the scope increased and unexpected outside work was added which delayed us further. By the time we did release the squad was a little bit burned out. We resolved to not make the same mistake in the fourth round and planned releases much better. 

So, nobody's perfect...you get back up, learn from your mistakes and make it better!

To summarize, I believe early and often delivery of working software is a critical Agile practice.






Comments

Popular posts from this blog

deep dive into Material UI TextField built by mui

angular js protractor e2e cheatsheet

react-router v6.4+ loaders, actions, forms and more