Lessons Learned from Agile Transformations: Part 14

Fourteenth in a Fifteen Part Series

By Chad Greenslade

I have often been asked about my lessons learned in delivering Agile transformations. Below is the fourteenth in a fifteen part series examining my lessons learned while instituting Agile concepts & practices. I hope that these lessons help you on your journey to Agile nirvana.

Lesson 14: Execute Sprint Zero (0)

As with any other project, you’ll want to ensure you have all materials procured, all contracts signed, environments built, tools selected, etc. While this is occurring, your Product Owner should continue writing and grooming User Stories.

Sprint Zero (0) is when all preparation work takes place to ensure your team can begin writing software free from obvious impediments such as environmental or procurement constraints. To ensure your team can begin work on schedule, ensure your Sprint Zero (0) accomplishes the following:

Architecture: Once you have the Product Roadmap defined, an Architect is then able to define major system components such as application, database, and web servers, environments, programming languages, software development kits to be used, etc.

Contracts: If the product’s architecture requires you to contract with new vendors, you’ll need to get any legal documents drafted and signed during Sprint Zero (0), if they have not been done already.

Materials Procurement: If the product’s architecture requires you to procure materials, procurement activities must be completed during Sprint Zero (0).

Determine the Sprint Duration: Most teams have two (2)-week Sprints. A Sprint should never be longer than four (4) weeks and no shorter than one (1) week. If a project has significant risk, it is best to have shorter sprints. The shorter the sprint, the less amount of time elapses between the sprint inspection activities, which allows management to course correct much faster. You always want to find out sooner rather than later if your project is going “off the rails.”

Release Plan: Once the Sprint duration is determined, the initial release plan can be developed. Using the Product Roadmap, lay out the Features, Themes, and Epics over a three-to-six month period. Your Release Plan will now be connecting the Product Roadmap and the Sprints themselves. A Release Plan can either be built from a feature or a schedule perspective. A feature-based roadmap determines those features that make the most sense to release together, whereas a schedule-based roadmap picks a date in the future and then determines which features can be delivered by that date. If you know that features contain specific risks, it is a good idea to attempt to release those first.

Determine the Team’s Beginning Velocity: Since this is a transformation initiative, your team will have no historical information from which to base its Velocity. The Normalized Estimation Technique provides a one-time method for getting a team’s Velocity defined such that it can informatively pull User Stories from the Product Backlog into the Sprint Backlog. For every full-time developer and tester on the team, give the team 8 points (adjust for part-timers). Subtract 1 point for every team member vacation day and holiday. Find a small User Story that would take about a half-day to develop and a half-day to test and validate, and call it a “1”. Estimate every other Story relative to that one using the Fibonacci sequence. Never look back and do not worry about recalibrating. Remember, a team’s velocity is inherent to the team, and is not transferable to another team.

I do not recommend agile training be undertaken during Sprint Zero (0), but if there are members or your team that are unfamiliar with Agile, the training must be completed during Sprint Zero (0).

Lessons Learned from Agile Transformations: Part 13

Thirteenth in a Fifteen Part Series

By Chad Greenslade

I have often been asked about my lessons learned in delivering Agile transformations. Below is the thirteenth in a fifteen part series examining my lessons learned while instituting Agile concepts & practices. I hope that these lessons help you on your journey to Agile nirvana.

Lesson 13: Build a Product Roadmap (containing Features, Themes, & Epics)

Immediately following the kick-off meeting, you’ll want to begin agile planning. Time spent on agile planning is intentionally limited because agilists know they will be expected to embrace change as the project unfolds. Change occurs when business priorities shift causing features (either in development or in the backlog) to have more or less value to the organization. The ability to realize value by capitalizing on expected change is one of the key benefits of agile, and the underlying reason that most organizations undertake an agile organizational transformation.

The first and most important step to building a product roadmap is to clearly define the “product”. A product is something that has business value. It may generate revenue or support a business outcome. It could be one (1) traditional stand-alone application or it could be a suite of several applications, databases, or processes. My recommendation is to define software development “products” as individual applications. I have supported “products” consisting of more than one (1) application, but doing so becomes unnecessarily complex. If your product’s applications cannot be uncoupled, then it is very important that every team member be able to develop code on all of the applications within the “product”. For example, if your product consists of three (3) applications, but only two (2) out of five (5) team members are able to develop on one (1) of the applications, the output of your team cannot be realistically calculated or planned.

Agile planning follows a logical framework with consistent vernacular. To build a Product Roadmap, you’re only interested in the top three (3) levels of planning:

Features: A “Feature” is a broad-grouping of high level functionality. The “Feature” designation is intended to be the highest level strata for classifying a product’s functionality requirements. Feature examples for a technology product are “Payment” and “Login”. A user of the system will login and make payments for purchased goods. Features are too big for detailed planning, but they provide the structure and framework to gather additional requirements.

Themes: A “Theme” is a designation used to decompose Features. For example, for a “Payment” feature, the type (or form) of payment accepted could be considered a “Theme”. If a product accepts multiple forms of Payment, a theme could be “Credit Card”, “Paypal”, “ACH Debit”, etc. Likewise, if a product accepts multiple forms of login authentication, a theme could be “Login with Facebook”, “Login with Email”, etc. Like with Features, Themes are still used only as a planning framework are not detailed enough for actionable tasks.

Epics: An “Epic” is an even lower level designation intended to further decompose Themes. For example, an Epic associated with a “Credit Card” Theme could be “Visa”. Similarly, for a “Login with Email” theme, an Epic could be “Multi-Factor Authentication”. While these are lower level, further decomposed work items, they are still not detailed enough for actionable tasks.

The Product Roadmap is the pre-requisite for the Release Plan discussed in the following lesson. Once the Product Roadmap is defined, the Product Owner can begin writing User Stories and appending them to relevant Epics. Agilists understand that the development of User Stories will continue as the project unfolds, but the goal is to have the Product Owner begin drafting User Stories that he / she deems as having the most business value, immediately after the initial version of the Product Roadmap is released. These User Stories should naturally rise to the top of the discussion during backlog grooming and sprint planning sessions since they have the most business value and highest priority.