Software Development Methodologies: Agile and DevOps
It is software development methodology, which is centered around iterative development, that is by breaking the project into several phases. The agile team delivers work in small but consumable increments. It aims to provide better value to the changing business needs. Scrum, Kanban are two of the most widely used Agile methodologies.
Scrum is a framework that helps teams work together. It is a subset of agile. The scrum framework requires the use of development cycles called the Sprints. The scrum ceremonies include: Sprint Planning, Daily Scrums, the Sprint Review, and the Sprint Retrospective. The Product Backlog is the list of what is needed to improve the product. The Sprint Backlog is a forecast by the Development Team about what functionality will be in the next Increment and the work needed to deliver that functionality into a “Done” Increment. The Product Increment is the version of the product delivered after each sprint to the stakeholder. The scrum teams are associated to roles, artifacts, events, and rules.
Image from https://www.tuleap.org/
The Scrum Team consists of: Product Owner, Scrum Master and the Development Team.
The Product Owner - the person who is solely responsible for managing the Product Catalog. They make sure the items in the product catalog are visible, transparent and clear to everyone.
The Development Team – this team consists of people who work on the product and release increments of ‘Done’ product at the end of each Sprint. The team size is small enough to remain nimble and large enough to complete significant work within a Sprint.
The Scrum Master – the person who is responsible for promoting Scrum. The Scrum Master is the servant leader for the Scrum Team. The scrum master makes sure everyone understands the theory, practices, rules and values and works to maximize the value created by the Scrum Team.
Benefits of Scrum
· Cope and respond better to change
· Quality focus
· Accelerated delivery
· Improved customer satisfaction
· Simplifying complex projects through iterative and small incremental cycles
It is set of practices and tools which combines Software Development and IT Operations teams to build, test and release software faster and more reliably. It represents the evolution of software delivery cycles from large application and huge code releases to iterative smaller functional updates released frequently. It relies on automating routine operational tasks and standardizing the environments across an app’s lifecycle.
Image from https://devopedia.org
Although both approaches encourage collaboration to improve speed and efficiency, DevOps promotes a fully automated continuous integration and deployment pipeline to enable frequent releases, while Agile provides the ability to rapidly adapt to the changing requirements and better collaboration between different smaller teams.