As discussed in my last blog, DevOps: Problem or Dilemma, it is the competing priorities that are ultimately causing the issues between Development and Operations. Let’s discuss how to solve those issues, which is what has led us to this strategy called DevOps.
Bringing Development and Operations together with competing priorities can be boiled down to a single concept - Build Trust. Here are the 3 ways to build trust between Dev (+QA) and Ops.
1. Deliver high quality code to production
Easy to say, but how do we increase our code quality? Better testing in development. QA organizations are many times forced to focus on functional testing instead of business requirements testing. The difference? When development delivers poor quality code to QA, QA is forced to execute their tests on a limited basis initially, just to make sure the code works. Working code is not the goal of a QA organization. Their goal is to ensure high quality code that is meeting the business requirements. For example: when a customer is in a promotional period, they are getting the promotional rate; when they are outside of that window, they do not get the promotional rate. If QA were to focus on just testing the code, they are likely to miss ensuring this business rule is met. By focusing on the business requirements, QA has the ability to run more tests, more frequently (testing quality in) vs. testing functions with limited scope on an infrequent test basis (testing defects out). There are numerous ways to address better testing in development, and I will discuss the methods in my next blog post.
2. Provide visibility and transparency
Visibility into the software development life-cycle (SDLC) for both Development and Operations will help break down the barriers between the teams. With reporting and tracking, teams can answer key questions to measure effectiveness of their tools and process. Focus your metrics around answering questions like:
- How many changes are required on the development side for a given application that will be moving to production?
- What are the defect rates as it moves through the SDLC?
- Are we seeing significant decline in defect leakage (i.e. reduced number of defects) from one phase of the SDLC to the next?
- How are we validating the steps required to deploy the applications throughout the lifecycle? (i.e. stop/start, loading databases, configuring applications, etc.).@
New(er) technologies around Release Automation and Continuous Delivery provide this level of visibility and transparency to all parties. I will speak in detail about this in a later post.
3. Develop complimentary, not competing goals
Start with people. Today, bonus incentives for developers are around amount of functionality delivered to their customers. Operations personnel are incented on production stability. These competing goals can completely disconnect the teams.
- Development should be measured based on their productivity considering both speed and quality.
- Operations should be measured on stability and time it takes to approve and deliver changes to production.
To align these goals, find the overlaps such as quality and stability or speed and time to approve/deliver changes. Give teams goals that have both attributes so that they have a common objective. By aligning their goals, there is both a need and a team spirit that will naturally help the teams work together.
These suggestions for aligning Development and Operations are likely not the only ways to be successful in DevOps but they address the key factors you may not realize are impeding your teams. By building trust through higher quality code. providing visibility and transparency, and developing complementary goals, teams will undoubtedly find the value in working together.