How to Integrate DevOps and Agile: 5 Pragmatic Tips for Success
DevOps and Agile software development work together to harmonize the software development lifecycle, enabling teams to rapidly build and deliver software that adds value to a business. Based on our work with hundreds of industry-leading clients on complex software projects, we’ve honed our approach to DevOps, making it a powerful accelerator of Agile software development. In this article, we’ve outlined five pragmatic success factors for integrating DevOps with your Agile software practice.
Why Do We Need DevOps? Why Can’t Our Developers Just Do It?
A DevOps approach promises faster product delivery times, higher reliability and quality in the delivery process, and increased responsiveness to the business. One study reports that teams that employ DevOps deliver 30 times more frequently, have 60 times fewer failures, and recover 160 times faster.
DevOps adoption often goes hand-in-hand with digital transformation and journey-to-cloud initiatives designed to increase competitive advantage and time to value in the market. As companies move to cloud, and as their strategies shift to embrace digital, the role of operations shifts, too, with many operations functions being outsourced to cloud providers. This frees the operations team to focus more on efficiently moving product from development to production. This evolution to more of a DevOps approach is increasingly common. In fact, 76% of organizations have DevOps initiatives in place or planned.
You may wonder whether DevOps can just be done by one of the engineers on the development team. While that’s possible, perhaps with very small teams or projects, there is an increasing need for a highly specialized set of skills and a unique perspective on operational efficiency. The best code developers in your organization may not always be the best DevOps practitioners. And, as with other roles, the skills improve significantly with intensive and varied experiences over time.
How Does DevOps Integrate Into an Agile Practice?
It’s helpful to think of DevOps as a specialized set of skills that you might find either in a person or a team.
For example, you might have one person on your Scrum team responsible for completing tasks assigned to the DevOps function, in the same way that every other member of the team completes tasks.
Some organizations stand up a full DevOps team that serves multiple development teams. The DevOps team can run a ticketing system that allows Scrum teams to queue tasks with them. This approach has several advantages over the dedicated DevOps team member, including:
• Increases the utilization of the DevOps skill set, as the DevOps needs of a development project typically come at the beginning and end of a project, and aren’t as needed in the middle.
• Increases DevOps expertise across the organization. As with any role, skills improve significantly with more practice and more varied experiences.
• Encourages creation of established standards and best practices for product delivery.
• Frees up the development team to focus solely on development.
Your DevOps team structure will depend on your business needs.
How Can We Do DevOps Well?
Through building our own DevOps practice and helping many clients build and fine-tune their own, we’ve identified five critical success factors for implementing DevOps.
1. Establish integrated teams
Siloed teams almost always produce friction and lower quality products. If Jane is a software engineer on an e-commerce site, she spends her time thinking about what her users need and then developing and testing software to meet those needs. Her colleague in operations, Bob, spends his time thinking about infrastructure and policies, and keeping systems reliable and operational. They are on separate teams, and though they know each other, they never work on anything together and are never in the same meetings. Their departments operate independently, with their own departmental or team goals. With these siloed teams, there’s little or no collaboration or even communication. Workflows can slow down and productivity can plummet. Both DevOps and Agile require constant communication and collaboration, so structure your teams to support this.
Whether your teams are distributed or co-located, you must work to build integration and collaboration into your culture rather than simply assume it’s happening. You might start small, with a non-critical project and simple goals, so everyone can learn and embrace the new approach. You might also try letting the team define what works best, a strategy backed up by research from Accelerate: State of DevOps 2019. Educate your teams about the short- and long-term outcomes needed and then let them work out how to achieve the goals and how they prefer to work together. For communication, some teams may prefer a tool like Slack, others may prefer shorter, more frequent meetings. Your goal should always be to encourage whatever promotes working together.
2. Ensure clear, consistent communication within teams and between teams
Building integrated teams is just the start. Make sure the culture, processes, and technologies are in place to facilitate consistent communication within and between teams. According to the Accelerate: State of DevOps 2019 report, optimizing organizational culture for information flow, trust, innovation and risk-sharing is a strong indicator of high-performance in software delivery and productivity.
Create feedback loops and put checks in place to identify and fix communication breakdowns. Reinforce the value you place on effective communication and collaboration. At Gorilla Logic, for example, we emphasize Agile ceremonies and recognize exceptional team players with our Unstoppable Awards.
3. Define a common mission and vision that all teams share
When you are working with Agile and DevOps approaches, you must clearly articulate the common mission or vision that informs the work your teams are doing. It might be an incremental goal, like achieving a bug-free launch. It might be a much bigger goal, like achieving multiple releases per day. Whatever the mission is, remember to bring it up frequently. Everyone works more productively when they understand and share a common mission.
4. Identify and implement the CI/CD tools
Tools that enable the continuous integration and continuous delivery processes (CI/CD) form the core of the DevOps toolset. These tools provide automation (such as version control and automated testing), monitoring, clear change approval processes, and more. It’s important to get the right tools in place for your business, which broadly fall into these categories:
• Source code control tools like GitHub and Bitbucket
• CI/CD and configuration management tools like Ansible, Jenkins, Chef, and Puppet
• Container platforms like Kubernetes and Docker
The important thing is to determine what works best in your environment. Teams empowered to choose the tools that work best for them have been found to contribute to better software delivery performance, and high-performing teams tend to choose tools that are both usable and useful, which improves productivity. In fact, high-performing engineers are 1.5 times as likely to have easy-to-use tools that help them accomplish job-related goals.
5. Cultivate a strong continuous improvement, continuous learning mindset
A passionate embrace of continuous learning and continuous improvement may be one of the most critical success factors for DevOps. For more traditional operations teams, the if-it’s-not-broken-don’t-fix-it mindset can be the norm. With DevOps, the focus must shift to a we-can-always-do-better mindset since the goal is to facilitate faster ways of delivering products to the business.
Some practices that can help build a strong culture of learning include establishing Communities of Practice, developing proof of concept projects either as a template or a seed, and bottom-up or grassroots teams that learn together and then share what they’ve learned with wider groups. Conducting pre-mortems and blameless retrospectives (or post-mortems) can also provide regular opportunities for learning and reinforce the continuous improvement mindset.
With business needs constantly changing and technologies evolving, there will always be new opportunities for novel and faster ways to do things. When you’re able to achieve this continuous improvement approach with DevOps, you’ll be able to help your business create and sustain a stronger competitive advantage.
DevOps and Agile: Best Together
At Gorilla Logic, we see DevOps as a natural evolution of an Agile practice. It’s not an either/or, but a both/and situation. Agile ensures that we develop products that end users need and we deliver those products quickly. DevOps ensures that we move those products into the business in reliable, scalable ways. They each help streamline the software development lifecycle so it delivers value to the business quickly and sustainably. We love it when two outstanding things come together!