Want to shorten your development cycles, deploy more frequently, make your organization more agile, and break down silos in your organization? The DevOps movement promises to help you get there.
But for DevOps to succeed, you need more than a technological transformation. You also need to change your company culture to make sure dev and ops are on the same page and working towards the same goals.
Going from No to Yes
To make DevOps work, both dev and ops teams need to have some sympathy for the other. The ops side has traditionally been the domain of “no.” No, we can’t do that, it will take down the server. No, we can’t do that, it will take too long. From the traditional ops perspective, the health of the machines is paramount, which often means that nothing interesting gets done.
But the ultimate goal is to grow the health of the business, not maintain the health of the equipment. For DevOps to work, ops must change the dialog from “no” to “yes” and find ways to deliver business value, not protect an uptime number. Servers are a tool, not an end.
That means aligning operational incentives to reflect those goals, and setting expectations that ops will figure out a way to help people do things well, not just say “no” to anything that could be disruptive.
From the other side, developers must learn to have some sympathy for the machines that run their work. Ops should give developers visibility into what’s going on with their product. If you show developers how it works, it’s not just operations staff staring at dashboards any more.
For a business to reach its goals, everyone needs to be thinking about the big picture, not their own areas of responsibility. Whether or not they realize it yet, both sides need each other—and the business needs them both.
With that in mind, here are six real-world suggestions on how to make the combination work:
DevOps Culture Best Practice #1: Togetherness matters
Rather than separating the dev and ops functions, and having them touch only to hand off code for production, DevOps works best when reorganizing your software organization to combine dev and ops on product or project teams. Functionally, ops should be involved with development from before the writing of the first line of code, and developers should deliver code that is sensitive to operational requirements and constraints.
To help bridge the cultural divide, try conducting daily product or project stand-up meetings with both groups. Periodic breakfast meetings or brown-bag lunches can encourage the teams to share their points of view about the development process and ways that everyone could benefit from working together.
DevOps Culture Best Practice #2: Align incentives
Ensure that all teams are encouraged to pursue the same goals. For example, don’t base developer compensation on quantity of code written. Remember to encourage risk: Trying to break things should be standard operating procedure at every point in the software development pipeline. So make sure operations isn’t penalized when there are surprises in production. The ultimate goal is to improve software quality and performance by collaborating across the product lifecycle – and everyone’s incentives need to support that.
DevOps Culture Best Practice #3: Dev does ops, ops does dev
One effective way to smooth misunderstandings and bridge gaps in perspective is to have ops and dev folks trade hats occasionally. For instance, you can have developers be engaged with on-call response to fix system issues, and task operations people (who increasingly bring programming skills to the table) to contribute project code as part of their regular responsibilities. You can bet both sides will gain a better appreciation of how the other half lives.
DevOps Culture Best Practice #4: Share success stories
Change is stressful, so it’s important to keep dev and ops energized about this change in expectations. One suggestion is to regularly share internal and external stories illustrating how DevOps approaches can speed development, shorten deployment cycles, improve performance, and eliminate organizational silos. If you’re in retail, for instance, you might point out how other retailers are benefiting from DevOps.
DevOps Culture Best Practice #5: Build in transparency
In the DevOps approach, everything is supposed to be transparent: system and application states and performance, as well as who made specific software changes, when, and why. Version control tools like Git, for instance, let everyone see exactly what changes have been made, when, and by whom, to application code, infrastructure, configurations, and databases. Configuration management tools like Chef and Puppet help you track and control changes to software. And application performance monitoring (APM) and server monitoring tools, like those offered by New Relic, provide visibility into application and server performance.
DevOps Culture Best Practice #6: Hire with DevOps in mind
If you’re serious about DevOps, it’s essential to evaluate ops and dev job candidates based on whether they’ll be comfortable in a DevOps environment. According to a Puppet Labs blog post, regardless of whether they’re in dev or ops, DevOps practitioners should:
- Be able to code and script and use open-source tools
- Be comfortable working across functions
- Be comfortable with frequent code-testing and deployment
- Be experienced with IT systems and services
- Focus on business goals
- Have an understanding of automation tools and data management
Without a culture that tears down the walls between dev and ops, your DevOps initiative may never reach its full potential.