A few days ago, I had an opportunity to meet and interact with Mike Place, who works as a developer at Saltstack. We had an interesting conversation about devops and how things work in the valley. Mike explained the growing importance of devops in organizations and the rise of devops as a culture that aims to collaboratively deliver systems into production, reliably and effectively.

He said “Businesses are ever-changing. Engineers ship code, dozens of times each day. Every change in production has some probability of failure and business can get impacted due to that very failure. Risk is a combination of both of them. If only one of them is high, the risk may still be low. But if both of them are high, it can be a disaster. The role of devops is to minimize the risk of every change.”

He asked a series of questions to self-evaluate the health of the devops team in any organization. The questions are an eye opener to every devops engineer.

Here are 29 questions that you need to ask yourself if you are in devops. Go ahead and rate yourself on a scale of 1 to 5.

Do you automate everything that can be automated and makes sense to automate? How easy is it to revert the changes? Do you use role based configuration management? Do you automate the creation of base system configuration (like OS installation, launching VMs, etc.)? Is all your code stored in some version control system, viz. Git, mercurial, svn? Does everyone (developers, devops, QA, etc.) in your organization knows where to look for code? Can you build your code in ONE step? (5 points for one step build, -n if number of steps n is greater than 1) Can you deploy your code in ONE step? (5 points for one step deploy, -n if number of steps n is greater than 1) Do you have audited log for every deployment? Do you release frequent small changes or club smaller changes into a big one to release less frequently? Do you always ship master or feature branches? Do you use feature flags to enable or disable a feature? Do you do private beta releases? Do you use AB Testing? Do you do dark Launches? Do you have metrics shared between Dev and Ops? Do you have Application level metrics? Do you co-relate application and system metrics? Do you make changes based on the application or system metrics? Do you have notifications based on metrics? Do you have respect for other teams? Do you stereotype others? How hard it is to say YES? Does your team hide things? How often Dev talks about the impact with Ops? Does Dev and Ops maintain checklist or plans? Does Dev have access to production? Do you practice fire drills? Are there developers on call rotations?

What’s your score? Don’t worry, you don’t need to share it. It’s more important to ask yourself these questions often than focusing only on the answers.

Should you need any clarification regarding these questions, don’t hesitate to comment below. And as always, Thanks for reading :-)