Let’s clarify that DevOps question mark
Hey all, I’m Jen Krieger and I am Team Inception’s Product Owner and Scrum Master/Agile Coach. Hopefully, you have read Bill Montgomery’s blog post last week about Red Hat IT’s DevOps’ journey. He referred to Underpants Gnomes strategy and how to get from point A to point C if there is a big question mark in the middle. You could say my job on the team is to clarify that question mark. I’m going to share my method… but first, let’s break down what the first 6 weeks of team activities looked like from my perspective:
- Formed team in late October and immediately swarmed around a presentation to explain what we are doing, backlog, strategy & roadmap needed, limited time to talk to stakeholders, hey… maybe we should read some information on CI/CD and DevOps.
- Do all the most critically needed steps for agile best practices surrounding team formation. We selected Kanban as an initial focus for Agile practices.
- Continued to talk to stakeholders… held meetings.
- Presented “What is Inception” to Red Hat IT, included cookie monster and cookies as a defense mechanism to ward off attendees sleeping during presentation.
- Continuing to read Jez Humble & David Farley’s Continuous Delivery book and flip to the end of the book (spoiler alert!) to find the maturity model and how to use it … “OMG, why didn’t we read this in the reverse direction?” #readtheindexnexttimedummy
- Presentation. Then beer. Then sleep. Then beer.
- Continued to talk to with stakeholders… more meetings.
- Team self-organized and got some work done.
- I went on vacation (sorry team!), but not really because I still read email every day, thought about the team every day, and read from my ever growing mountain of suggested work reading.
- Came back… worked on articulating a better roadmap to include two central themes: Environments & Deployment | Monitoring
- Got a start on setting up our environment so our own team can get work done. #sprint0
- Continued to talk to stakeholders… more meetings… see a pattern?
- Continued to work on team dynamics, including normalizing team flow times, team definition of done, workflow & standard operating agreements.
- Agile training with Bob Galen and we made a list of other Agile team goals we need to work on.
And here the team is today… and what have we delivered? To be fair to the team, I’m not going to say nothing. I certainly don’t believe that. Given the time we’ve had and how well we work together already, we are ahead of the game logistically. But here are some initial lessons learned:
1. Distractions are really bad for Agile Teams. I have allowed the team to become distracted by outside influences… a lot of them. In trying to include everyone in the decision making process, talk about what was cool and new, attend meetings to learn what other teams were doing, talk to folks outside of IT on what they were doing, insert random topic here, I probably exposed them to more conversations/meetings then they could generally tolerate. The noise of the incoming “please help us make this better” was and continues to remain hard to ignore.
2. Don’t be afraid to fail. My A-type personality initially tried for the “perfect roadmap” and I learned pretty soon that wasn’t going to work. We need to focus on and try to address what is most painful now before I could ask the department to talk about what was next. See Broken Windows Theory and The Pragmatic Programmer Quick Reference Guide.
My new strategy is to just course-correct as often and as many times as needed in conjunction with incoming feedback from stakeholders. Since we are Kanban, we have a lot more flexibility over the incoming work and the timing of those decisions. As far as providing feedback to upper management on progress to our long-term goal, well… ask me again later…
3. Continuously challenge your stakeholder community to tell you what they want. Our backlog is in a woeful state and needs some love and attention. It’s hard to get internal stakeholder time and trust to hear about what is needed. Here are some examples of me doing it poorly:
- I didn’t include all of the right people in conversations. I didn’t even know some of them were out there!
- I focused too much on our development community in the first initial few weeks… and hey, surprise! we have an operations community that is equally needful.
- I’m still trying to figure out how to incorporate our multi-geo teams into the conversation so they actually feel like they have a stake in the game.
- Whoops! We have an Agile community of practice and an Office of the CIO that is interested in how and what we are doing
Now that I’ve bored you to tears… Here is Team Inception’s “easy button” method to help populate that question mark.
- Use Jez Humble & David Farley’s CI/CD maturity model. Any model will work, though. If that is what is holding you up; stop talking, start working.
- Complete a survey to find out where your teams are.
- Look at the definition of where you are and where you want to be… and state what needs to happen to change. If your stakeholder community generally feels they are at Level -1 and want to be at Level 0, list what high-level things you need to do in order to achieve that. Hint: the maturity model gives you the answer.
- Now that you have a high-level list, order them in priority based on stakeholder feedback. Don’t take a whole lot of time here. If you are working in an Agile construct, you can always change the order if something doesn’t stick or feel right.
- Starting with your #1 priority item, define what it means for your department. As an example: we went through these steps and selected “automated deployment to some environments” for an initial focus. Our current and ever changing definition below.
- Start working.
General components of automated deployments:
- An artifact repository – assumes we will accept artifacts from different places and does imply binary artifacts
- Standardization of packages & package metadata
- Automated distribution of artifacts
- Logging of the orchestration
- Gatekeeper – determine if we need an approval at any point during the deployment
- Complete a release manifest
- Orchestration of release – ensure all the moving parts happen in the right order at the right time
- Anything else? Leave your responses in the comments!