Implementing DevOps, Step 1: Buy T-Shirts...
I was walking down the street in Toronto one morning juggling a large tray of Tim Horton's coffee. Standing at a busy corner, waiting for the walk signal, I overheard the following conversation:
Woman: "I can't believe they delivered the new application with all those options. No one said they'd be live."
Man: "I know. I made the changes last week, and for some reason, they went into QA but weren't tested. So I assumed that we weren't rolling them out."
Woman: "How are we supposed to train our customers on this? We're going to have an emergency release tonight to shut them off."
Man: "I don't think we can, because there's a database release going on tonight."
Woman: "Are you serious? I didn't know there was a release tonight."
I crossed the street quickly, at the risk of spilling of my coffees, since I felt bad for listening into their conversation. But of course, it's a conversation I know too well because I have a similar one with every customer I interact with. The discussion usually involves these questions:
- What's in my release?
- What is scheduled for release into Production?
- What is the schedule for training users before the Production rollout?
Key Steps to Enterprise DevOps Implementation
When I talk with customers about implementing Enterprise DevOps, they often ask what my approach is for companies new to the game. I always tell them to focus on these key steps:
1. Buy T-shirts.
These should read: "It's not done until it's in Production!" This is going to be your mantra for this initiative.
2. Pick 1-3 applications.
These are the applications you want to deliver faster/better/more consistently/<insert-adjectives-here>.
3. Define the team.
For the applications, define the team that will be involved with delivering changes to ALL environments, from Development through Production.
4. March to the same orders.
Hand out the t-shirts to these teams, and ensure everyone is marching to the same orders. Namely, "It's not done until it's in Production."
5. Find whiteboards--lots of them.
Have a meeting with the entire delivery team in a big room with lots of whiteboards. You're going to be drawing out the path to Production, with all the landmines, roadblocks, tasks and TODOs. Get a team picture in front of the whiteboard.
6. Decide how to deliver this implementation.
Your options are:
a. Agile-like. Define the Scrum Master. Create a backlog. Define the first two sprints with tasks. Assign the tasks.
b. More "Classic-style" implementation. Define the Project Manager. Define the project plan and tasks. Assign the tasks.
7. Work the project.
Use Agile-like methodologies regardless of implementation style, having daily (or multiple meetings per week) to ensure the team is completing tasks and addressing roadblocks quickly. This is critical--it's too easy to accept mediocrity and let timelines slip.
Once you're delivering your applications in your new Continuous Delivery framework--in production--throw a huge celebration. Your team has worked hard to complete this change, and their success should be showcased and socialized throughout your organization. Get them new t-shirts, with "We Git 'er Done!" emblazoned on the front, with the project name and completion date on the sleeve.
9. Hire an assistant.
You're going to need help fielding all the phone calls and e-mails from other managers wanting to talk with you about how you achieved this success.
It's a challenge to modernize your organization and implement true Continuous Delivery of your application stacks in Production. As long as you keep the teams focused on Production, you’ll be sure to build a solution that will help the entire organization.