While agile methodologies aim primarily to improve the processes that lead to a quality product or service and that customers increasingly value, DevOps seeks to unite development and IT operations teams. Both concepts, far from being confrontational, complement each other to the point that they share key objectives: deliver value to customers in an agile way, eliminate the boundaries between the creation, testing and use of a software, increase the speed of deployment and promote a higher return on investment.
Scrum: one of the most widely used agile methodologies in the market, structures its organization in sprints: the work is divided into time slots of between two and three weeks, the backlog is established and the importance of the role of the product owner emerges, responsible for defining priorities and focusing the team (also composed of developers, quality experts, business analysts) on restructuring the requirements and building the user stories based on that and what added value each of these stories will bring. The refinement meetings help the team to analyze and deepen the requirements, making also an estimation of the effort so that it can be ready to be worked on in a future sprint. During the “Planning” session, the sprint backlog is defined and both the team and the PO agree on the commitment for the next 2/3 weeks.
Another well known meeting is the Retrospective, one of the most important of the process, where the main objective from the entire team is to understand things that went well (to keep doing), things that need to be improved and based on this, define some action items to be implemented.
This is where the complementarity of DevOps comes into play, which proposes, as its name suggests, the union of two teams: developers (“Dev”) and operators (“Ops”). The objective is to reduce the gap between what is being developed and when it will be available in production. In simple terms: it seeks to improve efficiency in the processes to reduce time-to-market. What would be the point of taking agility to the extreme in the development stages if that code is then destined to wait six months – or even longer – until the time when the customer can use it effectively?
In this sense, DevOps aims to understand potential bottlenecks and to carry out one of the main maxims of this practice: it is better to have many small problems than a big one. In this way, the production release is accelerated, since a set of small periodic deliveries is always more manageable than a release loaded with new features that can become immense and uncontrollable. The extreme? Amazon ships releases to production every eleven seconds. Each sprint in the agile methodology can coincide with that small set of problems that DevOps is attacking in each instance.
Automation plays a key role: whether in the development of unit tests, in the deployment of new versions or in the regression tests of the quality experts, which are the ones that ensure that everything that worked in the previous release will continue to do so in this one. This not only speeds up the work, but also gives the team the possibility of focusing the human effort on punctual validations, with the confidence and peace of mind that what is delivered is correct.
A point that often causes confusion: quality is not the sole responsibility of the Quality Assurance (QA) team. The QA team, with its manual testing, automated testing and performance testing, only ensures that the agreed standards are met. Quality, in fact, starts from the definition of requirements, extends to the entry into production and goes through the entire development process all its way to production, going through the entire CI (Continuous Integration) and CD (Continuous Deployment) path – that is, continuous integration and delivery.
And since you cannot improve that which cannot be measured, another aspect shared by Agile and DevOps is the importance they give to metrics as a mechanism for monitoring project progress and continuous improvement. Agile methodologies focus on quality aspects, bugs detected and resolved (with a view to sustaining that the number of bugs found is lower than the number of bugs fixed), number of lines of code written, team velocity. DevOps, on the other hand, aims at metrics of workflow duration, performance, mean time to recovery and success rate. In both cases, analytical tools and dashboards are used to facilitate daily monitoring.
In an uncertain and fast-paced world, agility and adaptability – proposed by the combination of agile methodologies and DevOps – are key values for all companies that need not only to keep pace, but also to anticipate the changes and disruptions that will impact their business.