24 October 2015

A Thin Slice of Value

The very first principle of the Agile Manifesto reads:

“Our highest priority is to satisfy the customer
through early and continuous delivery
of valuable software.”

I’m reasonably sure that most people  (business, technical and customers) would agree that as a principle this is sound and that we should indeed seek ways to identify and deliver value as early as possible in any development (software or other) initiative. The principle however, only gets us so far, it makes what we want to do clear enough but doesn’t help much with how to actually do it.

This post addresses the how by providing a step-by-step guide to one approach to finding the earliest and best possible slice of deliverable value. The approach is called Blitz Planning and is introduced and covered in detail in Alistair Cockburn’s Crystal Clear [1].  Blitz Planning is applicable in a wide range of contexts, from software development through to business process change. 

Re-Introducing Blitz Planning – Setting the scene

Firstly it’s important to understand that Blitz planning is not about generating user stories or identifying epics and features; although it is likely to provide an input to some of these things if used in this context. The output of a Blitz planning activity can inform your release plan however, the key objective of blitz planning is to find the earliest possible point at which business value (revenue or savings) can be delivered.

I like to run this activity as part of an inception, which is the multi-day planning workshop used to kick off a new or re-imagined project, initiative or other piece of work. You can read more about inceptions here and here.  It makes most sense to conduct your Blitz Planning exercise before you start to identify epics or features and while you are still working at a fairly high level. 

It’s critical to have all the right people in the room. This means the representatives of all the stakeholder groups who will be impacted by, or who will have an interest in your project.  This should include; technical people, business people (including your executive sponsor), process people and if possible your customer (the end user of your product) or their (knowledgeable) representative.

To conduct the exercise you need index cards, stickies, builders tape, sharpies and a large table or floor space.  It’s important to be able to easily move the cards around.

Getting Started

Step 1; what are all the things we need to do to deliver this project?

Ask your participants to form affinity groups, by this I mean groups of shared interest, for example you might have, a technical group, made up of developers, QA’s, BA’s and infrastructure/operations folk. Another group may be made up of business representatives, marketing team members and perhaps your project sponsor.  If you have end user/customer representatives in the room, they might form a team with training and communications experts.  

Ask each team to brainstorm and then write cards for every task which needs to be done. This should include all kinds of tasks, but not processes; for example, "migrate database" or "order hardware", are tasks, whereas "run a showcase", or "run an elaboration workshop" are not. Don’t worry too much about granularity at this point; you will get a chance to review that shortly.  

Step 2; where are the dependencies?

Ask each team to group their cards by theme (for example; all the infrastructure tasks form a theme)  and lay them out in vertical columns on the table or floor. The tasks should be ordered by dependency in each column, any task which is independent or can be done in parallel with another should be in it’s own column.  You will end up with something that looks like this.

Review what you have; at this point, you will likely find some duplicates between the teams; these cards can be stacked on top of one another.  You may also identify some tasks that are too large and have multiple dependent parts, break these out until you have only single columns of discreet but related tasks.

Ask each team to review the other teams columns of tasks looking for duplicates, and omissions, merging and refining columns as they work.

Step 3; Creating a big picture

Now bring together all the columns of tasks from the teams, placing them on the table, but leaving a decent amount of space above your cards when viewed from the bottom to top.  Align all the columns horizontally in order of any obvious dependencies, for example you may want to take into account any long lead times, such as regulatory approvals or print material runs. Don’t worry too much about these though; they are not critical at this point.

You will now have something that looks a bit like a walking skeleton or story map but is not made up of stories but of all the tasks that need to be done for the project.

Step 4; Estimate and Tag

In this step ask participants with relevant knowledge to tag each card with a high level estimate of how long they think the task will take to complete. These estimates should be given in days, are intended to be very rough and should be based on total elapsed time.  These estimates are designed to give the team a general feel for the size of the project, nothing more, so don’t get too prescriptive, err on the side of generosity.  Where there are a number of wildly differing estimates on a task, take the opportunity to explore the differences and come up with an agreed best guess.

