Agile and DevOps - contradictory or complementary
DevOps is a buzzword that has been trending in the tech industry in recent years. But in spite of its fame, there is a lot of misperception pertaining to “how different it is from Agile”.
DevOps vs Agile is an endless discussion in the IT industry now.
Common myths around DevOps & Agile
- DevOps and Agile are two variants of software delivery methodology
- Comparing to Agile, DevOps is a faster way of delivery of Quality software
- DevOps will automate every technical effort and delivery would be faster than French supersonic Concorde
- By adopting DevOps, a few DevOps professionals can replace the entire engineering team
- Ultimately DevOps is a new trend and eventually will replace Agile in the coming future
Debunk the Myths
Myth-1
DevOps and Agile are two variants of software delivery methodology
Agile and DevOps are not competitors or peers. In fact, Agile and DevOps are complementary to each other in a software delivery lifecycle.
Here is how?
Agile is a set of software development methodologies that help engineering teams to deliver fast responses to the feedback they get on the project in a collaborative manner. DevOps is rather a set of methods that allow automatization of the software delivery. While Agile was a response to Waterfall, DevOps isn’t a response to Agile. DevOps blends automation, and continuous delivery to streamline the software delivery process. By and large Agile is more about the process and DevOps is about automation using technology. So (DevOps & Agile) need to be partners in a release cycle so as to deliver high-quality software without "Delay".
Explaining a practical scenario
Consider a Project with a release timeline of 6 months which is supposed to be executed in an Agile model like Scrum. Here are the sequences of key action items:
Release planning by a product manager with high-level Business Use Cases
Breaking down the Business Use Cases into User Stories and allocate them in Sprints. The Sprint can be of 2 or 3 weeks whichever best suitable
Scrum Team will execute Code development/Design, Unit Testing, QA/testing, Automation testing effort
At the end of all Sprints “Final Release Build“ is delivered to the Operations team for "Product deployment"
But like most of the complex projects, if a lot of bugs/issues reported in all Sprints, then Scrum Team would exhaust the pre-defined sprint bandwidth for activity code fix and retest. Eventually, this leads to a situation Spillover of User Stories happening in almost all Sprints, and at end release delay is a possible scenario.
Sometimes workaround like “Hardening Sprint” (extra sprint planned) introduced to manage bandwidth issues and the scrum team tries to complete everything in this Sprint.
There is nothing like” Hardening Sprint” in Agile. This is an erroneous practice.
So, what is the actual solution to this issue?
If we can automate few efforts then we can catch the issue at an early stage and resolve at a fast rate rather than at the end of the Sprint. We need a process where we continuously code and test and then deliver a high-quality final artifact to the ops team for further deployment.
Here comes "DevOps" which implements specific process automation like CI/CD Continuous Integration, Continuous Delivery, and Continuous Deployment.
By continuous integration, the team can code and test multiple times in a day and in a sprint and integrate the sanitized code into SCM.
Testing scope is mostly revolving around automation of the regression test suite. By implementing a CI tool like "Jenkins", every time any dev member check-in new code into SCM, automatically regression test suite will be executed and results shared with stakeholders for further action. Activities like Build generation, build code quality check, deployment of the build can be automated by adopting CI/CD practice.
If we find all issues and fix them at the right time, by adopting DevOps-CI/CD, we don’t need Hardening Sprint anymore!
Myth-2
Comparing to Agile, DevOps is a faster way of delivery of Quality software
DevOps (CI/CD) is not an independent end to end process which will replace Agile as discussed in the above section. Efforts like code development, Testing, the review cannot be replaced by adopting “DevOps”.
By implementing DevOps, many efforts will be automated by using varieties of tools like Jenkins, Ansible, Nexus, SonarQube.
Adopting these tooling and automated processes of DevOps we can enhance the speed of execution in Agile methodology.
So DevOps is not an alternative to Agile (Scrum) but co-exists with it.
Myth-3
DevOps will automate every technical effort
No!
Each technical task cannot be automated. The developer will do coding manually using language like "Python, Java or C#". The tester will test manually the features and write automation codes for the regression test suite. An effort like Sprint planning to Sprint retrospective will be there and by mutual collaboration, these jobs must be executed.
Complete automation of the entire release life cycle is not practically feasible. We are not considering "Artificial intelligence" Here.
Myth-4
By adopting DevOps, a few DevOps professional can replace the entire engineering team
Many times, organizations do have assumptions that by implementing DevOps everything will be automated, and eventually, a handful of DevOps professionals can replace the rest of the teams.
This is a completely wrong assumption as we discussed in previous points that all efforts coding, testing, would be intact. DevOps Professionals can automate many technical efforts and in-corporate into the delivery process. The actual replacement happens for “Operation teams” and downsize an “ops” team can be considered case wise. DevOps professionals can take care of efforts of the “ops team “like System monitoring, Deployment, Scaling.
Any team member of the development team can play the role of “DevOps professional”.
The purpose of DevOps implementation should be "adherence to release timeline and high quality" instead of cost-cutting. Timely go to market gives a boost to sales pipeline and financial profit eventually.
Myth-5
Ultimately DevOps is a new trend and eventually will replace Agile in the coming future
Now after discussion of all the above points, it is very much confirmed that DevOps and Agile are supposed to co-exist for faster and quality delivery.
No one can replace either. They are not for in fact Best friends.
So next time when someone saying, "DevOps will replace Agile", we should Smile!