Don’t try to speed row on a frozen lake. DevOps is an exciting digital transformation initiative, but keep your eyes wide open as the new process unfolds or you’ll get stuck.
Changing business models and increased competition have led to skyrocketing interest in DevOps over the last decade. It’s easy to understand why. Startups and established businesses alike have implemented DevOps to satisfy their customers’ insatiable desires for new applications and features.
Our own team has seen a dramatic DevOps shift, which has included the following: delivering twice the amount of code per developer; identifying 25% more trapped defects while decreasing the number of escaped defects; and delivering products at a cadence far faster than what we achieved five years ago.
In our own experience and that of our customers, we’ve seen the benefits of DevOps, but in getting there we’ve also seen the traps that keep organizations stuck. Here, we’ll look at five of the most common ones:
1. Lack of management commitment and support
Before embarking on any DevOps initiative, it is absolutely vital to secure management buy-in. You must clearly communicate what DevOps is — a logical, essential strategy for being more competitive. You must explain and give real-world examples of the productivity that can be unleashed when wasted time and resources are eradicated from the software delivery process.
Gaining this commitment is important because DevOps initiatives, especially at the beginning, can be fraught with mistakes and setbacks. Set expectations so management isn’t discouraged. Eventually, they’ll realize that DevOps success, while not necessarily fast and automatic, is well worth the time and effort.
2. Cross-organizational resistance to change
You may also encounter people on your teams who are more comfortable sticking to the old way of doing things. You must actively engage these people and explain how DevOps will ultimately make their lives much easier — by enabling them to deliver value to customers faster and with fewer headaches by emphasizing incremental delivery.
Managers across departments should engage in training and weekly one-on-ones with their employees to help foster this culture of innovation. Also, it’s vital to promote a culture in which all employees are encouraged to develop and present ideas — ideally, there should be as few barriers as possible to people presenting great new concepts. Approaches like this help ensure a broader, organization-wide approach to embracing DevOps, versus a siloed approach across departments and platforms.
3. Using waterfall methods to implement change in software delivery
Traditionalists often cling to waterfall methodology, which has long been favored in enterprise environments for its rigorous requirements of capture, documentation and governance. While there are times when waterfall may be appropriate, such as instances where customers want to see a clear product roadmap over a set time period, this is rarely the way the world works today.
Upstarts are disrupting traditional business models at breakneck speed, with innovative, cutting-edge software applications being rolled out quickly. If an organization is to compete in this climate, it cannot afford the time spent using waterfall to manage and implement DevOps methods and features. That’s like trying to learn to speed row on a frozen lake.
We believe that using agile and DevOps practices will help you transition to a faster and higher quality software delivery organization. The faster you can deliver new capabilities and features, the more competitive you’ll be. So, it’s best not to waste time using waterfall to implement DevOps if your ultimate goal is to produce software products that delight customers, ahead of your competition.
4. Adopting an all-or-nothing definition of success
The goal should always be progress, not perfection. There are many features and capabilities you can implement that will yield positive benefits. Incrementally adding capabilities onto a software delivery MVP will yield productivity and quality benefits faster in the long run. One example is automated testing — a foundation for being an autonomous digital enterprise. Besides enhancing speed, the more you can automate, and shift testing left, the less likely the chance for human error — critical since DevOps places an equal emphasis on speed and high quality. Key priorities for autonomous digital enterprises of the future include unlocking agility, scalability, better customer experiences and reduced operating expenditures. These are all additional by-products of more automated testing.
Additionally, it’s important to remember you can only move as fast as your slowest link. If there are inefficiencies anywhere in the software development lifecycle, any isolated speed gains will not be optimized. Similarly, if you’re on the Ops side of DevOps, you can automate deployment and make the delivery of code fast, efficient, and reliable.
5. Limited focus on automated testing
The importance of automated testing bears repeating. Testing is critical to producing high-quality, high-functioning software. However, manual, error-prone methods are threatening the quality, velocity and efficiency of software rollouts. Across platform types, the need to automate testing is vital as evidenced by a recent Vanson Bourne survey: 90% of application development managers say that automating more test cases could be the single most important factor in their success as the pressure increases on IT to accelerate innovation. Furthermore, 80% of application development leaders say it is inevitable that unless they can automate more test cases, bad code will make its way into production.
This survey confirms what may teams already know: Current manual approaches to testing are a bottleneck. More automated testing across all platforms and all stages of testing is the key to avoiding bad code in production, especially as applications grow more componentized in support of end-to-end transactional applications. As organizations look to the future, they will invest heavily in automation to increase DevOps through the enterprise and expand and transition existing software DevOps offerings toward enterprise DevOps.