Tag each card with an indicator of who or which team needs to do it.  If a particular person with specific expertise is required mark this on the card too.  The objective of this step is to identify key constraints such as a significant amount of work dependent on one individual or team. This should lead to discussion on how this might be avoided and presents an opportunity to think about how you might apply techniques such as the 5 focussing steps from the Theory of Constraints [2], [3]

Step 5;  Review dependencies

Now bring your teams together and take some time to review your cards again as a group. Particular cards may trigger ideas for more cards.  Question all dependencies, you may find that some things that have been identified as dependencies could in fact be done in parallel. You should also identify and tag any very strict dependencies that exist. An example of a strict dependency might be that you need to develop training materials before you can deliver them.

Step 6 Make magic happen

Now grab your builder’s tape and create a horizontal line above your top row of cards but leaving space at the top of the table. Look at your columns of cards and ask, what tasks do we absolutely need to do to prove this concept.  You are looking for the thinnest possible end-to-end slice of functionality.  Move these cards above your line to the top of the table.  Look for opportunities to make this as fast and a lightweight as possible.  Consider options such as not using the end state architecture. Perhaps you decide that you can use a flat file to hold data rather than a database. Make sure you have included any tasks which are not part of the development process, but which need to be done first, such as obtaining software licences, or spiking out a technical challenge.  This first cut may not be useable in a production sense, but should prove your concept. This is particularly valuable where your project requires you to integrate several systems. 

Place a second line of tape beneath these cards; you should have a gap between the line of tape and the top of your remaining columns of cards. Move cards to make this space if you need to. Now place the cards that are absolutely needed to create a product that someone can use below this second line of tape.  This is your MVP; its purpose is to allow you to get early feedback on your product and is an important potential pivot point for the business.

Place a third line of tape beneath your MVP and add the cards that would be needed to create a product that generates the earliest possible business value. This may take the form of earned revenue or savings. This step may trigger discussions about how business value can be measured and may also result in the generation of more cards around identifying appropriate metrics. If this is the case, estimate and tag these cards and place them appropriately.

Now add up the estimates in each column for each of your releases. Then add these horizontally. 

At this point, both the team and your sponsor have enormous early visibility over the project, its size scope and complexity. This can lead to a number of important discussions about how valuable a project actually is and how much needs to be included to deliver sufficient value.  The team and the sponsor may be either pleasantly or unpleasantly surprised by results but everyone will probably be appreciative of the level of transparency and the shared understanding they now have.

Step 7 Identify further releases and mitigate risks

Assuming that your project sponsor has not decided that the whole project is now a bad idea, you can go on to identify further releases. These can be represented by clusters of functionality that add additional business value, so you may decide to move these up to an earlier release, or you may decide to delay a cluster which does not appear to add sufficient value.  You may also spot cards that carry a large amount of risk late in the project, especially if they are tasks that could be very expensive if they go wrong. You can discuss how to mitigate these risks by looking for opportunities to start these as early as possible. 


Having used this technique several times now I have found it to be very worthwhile from a number of different perspectives.

·      It provides you with the high-level planning equivalent of a user story card. (In the same way that a story card is not a requirement but a placeholder for a conversation, the potential releases you have identified are placeholders for further conversation.) You can take each one of these forwards to use as a starting point for more detailed release planning activities. 

·      Both business and technical stakeholders have a shared understanding and level of visibility over the project. This leads to more valuable conversations and the minimisation of the tensions between technology and business that can sometimes emerge, even in the most enlightened organisations. 

·      The approach forces everyone to focus on delivering the most valuable software for the customer as early as possible and on measuring that value.

This post has been my interpretation of how to conduct and use this technique, if you would like to read a more detailed description of its origins and use you should buy and read Crystal Clear or attend an Advanced Agile Master Class where it is taught by it’s inventor, Alistair Cockburn. 

[1]      A. Cockburn, Crystal Clear: A Human-Powered Methodology for Small Teams. Addison-Wesley, 2008.
[2]      “Theory of Constraints.” [Online]. Available: http://www.leanproduction.com/theory-of-constraints.html. [Accessed: 24-Oct-2015].
[3]      M. Naor, E. S. Bernardes, and A. Coman, “Theory of constraints: is it a theory and a good one?,” Int. J. Prod. Res., vol. 51, no. 2, pp. 542–554, Jan. 2013.

No comments:

Post a Comment