Getting Started — picking your first cloud native projects, or, Every Digital Transformation Starts with One Project

This post is pretty old and possibly out of date. There’s updates on this topic and more in my book, Monolithic Transformation.

Every journey begins with a single step, they say. What they don’t tell you is that you need to pick your step wisely. And there’s also step two, and three, and then all the n + 1 steps. Picking your initial project is important because you’ll be learning the ropes of a new way of developing and running software, and hopefully of running your business.

Choosing these first projects wisely is also important for internal marketing and momentum purposes: the smell of success is the best deodorant, as they say, so you want your initial projects to be successful. And…if they’re not, you want to quietly sweep them under the rug so no one notices. Few things will ruin the introduction of a new, proven way of operating into a large organization than failure’s foetidly. Following Larman’s Law, the organization will do anything it can — consciously and unconsciously — to stop change. One sign of weakness early, and your cloud journey will be threatened by status quo zombies.

Project picking peccadilloes

Your initial projects should be material to the business, but low risk. They should be small enough that you can quickly show success in the order of months, and also technically feasible for cloud technologies. These shouldn’t be “science projects” or automation of low value office activities: no virtual reality experiments or conference room schedulers (unless those are core to your business). On the other hand, you don’t want to do something too big, like “migrate the .com site.” As Christopher Tretina recounts Comcast’s initial cloud native ambitions:

We started out last year with a very grandiose vision.. And it didn’t take us too long to realize we had bit off a little more than we could choose. So around mid-year, last year, we pivoted and really tried to hone in and focus on ‘what are just the main services we wanted to deploy that’ll get us the most benefit?’

Your initial projects should also allow you to test out the entire software lifecycle, all the way from conception, to coding, to deployment, to running in production. Learning is a key goal of these initial projects and you’ll only do that by going through the full cycle. As Home Depot’s Anthony McCulley describes the applications chosen in the first 6 or so months of their cloud native roll-out: “they were real apps, I would just say that they were just, sort of, scoped in such a way that if there was something wrong it wouldn’t impact an entire business line.” In Home Depot’s case, the applications chosen were projects like managing (and charging for!) late returns for tool rentals and running the in-store custom paint desk.

A special case for initial projects is picking a microservice to deploy. This is not as perfect case as a full-on, human-facing project, but will allow you to test out cloud native principals. The microservice could be something like a fraud detection or address canonicalization service. This is one approach to migrating legacy applications in reverse order, a strangler from within!

Picking projects by portfolio analysis

There are several ways to select your initial projects following the above criteria. Many Pivotal customers use a method perfected over the past 25 years by Pivotal Labs called “discovery.” In the abstract, it follows the usual BCG matrix approach but builds in intentional scrappiness to ensure that you can quickly do a portfolio analysis with the limited time and attention you can secure from all the stakeholders. The goal is to get a ranked list of projects to do based on the organization’s priorities and the “easiness” of the projects.

First, gather all the relevant stakeholders. This should include a mixture of people from “the business” and IT side, as well as the actual team that will be doing the initial projects. This discovery session is typically led by a facilitator, usually a Pivotal Labs person familiar with coaxing a room through this process.

The facilitator will hand out stacks of sticky notes and markers, asking everyone to write down projects that they think are valuable. What “valuable” is will depend on each stakeholder. We’d hope that the more business minded of them would have a list of corporate initiatives and goals in their heads (or a more formal one they brought to the meeting). One approach used in Lean is to ask management “if we could do one thing better, what would it be?” and start from there, maybe with some five why’s spelunking.

After writing down projects on sticky notes, the discovery process facilitator draws or tapes up a 2×2 matrix that looks like the following:

People in button up shirts prioritizing sticky notes.

The participants then put up their sticky notes in this quadrant, forcing themselves not to weasel out and put the notes on the lines. Once everyone has done this, you get a good sense of projects that all stakeholders think are important, sorted by the criteria I mentioned above: material to the business (“important”) and low risk (“easy”).

If all of the notes are clustered in one quadrant (usually, in the upper right, of course), the facilitator will redo the 2×2 lines to just that quadrant, forcing the decision and narrowing down on just projects to “do now.” The process might repeat itself over several rounds. To force a ranking of projects you might also use techniques like dot voting which will force the participants to really think about how they would prioritize the projects. At the end, you should have a list of projects, ranked by the consensus of the stakeholders in the room.

Like I said: “scrappy.”

Planning out the initial project

Of course, you may want to refine your list even more, but to get moving, the next step is to pick the top project and start breaking down what to do next. How you proceed here is highly dependent on how your product teams break down tasks into stories, iterations, and releases (or epics, sagas, or whatever cutesy terms you like for “bucket of stuff scoped at some hierarchical level with purposefully vague responsibility and temporal connotations”).

More than likely, following the general idea of a small batch process you’ll:

  1. Create an understanding of the user(s) and the “problems” they’re trying to solve with your software through personas and approaches like scenarios or Jobs to be Done,
  2. Come up with several theories for how those problems could be solved
  3. Distill the work to code and test these into stories,
  4. Add in more stories for “non-functional” requirements (like setting up build processes, CI/CD pipelines, testing automation, getting the new ping-pong table setup, etc.),
  5. Arranging them into iteration sized chunks without planning too far ahead (least you’re not able to adapt your work to the user experience and productivity findings from each iteration)

Crafting your hockey stick

Starting small ensures steady learning and helps contain the risk of a “fail fast” approach. But as you learn the cloud native approach better and string up a series of successful projects, you should expect to ramp up quickly. The below shows Home Depot’s ramp up in their first year:

This chart measures application instances in Pivotal Cloud Foundry which does not map exactly to a single application. What’s important is the general shape and acceleration of this curve as they became more familiar with the approach and the platform.

Another Pivotal customer in the telco space started with about 10 unique applications at first and expanded to 100 applications just over half a year later. These were production applications used to manage millions of customer account management and billing tasks.

How do you start: simple

It all sounds simple, and that’s part of the point. When learning something new, you want to start as simple as possible, but not simpler.

 

This post is pretty old and possibly out of date. There’s updates on this topic and more in my book, Monolithic Transformation.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.