What is Agile?
Agile means the ability to move quickly and easily. In 2001, 17 software developers met to discuss some alternate lightweight development methods which will be able to adapt quickly to the changing requirements of a project. They published a Manifesto (known as Agile Manifesto), which covered how they found “better ways of developing software by doing it and helping others do it.” Any process that aligns with the concepts of this manifesto is called an Agile process.
How is it different from Waterfall?
Any agile process is based on an incremental, iterative approach. Instead of in-depth planning at the beginning of the project, Agile processes are open to changing requirements over time and encourages constant feedback from the end users. The goal of each iteration is to produce a working product.
In traditional Software development methodology like waterfall, it builds in Phase. This type of product development delivers everything at a single Phase. This approach is highly risky, costlier and generally less efficient than more Agile approaches. Any issue found in Product design and code it blocks until issue is resolved.
On other hand, Agile methodology uses short development cycles called “sprints” to focus on continuous improvement in the development of a product or service. This approach carries far less risk than Waterfall approaches and focus on delivering fully-tested, independent, valuable, small features. As such, this diversifies the risk – if one feature goes wrong, it should not impact another feature. The work is planned in iterations and at the end of each iteration a working model is released for user review and feedback.
Over a period of time multiple methodologies were derived using Agile philosophy, characteristics and practices. But from an implementation standpoint, each has its own processes, terminology, and strategies.
A few popular Agile Software Development Methodologies are: Agile SCRUM, Kanban Software Development, Extreme Programming, Feature Dirven Development
In this blog we’ll focus only on Agile SCRUM methodology.
A few terms from Agile SCRUM lexicon
- Product Owner – The Scrum Product Owner has the vision of what to build and conveys that to the team. He or she focuses on business and market requirements, prioritizing the work that needs to be done, managing the backlog, providing guidance on which features to ship next, and interacting with the team and other stakeholders to make sure everyone understands the items on the product backlog.
- Scrum Master – Often considered the coach for the team, the Scrum Master helps the team do their best possible work. This means organizing meetings, dealing with roadblocks and challenges, and working with the Product Owner to ensure the product backlog is ready for the next sprint.
- Scrum Team – The Scrum Team is comprised of five to seven members. Unlike traditional development teams, there are not distinct roles like programmer, designer, or tester. Everyone on the project completes the set of work together.
- Sprint – A sprint is a time boxed period (typically between one and four weeks) repetition of a continuous development cycle. Within a Sprint, planned amount of work has to be completed by the team and made ready for review, where a team commits to completing a set of defined User Stories. A project is comprised of multiple sprints.
- Sprint Planning – Before a sprint begins, it’s important that the team is all aligned, and that we have up-to-date story points for the features. The role of the Sprint Planning session is to go through the highest priority items in the Product Backlog and agree which User Stories will be included within the next Sprint.
- Sprint Backlog – A Sprint Backlog is a list of User Stories that the team will aim to complete during a sprint. All of the User Stories will have Story Point estimates alongside them, and this total should align with velocity achieved in the previous sprints.
- Daily Scrum meetings – The Daily Scrum is a 15-minute stand-up meeting that happens at the same time and place every day during the sprint. During the meeting each team member talks about what they worked on the day before, what they’ll work on today, and any roadblocks.
- Sprint review meeting – At the end of each sprint, the team presents the work they have completed as a live demo rather than a presentation. Sprint retrospective meeting: Also, at the end of each sprint, the team reflects on how well Scrum is working for them and talks about any changes that need to be made in the next sprint.
- Product backlog – The product backlog is not a list of things to be completed, but rather it is a list of all the desired features for the product. Sprint planning: Before each sprint, the Product Owner presents the top items on the backlog in a sprint planning meeting. The team determines the work they can complete during the sprint and moves the work from the product backlog to the sprint backlog.
- Backlog refinement/grooming – At the end of each sprint, the team and Product Owner meet to make sure the backlog is ready for the next sprint. The team may remove user stories that aren’t relevant, create new user stories, reassess the priority of stories, or split user stories into smaller tasks.
In the next blog we’ll discuss more about the role of Tester in the Agile environment and what are typical challenges a Tester faces in an environment where change in requirement is always welcomed