A somewhat controversial title because of course DevOps promises a lot of value. But now I have your attention, what I really want to outline is the importance of value stream mapping in regards to DevOps adoption.
Alice’s Adventures in DevOps
I think that the famous “Alice’s Adventures In Wonderland” should be updated for modern IT as DevOps would make a great new Wonderland. This is because one of the most popular questions that I have been asked and heard being asked, over the last couple of years is – “Where do you start with DevOps?”
This question reminds me of the White Rabbit’s question – “Where shall I begin, please your Majesty?”
Now I know the answer I have given and heard being given many times is that for DevOps, “You really need to get management buy-in and sponsorship first, keep it small initially and then ultimately, it really means a cultural change or transformation”. Clear isn’t it? Well, not really, as it’s not advice that leads to quick action. In fact it reminds me of the answer given by the King:
“Begin at the beginning,” the King said gravely, “and go on till you come to the end: then stop”
Value stream mapping should be your first step
As mentioned on my blog post on Automation, the end goal of DevOps boils down to releasing new applications or features at speed while maintaining quality. Therefore in order for you to know what people, process or technology areas need to be fixed/improved you need to map out the software delivery cycle, all the way from receiving new requirements for applications or features through to delivering these to the customer or employee. This is where value stream mapping comes in.
Value stream mapping is part of the Lean management method and is used to analyze the current state of how value (in this case applications or new features) is delivered, from an end-to-end perspective. From my perspective (I have seen people explain this in different ways) the end goal of this activity is to identify:
- All process areas involved
- The flow of information and flow of development (application artifacts)
- The processing time or how long new app or feature development stays within one process
- The production lead time or how long it takes to transition the app or feature being developed to the next process and through to delivery
- The current app or feature ready time
- The current delivery time for a new application or feature
I have seen many versions of value stream maps. Sometimes customers I have worked with did not know they had created one.
Here is a simple example of what a value stream map may look like for releasing a new feature:
In this map we have:
- Information flows – How requirements for new features are fed back to the business and how they reach the CIO – in this case with a fortnightly requirements meeting. Notice how Application Intelligence (monitoring + analytics) is critical to this feedback loop.
- Software development flows –The processes within IT that are involved in developing the new feature. Notice how Application Intelligence is critical to the software development cycle for feedback and feed forward loops – see this blog post.
- Lead time ladder – How long it takes from requirements being delivered to delivery. Here we see two calculations; 1) Production lead-time = total time spent moving the feature between different processes, 2) Processing time = how long the feature has spent in each process.
- We can then calculate a total feature ready time and total feature delivery time based on set release windows. In this case, for a new feature release, it takes around 3 months for delivery to customers – which is probably too long for today’s digital customer.
Five tips for value stream mapping
In my time attending conferences and working with different customers, I have seen many versions of value stream maps. The best ones are ad-hoc, drawn on a big white board and use post it notes to help explain the flow. The example above is something that you would work on afterwards, to present back to stakeholders and to get their agreement. Here are my five tips for value stream mapping:
- The most important aspect of this activity is not the immediate output, it’s the taking part, it’s getting people in a room to understand the flow, for them to complain, moan, accept that change is needed and to get consensus to move forward.
- Don’t try to do this activity without all necessary or at least the majority of stakeholders/representatives for these processes, otherwise you can’t vouch for its accuracy. I know it’s a pain to get people together but it’s really worth it.
- A 1 hour meeting is not long enough for such an activity. Depending on the process you are trying to map out, you may need half a day. So make sure that you have refreshments and ensure people understand that they have to make themselves “free” for this session. No sneaking off to other meetings. The best sessions are ones, which are held off-site, away from deadline distractions.
- The role of the facilitator in these sessions is extremely important. People are going to get shirty as this is an emotional exercise. That’s fine, but a good facilitator is needed to keep everyone on track.
- Arrange a webinar/conference call to present back the value stream map in a more formal way, no longer than 3 days after the session. Remember you want stakeholder buy in for the current state. This gives you to foundation to move forward, to set meaningful objectives.
What to do next with the value stream map?
We have only just scratched the surface with the above map. Notice how each of the process boxes are empty? Well here I would start to document the people, internal processes and technology, which are used at each stage – why is the processing time this long? Why are the lead times this long? This helps to identify those friction points in the process and if you can solve these, this is how you begin to speed up release cadence while maintaining quality, and therefore beginning your DevOps journey.
Please feel free to comment and to let me know your thoughts as to value stream mapping. Any more tips? Anyone care to share any examples?