“The Agile Way to Plan for Success”

We’re back Agile Fans with another stimulating topic! In our last blog we discussed User Stories, challenges we may encounter and how to overcome these challenges. Now that we know how to write proper user stories, which are our user requirements that forms our product backlog, what do we do with them? Over the years teams have struggled with determining proper timeline and estimates that are realistic, which requires us to change the way we plan. This approach is called Agile Release Planning which is an iterative, release based approach to delivering frequent incremental value to our customers. In this issue we’ll walk through the basis of agile release planning:  what it is, how to build an agile release plan, and best practices to keep in mind as you go. Time to dive right in!

Planning and estimating for an engagement that will use an agile approach can be a daunting task made more difficult by our misconceptions about estimation. An estimate is a guess, a calculated guess, nothing more. Working in an agile manner requires a lot of planning but it is split into different levels and timing is key. Agile planning balances the effort and investment in planning with the understanding that we will revise the plan throughout the course of the engagement.

Agile Release Planning is an approach where the development team along with the business work together to develop a high-level plan, which outlines the list of features that will be delivered in the agreed timelines. Unlike the traditional approach where the entire product is delivered at the end of the project, with agile release planning we aim to deliver the product in bite-size releases throughout the project. A release can span multiple iterations and as we know an iteration is a time-box of one month or less during which a “Done”, usable and potentially shippable product increment is created.

Steps for building an Agile Release Plan

We all want to create a successful agile release plan and this will require careful planning that starts long before you begin placing release dates on a calendar. Let’s look at five (5) steps to ensure our agile release plans are built to succeed.

1. Define Product Vision: The Product Vision is the long term outcome that the product aims to achieve. It’s a brief statement of what business problem the product is trying to solve. All teams will align their work to ensure that the ultimate goal and the vision is met.

2. Develop Prioritized Product Backlog: This is a prioritized feature list containing short descriptions of all functionality desired in the product.

While we should deliver features in a highest-business-value-first scheme, this is not always possible. Developing an effective release plan balances the need for new functionality with the need for technology capabilities, infrastructure issues, dependencies, and other concerns.

By prioritizing the features early in the planning process and continuously refining the product backlog, we can ensure the team is always working on the top priority features.

3. Estimate Product Backlog Items: Agile Estimation is an evaluation of the effort necessary to carry out a given user story. Agile estimation is not measured in absolute units of time, but instead we compare or group items of equivalent difficulty (relative sizing).

Method of Estimating Effort using Complexity Buckets:

Estimating using Complexity Buckets provides a consistent way for teams to size user stories by discussing each story in terms of pre-defined buckets of complexity before deciding on the estimated story points.

I. Decide on the buckets/categories of complexity e.g. for software projects

 

II. Discuss the user story by breaking it into each bucket and determine each bucket’s complexity and associated score: Low (1), Medium (2), High (3) or Complex (4).

E.g. As an online shopper I want to save my price range preferences so that I don’t have to reset them each time I login.

User Interface = 1

Business Logic = 2

Data/Integration = 1

Testing = 3

III. Add up the complexity scores for each bucket to determine the story point (Fibonacci Sequence). If it falls between two Fibonacci numbers, have the team do a gut check and decide which number best suits the difficulty.

Sum of Complexity buckets points = 7         (7 falls between 5 & 8 in the Fibonacci Sequence)

Adjusted Story Points = 8                   (This story is more difficult than 5 so we select 8).        

Should estimates differ, the team will have a discussion, until everyone agrees or yields on the story point size.

The team will then use this Complexity Buckets approach to estimate/size all product backlog items.

4. Determine Release Features:  A release can either be Date-Driven or Feature-Driven.

             If the product release is date-driven and has a stated deadline e.g. September 1, 2023, the estimates produced by the team will be used to determine what features can be                                                   delivered by September 1st.

             If the release has to include a specific set of features, then it is feature-driven and the team will determine based on their estimates when those sets of features can be                                                         delivered.

 Hope you picked up that a release can’t be both Feature-Driven and Date-Driven, that’s a big mistake made when planning and will almost always lead to failure.

5. Finalize Release Plan: Outlines the features to be delivered in the agreed timelines based on the estimates provided for the prioritized product backlog. The outputs of the previous steps are inputs into this final step. In order to determine the planned release dates:

I. Determine Sprint Duration: Sprint can be between 1 to 4 weeks.

II. Estimate Team’s Velocity – New teams would need to estimate their velocity while existing teams would have known their velocity.

III. Add Contingency Sprints – Contingency sprints are added to provision for any event or circumstance that may affect the delivery of a product increment into production.

             Let’s look at an example:

Sprint Duration: 2 weeks

Estimated Team’s Velocity: 33

Total Estimated Story Points for Product Backlog: 350     (Determined in Step 3)

Project Start Date: July 3, 2023

Project Estimated Completion Date: January 12, 2024

 

Agile release planning is all about iterative delivery of value, which means that every release is both an end and a beginning.  Done right, these five (5) steps can have our customers seeing ongoing results, enjoy ongoing product improvements, and increase team productivity and morale as we achieve our goals.

We’ll catch you in the next issue. See you soon!