Comparison of SDLC Methodologies
Have you ever helped plan a wedding before? I have, and I think it took some years off of my life. Below is a pie chart that better describes the process.
It turns out that planning specific details for a large event on a date that’s a long time out in the future is HARD. That’s because, in life, things are always changing. Interestingly enough, developing software can be challenging as well for that reason. And that’s where methodologies such as Agile, Scrum, and DevOps come in. Let’s go ahead and compare these three concepts.
Agile
First up is Agile. Agile is a set of values and principles that are employed to produce software in rapid iterations. This means that instead of choosing one specific target date far out in the future to deliver a final product, a team can instead choose to deliver one piece of the project after a set time period. From there, they can receive client feedback and make other adjustments as necessary. This would continue in cycles, or sprints until the project is completed.
Using the agile method, change is both accepted and embraced.
When outlining the scope of a project using agile principles, high-level requirements for the project are established and can be changed later on in development depending on the circumstances of the client and the team. As one can imagine, software developers and designers play a crucial part in creating software. But beyond these roles, most agile teams will include a Product Owner and a Team Lead.
The Product Owner is someone who has a deep understanding of the product that is going to be built and a clear vision of what it should be. Using this knowledge, they create a roadmap for the development team to follow during the project. In contrast, the focus of the Team Lead is to promote collaboration, remove impediments, and allow the team to work undisturbed during the project. This role can be summed up in one word: facilitate. Using tools such as Trello, Jira, and Asana these two roles keep the team on track and keep the agile process going.
After many sprints and many weeks of work, many artifacts will begin to pop up on Jira or whichever tool the team is using. These artifacts include a product backlog, sprint backlog, and product increment. To simplify things think of the product backlog as a big overall list of todos for the project, the sprint backlog as a more focused todo list to be completed during a specific sprint, and the product increment as a newly built feature being integrated into the work that was already done previously.
All of this leads us to the benefits of Agile which include…
- Increased product quality
- Increased flexibility
- Increased customer satisfaction
- Decreased time to market
- Decreased feelings of dread as the product is being shown to the client
Scrum
Next, we have Scrum. Scrum is an agile framework that is based on the values and principles found in Agile. While other frameworks exist, Scrum is the most popular agile framework. The purpose of Scrum is to help teams produce work iteratively and in a collaborative way. Because Scrum is based on Agile, they share similar artifacts, tools, scopes, and benefits. But I would still like to highlight two differences between them.
- Instead of having a Team Lead, teams that use Scrum instead have Scrum Masters. However, just like the Team Lead, their primary job is to facilitate the work that is being done.
- Scrum meetings are sometimes referred to as Scrum ceremonies. Don’t worry, they’re not complicated. It’s just terminology specific to Scrum. I’ll do my best to explain each ceremony briefly.
- Sprint Planning — A Scrum ceremony that kicks off the sprint. Here the team defines what work will be done during the sprint.
- Daily Scrum — A short, daily meeting where the team can identify obstacles and lay out what work will be done for the day.
- Sprint Review — A meeting held at the end of a sprint to showcase what was done and to receive feedback from the client.
- Sprint Retrospective — A meeting held at the very end of a project to talk about what worked and what didn’t work. From there, improvements can be made for the next sprint.
DevOps
Lastly, we have DevOps. DevOps is a software development methodology that impacts the culture, practices, and tools of software development. Many companies adopt this methodology because it allows them to produce projects faster and makes the maintenance of these projects easier by means of automation. This is done by means of the DevOps Lifecycle which can be seen below.
Because the DevOps Lifecycle involves continuous integration and continuous delivery, its scope spans across the development and operations teams. This also means that a typical DevOps team will contain a variety of roles including, IT Engineers, Security Engineers, UX/UI designers, Systems Architects, Software Engineers, and QA Engineers. Implementing the DevOps methodology does not require the use of a specific set of tools but some common ones you will see are GitHub, Maven, Selenium, Jenkins, and Docker, to name a few.
Beyond the final product, DevOps produces many other artifacts during the DevOps Lifecycle. Some of these include meeting notes, user guides, test cases, error logs, and developer documentation. When implemented correctly, DevOps allows companies to…
- Improve communication and collaboration across team members
- Improve product quality and speed of delivery
- Improve client satisfaction
- Reduce the time required to discover and resolve issues
- Reduce the cost of software development
Thank you for taking the time to read this article and I hope you were better able to understand Agile, Scrum, and DevOps.