Agile development emerged as an answer to the slower, more sequential Waterfall development methodology. With Agile, development teams moved from long development cycles to working in shorter sprints, usually no longer than two weeks. The shorter release cycles helped teams incorporate feedback faster into the development loop and made feature addition and bug fixing much easier. The market demanded frequent product upgrades which meant short release cycles. Clearly, developers needed a faster development framework and Agile gave them just that. But was that enough?
Even with Agile cementing its position in the software development landscape the Cloud started taking root. This brought with it some disruption. Developers realized that they were still not getting the dramatic impact that Agile development promised. The challenge was that with the SCRUM approach while development became faster, operations teams were still not up to speed with Agile practices. The lack of collaboration between development and operations teams actually defeated the purpose of Agile – the functional requirements were addressed but the functional and deployment needs were not addressed. This lead to the rise of DevOps – the new development methodology that was based on continuous collaboration between development and testing teams, business teams, and operations to create business solutions faster and on time.
The DevOps methodology made the software development chain more aligned and took away a lot of work duplication. It promoted better conversations between teams. This helped in developing better quality, thoroughly tested products faster. It is because of the benefits that DevOps brought to the table that it became widely adopted. Today the DevOps market is expected to grow to $8.8 billion, growing at a CAGR of 18% during the forecast period (2017-2023).
Is the age of Agile over?
The question is, with an increasing number of companies adopting the DevOps methodology for software development, is agile dead? DevOps was born out of the need for collaboration between teams as the lack of collaboration between the development and operations teams was slowing down the development process. However, it is important to note here that while Agile and DevOps are not interchangeable terms, it is almost impossible to achieve success in DevOps if Agile practices are not followed. Agile is a lot more than just SCRUM and DevOps is not just continuous delivery. The oversimplification of these terms only leads to an unnecessary confusion -are they the same or perfectly compatible, or even are they perfectly incompatible!
The Agile and DevOps debate
In Agile, development teams achieve working functionality at the end of every sprint. However, to truly achieve complete functionality, development teams have to wait until a product release date. In case the ops team is not ready for the release with integration and deployment or if the business is not prepared to go-live with “just that” functionality then there will be a delay in the release. The key benefit that Agile promises, that of shorter time to market, is then not realized.
Agile is a set of values and principle that define how to produce software. However, when you want to move that software into production infrastructure quickly, easily and repeatably in a safe and secure manner you need to employ DevOps techniques. While agile focuses on the development of the software, DevOps focuses on the development and the deployment of the software in the most reliable manner. The collaboration that DevOps demands makes the time to market shorter than Agile. DevOps addresses the people, processes, tools and technology dimensions to ensure that the different stakeholders are in sync. This helps to move the functionality into production without delays.
What being ‘agile’ really means
Agility is all about the speed of embracing change and then succeeding in a changing environment. In order to be agile, you need to be in a position to react and respond to changes such as changing market dynamics, changing product requirements etc. quickly. This is where the Agile and DevOps come together. DevOps focuses on increased collaboration between development, operations, and business teams. This delivers high-quality applications that can be deployed faster, can be monitored and maintained easily. Accurate feedback can be provided to the business for future growth to help them respond to market changes better. The focus thus changes to being agile rather than doing Agile.
DevOps and Agile – better together?
While Agile can be executed without DevOps, our view is that DevOps without agile principles is not possible. As a methodology, DevOps is about shorter development sprints, increased focus on testing, increasing automation. The aim is to get software into production faster by using Continuous Integration and Continuous Delivery and Deployment. Unless DevOps teams adopt agile principles they cannot deliver on this promise of faster and better software delivery.Agile also is a great deal more than just a set of activities. It is more than sprints and stand-ups and retrospectives. But if an organization is looking for developmental agility then agile and DevOps must work together. Agile is an important part of DevOps, the factor that enables teams to develop and deliver continuously. Agile is not just about processes and DevOps is not just about technical practices. The aim of both these methodologies is to disrupt silos. Really, DevOps is an extension of Agile that includes systems and operations and focuses on breaking down barriers between development and operations teams. This builds a culture of collaboration that helps them become more agile to respond to market demands. The objective of DevOps and Agile is to remove silos. Looking at them separately defeats this purpose.