Five Do’s & Don’ts of Implementing DevOpsSoftware Engineering
DevOps is one of the most nebulous and under-defined terms in today’s information technology landscape. Simply asking five technologists to define DevOps will likely result in seven different definitions.
Based on our experience, here is how Sila defines DevOps.
DevOps is a set of practices for optimizing the end-to-end flow of customer value (features) through the software delivery process. Emphasizing a highly collaborative culture between development and operations, it leverages a framework of governance, automation, and tooling to rapidly deliver features that the customer values in a more predictable manner.
As there are many definitions of DevOps, there are similarly myriad ways to implement it. To avoid doing it wrong consider these five do’s and don’ts in adopting and implementing DevOps.
The Five Do’s of DevOps Adoption/Implementation
- Do appoint an organization DevOps evangelist at the highest organizational level as possible. DevOps at its core is a methodology comprised of people, process, and technology. The DevOps evangelist role is to be a champion for DevOps within the organization. There are several reasons for this. DevOps is a transformational methodology that will knock down organizational boundaries in the spirit of optimizing the flow of work within an organization. As transformation and change takes place there will be friction with people and processes that resist change and wish to maintain the status quo. Executive sponsorship and stakeholder buy in are imperative to achieving transformational results. In the absence of a high-ranking evangelist, transformation will be bogged down with sorting through the organizational politics.
- Do develop a culture of ownership, collaboration, information sharing, and empowerment. DevOps, like Agile, is built on a foundation of self-forming teams that collaborate, share information, and are empowered to make technical decisions to achieve success. Developing a culture of collaboration and information sharing can be difficult for many organizations as knowledge and information are often seen as tools for empire building for knowledge hoarders. A successful DevOps transformation rewards behavior that encourages collaboration and discourages disunion. Optimization of flow between teams cannot be achieved if trust and information are absent.
- Do optimize the flow of work between teams. This is the prime directive of DevOps. It forgoes local optimization in favor of total system throughput. It is very easy to say, and hard to do. Optimization of flow begins by identifying the primary constraint of the total system. Until you have identified what is the defining constraint of the system, optimizing and automating are wasted efforts. If you don’t know what your primary constraint is, then start by building a value-stream map.
- Do incorporate automated testing. Test-driven development and automated testing are cornerstones to a comprehensive continuous integration and continuous delivery pipeline. SCRUM iterations of one to two weeks delivering a software increment will quickly overwhelm any manual QA test effort and create a bottleneck. Incorporating automated testing will improve quality and assist in optimizing flow. Ultimately the goal for incorporating automated testing is to help create quality at the source.
- Do include everyone on all teams. Inclusion of all teams within the software delivery stream is critical to successful DevOps adoption. Excluding a team that is within the software delivery stream will create bottlenecks in optimizing flow. Be sure to include support and information security teams where manual efforts can mask bottlenecks that slow the delivery of value to your customers. Remember, the prime directive of DevOps is to optimize flow!
Five Don’ts of DevOps Adoption/Implementation
- Don’t create a specialized DevOps team. Designating a DevOps team that specializes in tackling one aspect of the enterprise initially appears as good strategy decision. However, the fallacy of this decision becomes apparent several months later when it’s determined that despite considerable effort, overall flow has not improved. Why? Because a specialized DevOps team is focused on local optimization versus overall system flow optimization. To achieve throughput, DevOps efforts need to be applied to all aspects of software delivery stream. Optimizing the end-to-end system will produce the most business value.
- Don’t make it all about technology. Let’s go back to the prime directive of DevOps, which is to optimize flow of the entire system. Flow optimization is not all about automation, it can also be about processes, decisions, and other factors. A technology first approach to optimization can result in wasted efforts that might have just as easily been resolved by changing a process.
- Don’t underfund DevOps transformation. Like Agile, DevOps is a transformation effort. Did your organization switch from waterfall to Agile overnight, or skimp on funding for the effort? Not likely. Underfunding a DevOps transformation effort will not produce tangible, lasting results. Resist the urge to hand out a few DevOps titles to existing staff/teams and expect to get results. A successful DevOps transformation takes investment in the three pillars of people, process, and technology to reap the rewards.
- Don’t expect immediate results. Few things take the wind out of a transformational effort faster than discouragement. Culture shifts, building trust, and investing for the long haul take time to build momentum. Optimizing flow by identification of constraints may uncover even bigger constraints than initially identified. Stay focused on identifying and remediating the primary constraint, and momentum will build.
- Don’t forget about security. DevOps stresses end-to-end responsibility, which includes information security. Shift security requirements to the left by incorporating them in the beginning phases of development, and make them part of automated testing. Again, it’s all about the prime directive of flow optimization and InfoSec representation.
Avoid DevOps Pitfalls with the Right Strategy
Implementing DevOps is a challenging endeavor. Navigating the potential pitfalls of a culture shift, while embracing failure and building trust is enough to try the patience of even the most skillful leadership. However, a comprehensive strategy and implementation plan can significantly drive business value by achieving the outcomes sooner versus a haphazard approach. By following these guidelines companies can: accelerate time to market of customer-valued features; deliver higher quality, more secure software; and build collaboration within their organization resulting in improved employee engagement and higher profits.