Agile revolutionized the way developers work. Old, heavy processes gave way to a new, more Agile methodology of working based on iterations, constant adaptation, and speedy response to change.
Small software startups adopted Agile looking to conquer space in the market. Developers became capable of writing code faster and in shorter iterations. But what would happen after that? What would be the next steps in the process, up to the final delivery?
For years, speeding up software production was hindered by downstream processes that simply couldn’t keep up and risked the vital reason why Agile was adopted in the first place: speeding up time to market. But this scenario started to change in 2007 with the advent of DevOps.
Agile and DevOps:
It’s Not “Either-Or”—It’s Both
But this methodology alone didn’t bring that much value to organizations as a whole. Agile methodologies, such as Scrum, are too focused on the development aspects of software delivery, and not focused enough on the Operational aspects. What is the point of creating amazing products if you have no way of deploying and delivering them to your customers?
Code was written fast, but the processes that followed were slow. The build and the deployment automation work were considered separate tasks, as was infrastructure management. They were not part of the developer team’s concern, it was as though they were “somebody else’s problem”. But whose problem exactly? The Operations team.
How DevOps Works
The way DevOps is implemented in practice varies depending on the organization. Some prefer to have a team member who is responsible for DevOps. Others create a DevOps team that serves several Agile teams. Each approach has pros and cons, and you need to find what fits your organization better.
DevOps allows teams to address software delivery as a whole, including the steps after development. Practices such as CI/CD (Continuous Integration, Continuous Delivery) give the whole lifecycle a much more holistic approach, with excellent results in quality and productivity.
DevOps slowly conquered space in the industry but it was with the release of Jez Humble’s book, Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation, that the notion of treating the entire software lifecycle as a single process — and one that could be automated — was embraced not only by startups but also by Fortune 1000 companies.
Adopting DevOps during the software development process means reducing the number of steps necessary to bring software to market and, therefore, making the whole cycle faster, achieving the goal that Agile set out to conquer. It’s not Agile or DevOps, it’s Agile and DevOps.
DevOps is the Logical Next Step After Agile
Rather than looking at Agile and DevOps as opposites, as an intersection, or even complimentary methodologies, it is useful to see them as a progression of capability. As if there was a continuum starting with Agile and moving on to DevOps, with Continuous Delivery as the ultimate goal.
Being able to implement a delivery line that includes both Agile and DevOps practices yields successful results to your organization, namely:
- It accelerates time to market
- It allows you to build the right product, and not the product you think is right
- It improves productivity and efficiency across your teams
- It provides reliability to your releases
- It improves product quality and customer satisfaction
Several studies support the general idea that DevOps organizations achieve better results:
- High-performing DevOps organizations spend over 40% more time on new work, including new properties and features that can benefit the company
- This study shows that DevOps teams deliver 30x more frequently, have 60x fewer failures, and recover 160x faster
- Not only DevOps organizations increase success in all business metrics, but also in employee morale and motivation, achieving better employee loyalty
- The point above might be a consequence of these figures presented in a recent State of DevOps Report: employees in high-performing DevOps organizations spend 22% less time on unplanned work and rework
Adopting DevOps usually pairs with embracing digital transformation at the organization. If you’re interested in the subject, you can read more about it in our article here.
How to Adopt DevOps Right from the Start, Alongside Agile
The adoption of DevOps practices requires a culture change that must happen across the organization as a whole. For a successful transformation, you need not only a change in technologies — as DevOps is commonly mistaken for — but also a change in mindset, culture, and processes. Take the time to train your team properly through a certified DevOps Foundational course to help ensure a smooth transition.
It’s a change that must come from above and pour over all areas of the organization, a change that can be more easily achieved through Transformational Leadership.
As we have seen above, for many organizations, DevOps comes as a second step on their Agile journey. However, you will maximize value if you implement it from the start, alongside the shift towards Agile, instead of just adding a pinch of automation at the end of the process.
Since this is often a challenging endeavor, here are our tips to increase your chances at success:
1. Create Integrated Teams
In a successful DevOps model, teams don’t work in silos, as it so often happens in traditional organizational structures. When you have integrated teams that encompass different skills and concerns, workflows speed up, and productivity increases.
Communication between team members also helps to achieve success. Experts have discovered that “the foundational practices — the practices with the most significant impact across the entire DevOps evolutionary journey — are dependent on sharing, one of the key pillars of DevOps”.
Also, consider DevOps as early as you start hiring team members, all the way up to planning and building and down to the ultimate delivery. Keep in mind that Agile and DevOps should come together in a fluid process that enables a holistic way to deliver value to customers.
2. Strive for Impeccable Communication
We have stated the importance of sharing across teams in organizations that embrace DevOps. A change of this magnitude requires new processes, methods, and tools. If a strong communication structure is not in place, the message will not be delivered, and it will compromise the success of the transformation.
According to 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”.
3. Define a Common Mission and Vision Shared Across Teams
A clear understanding of the common goal unites teams in achieving results. While transforming your processes, make the goal clear to everyone involved. Whatever the goal is or however ambitious, it’s important to define it: people are more productive when they understand and share a common mission.
4. Implement CI/CD Tools
DevOps is usually wrongly mistaken for the implementation of technologies with the aim of automating every process — that’s not what DevOps is, but it is also a part of it.
You need to find the right tools to achieve your goals, namely to handle source code control (for example GitHub and Bitbucket), CI/CD, and configuration management (such as Jenkins or Puppet), as well as container platforms (like Kubernetes and Docker).
5. Foster a Continuous Improvement Mindset
DevOps is not just about continuous integration and delivery; it’s also about continuous improvement, in all areas. Foster an atmosphere where your team members constantly strive to learn and improve, as well as to share their new knowledge with others.
At the current speed of changes, and with technologies always evolving, staying up to date and informed is critical for the success of your teams.
Agile and DevOps are not two opposite methodologies, nor should you pick one over the other. Rather, they complement each other and bring the best out of one another, serving the whole development life cycle at different points in the process.
Agile without DevOps falls short of its goals: software is created fastly but it takes too long to be delivered. DevOps without Agile doesn’t make much sense either: why would you need to speed up delivery when you are already late anyway?
DevOps is a natural evolution of Agile practices. Both play their part in streamlining the software development lifecycle and helping to deliver products in a reliable and scalable way. And remember: a successful DevOps journey begins with people working together with shared goals.
Co-founder of Buildingbettersoftware and Agile Leadership Coach
Søren Pedersen is a strategic leadership consultant and international speaker. With more than fifteen years of software development experience at LEGO, Bang & Olufsen, and Systematic, Pedersen knows how to help clients meet their digital transformation goals by obtaining organizational efficiency, alignment, and quality assurance across organizational hierarchies and value chains. Using Agile methodologies, he specializes in value stream conversion, leadership coaching, and transformation project analysis and execution. He’s spoken at DevOps London, is a contributor for The DevOps Institute, and is a Certified Scrum Master and Product Owner.
Value Stream Optimization?
We specialize in analysing and optimizing value streams.