3 elusive development practices for successful DevOps
Trunk development, containerization, and the Scaled Agile Framework are all challenging development practices for DevOps organizations to adopt. But a recent study also found them to be the three most effective practices for successful enterprise DevOps.
The 2016 Enterprise Agile and DevOps Study, commissioned by HPE’s Digital Research Team, looked at the benefits organizations are deriving from DevOps, how they evaluate the success of their DevOps transformation, and the factors that contribute most to their success. Here are a few highlights from the study.
Beyond the DevOps buzzword
Out of the 400 IT operations and development professionals surveyed by YouGov for the study, 97 percent said their organizations are either implementing DevOps, piloting it, or researching and evaluating it.
"DevOps" is a catch-all term for many different practices, so the study first gathered details as to which DevOps principles and approaches respondents were implementing, or planned to implement, in the next 12 months:
Almost two-thirds of organizations said that they have adopted better tools to enable communication between development and operations, including the implementation of ChatOps and video conferencing. More than half create formal processes across Dev and Ops, such as value stream mapping, and including deployment as part of the overall process.
Almost half have created shared dashboards for use by Dev and Ops, and they are investing in automation tools for development, testing, staging, and production environments. Many have also created joint metrics for Dev and Ops.
As organizations invest more in DevOps, they do more of these practices. The one exception is that all organizations, regardless of DevOps stage, are investing in better communications tools. For each role, developers and project managers are also investing heavily in communications tools, while operations staff report the highest use of shared dashboards. Testers and Ops staff also invest in formal processes and end-to-end automation tools.
The study then drills down into how much the respondents’ organizations have embraced specific development practices.
Most common development practices
The most common development practice among the respondents is to prioritize security above speed. Almost half of the respondents said that automated testing is increasing in development, and that coders are taking more responsibility over their own testing than ever before. Silos are breaking down, with teams taking responsibility for building, testing, running, and operating their products, and no longer "throwing it over the wall" for the IT operations team to take over:
Less common development practices
The following items appear at the bottom of the list:
- A ratio of testers to coders that is on the decline (39 percent)
- Use of Scaled Agile Framework (39 percent)
- Use of containerization (e.g., Docker) in test (38 percent)
- Trunk development (38 percent)
- Use of containerization in production (38 percent)
The use of containerization is still in a relatively early stage, so it's hardly surprising that it appears toward the bottom of the list, whether for test or production, particularly when considering that the smallest organization surveyed has more than 500 employees. Larger organizations often have to work with legacy code, which is not suited to containerization without a big refactoring effort.
Among the various large-scale agile frameworks, the Scaled Agile Framework (SAFe) is probably the most well known. It’s no secret that there are many challenges associated with scaling agile, so it’s encouraging that more than one-third of respondents are using it.
Trunk development is the practice of having all developers work on a single code base, rather than creating long-lived branches in parallel to the main code base. It’s strongly recommended, but it’s hard, mainly because it requires a significant cultural transformation.
Nevertheless, seeing trunk development appear so low in a list of practices used by organizations that do DevOps was surprising. As DevOps thought leader Gary Gruver notes in Starting and Scaling DevOps in the Enterprise, “Continuous integration … requires developers checking in their code to trunk on a regular basis, instead of allowing it to stay out on branches and in dedicated environments. This is a big cultural change for most organizations, and a completely different way of working, but it is probably the most foundational piece of DevOps.”
The more difficult practices are the ones most associated with success
If, as the survey indicates, most organizations are adopting early security, automated testing, and developer testing, should you focus on them? The respondents evaluated how successful each of these practices is, and it turns out that the best practices are the less commonly adopted ones:
Notice that the ordering is almost exactly the opposite of that in the previous chart. According to just about every parameter measured—quality and performance, time-to-market, speed of delivery, scope, security, and cost/use of resources—trunk development, containerization, and the use of SAFe are the practices most associated with success. These appear at the top of the list, while practices such as having teams take control over their applications, having coders take more responsibility for testing, and increasing automated testing appear near the bottom.
Don’t just follow the crowd
Fewer organizations are doing trunk-based development, but this survey shows that developers who have embraced it reported increases in delivery speed, reduced time to market, and lower costs. Using containers is difficult, but it ultimately reduces time to market and increases quality and performance.
Scaling agile in a large organization using SAFe involves a huge shift for everyone, but those who have done it are claiming they can now deliver quicker and get to market earlier, with higher quality.
Bottom line: To increase your chances of DevOps success, invest in the practices that are hardest to coordinate around: trunk development, containerization, and the Scaled Agile Framework.