The agile approach introduced many benefits which were not possible in the traditional waterfall development approach such as delivering high-value features within short delivery cycles. Agile helps to improve the levels of customer satisfaction and customer retention. The testing is integrated with development in agile which helps to deliver high-quality software. The many benefits offered by agile made it increasingly popular and led to a widespread adoption. Even though a large number of software vendors are using agile, there is still clouds of confusion around the difference between agile and scrum.
What is Agile?
Agile software development methodology is more adaptable to changes as there is no in-depth planning at the beginning of a project rather there are changing requirements throughout the course of the project. A constant feedback from the end users is encouraged. In agile, there is an incremental and iterative development approach. The work is prioritized on the basis of business or customer value. There are cross-functional teams that work on the iterations of the product over a period of time. Each iteration is focused on producing a working product.
Agile refers to a process that is aligned with the concepts listed in the Agile Manifesto.
The 12 principles of the Agile Manifesto:
- Customer satisfaction is of highest priority which is achieved through the continuous delivery of valuable software.
- Accommodate changing requirements even in later phases of development.
- Deliver working software frequently in a shorter timescale.
- Business team and developers must collaborate on a daily basis throughout the project.
- Higher autonomy is given to the team members with greater support and trust.
- Face-to-face interaction is critical for conveying information within a development team.
- The progress of the project is measured by working software.
- Promote sustainable development by maintaining a constant pace indefinitely.
- Technical excellence and good design should be the main focus.
- Simplicity is essential for progress.
- Self-organizing teams are required for the best architectures and designs.
- The teams should reflect on how to become more effective regularly and adopt the changes to increase effectiveness.
What are the approaches to implement agile?
Agile is a framework and there are various approaches to implement agile.
It’s one of the most popular ways to implement agile. In this iterative approach, there are sprints that last one to two weeks and allow the team to deliver software on regular basis. Scrum uses a software model that follows a set of roles, responsibilities, and meetings.
In this approach, a visual framework is used to implement agile. This approach promotes small yet continuous changes to the current system. The principles of Kanban include visualizing workflow, limiting work in progress, managing and enhancing the workflow and continuous improvement.
Extreme Programming (XP)
Extreme Programming focuses on improving the quality and responsiveness to evolving customer requirements. Its principles include feedback, simplicity, and embracing change.
Feature Driven Development (FDD)
FDD involves 5 basic activities: develop the overall model, build a feature list, plan by feature, design by feature, and build by feature. FDD blends the industries best practices into a single approach.
Adaptive System Development (ASD)
ASD approach focuses on the idea that the project should always be in a state of continuous adaptation. There is a cycle of 3 repeating series: speculate, collaborate and learn in ASD.
Dynamic Systems Development Method (DSDM)
DSDM is an approach to address the common failures of IT projects, like missing deadlines, going over budget and no user involvement. This approach focuses on the business, being stringent about the timeliness, collaboration, never compromising on quality, build & develop iteratively, communicate continuously and demonstrate control.
Lean Software Development (LSD)
Lean Software Development approach (LSD) has 7 principles. These principles include an elimination of any waste, focusing on learning, take decisions as late as possible, delivering as soon as possible, empowering the team, building integrity and seeing the whole picture.
Crystal Clear approach is used with teams of six to eight developers. This approach focuses on the people involved in the project, not processes or artifacts. In this process, delivery of usable code to the user is frequent. The efficiency improvement and communication is achieved by being co-located.
What is Scrum?
Scrum is the most popular approach to implement agile. It helps to manage software development with an iterative approach. There are fixed-length iterations known as a sprint that allows shipping software frequently. A sprint lasts one to two weeks and at the end of each sprint, the stakeholders and team members conduct a meeting to plan the next steps.
The roles, responsibilities, and meetings are fixed in a Scrum. In each sprint, there is sprint planning, daily stand-up, sprint demo and sprint retrospective. There are task boards and burndown charts to follow up on the progress of the sprint as well as to receive incremental feedback.
Roles in a scrum:
The vision for the software to be built is communicated by the Product Owner. Product Owner not only focuses on the work to be completed but also focuses on business and market requirements. The PO interacts with the team as well as other stakeholders to build and manage the backlog. The role of a PO is to motivate the team to align them with the goal and vision of the project.
Scrum Master is responsible for organizing meetings, dealing with challenges and bottlenecks. The Scrum Master interacts with Product Owner to ensure that the product backlog is ready for the next sprint. He or she is also responsible to ensure that the team follows the Scrum process.
The Scrum Team can be comprised of 5 to 7 members. In a Scrum team, there are no distinct roles as a programmer, designer or tester rather everyone has a set of tasks that they complete together. The Scrum Team plans the amount of work they can complete in each iteration.
Steps in the Scrum flow:
The product backlog comprises a list of all the desired features of the product. The Product Owner and Scrum Master prioritize the items on the basis of user stories and requirements. The development team refers to the product backlog to complete the task during each sprint.
In the sprint planning meeting, the Product Owner provides a list of high priority items on the backlog. The team chooses the task they can complete during the sprint and transfer the tasks from product backlog to the sprint backlog.
The team and Product Owner meet at the end of each sprint to prepare the backlog for the next sprint. The team splits the user stories into a smaller chunk of tasks and removes any user stories that are irrelevant. The team also accesses the priority of stories to reprioritize tasks.
A 15-minute stand-up meeting known as Daily Scrum is conducted daily. The team member discusses the goals and issues related to the development. The Daily Scrum is held every day during the sprint to keep the team on track.
Sprint review meeting
A live demonstration is given at the end of each sprint to showcase the work the team has completed during the sprint in the sprint review meeting.
Sprint retrospective meeting
This meeting is held to reflect on the success of the Scrum process and is there any changes required to be made in the next sprint. The team discusses the highs and lows of the earlier sprint and all the improvements for the next sprint.
Agile is the software development methodology that focuses on customer satisfaction by delivery shippable software frequently. Scrum is one of the many approaches to implement Agile. Scrum is suitable for certain type of projects where there are rapidly changing requirements.