What is Agile
Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a conceptual framework that promotes foreseen interactions throughout the development cycle.
The base for Agile methodologies is agile manifesto:
Manifesto for Agile Software Development
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
Types of Agile methodologies
Well-known agile software development methods include:
- Agile Modeling
- Agile Unified Process (AUP)
- Dynamic Systems Development Method (DSDM)
- Essential Unified Process (EssUP)
- Exia Process (ExP)
- Extreme Programming (XP)
- Feature Driven Development (FDD)
- Open Unified Process (OpenUP)
- Crystal Clear
- Velocity tracking
- Kanban (development)
What is Scrum
Scrum is an agile framework for completing complex projects. Scrum originally was formalized for software development projects, but works well for any complex, innovative scope of work. The possibilities are endless. The Scrum framework is deceptively simple.
Scrum has not only reinforced the interest in project management, but also challenged the conventional ideas about such management. Scrum focuses on inexperienced project management institutions where it is difficult to plan ahead with mechanisms for process control, where feedback loops constitute the core element of traditional command-and-control oriented management. It represents a radically new approach for planning and managing projects, bringing decision-making authority to the level of operation properties and certainties.
Roles in Scrum
The core roles in Scrum groups are those committed to the project in the Scrum process—they are the ones producing the product (objective of the project).
The Product Owner represents the voice of the customer and is accountable for ensuring that the Group delivers value to the business. The Product Owner writes customer-centric items (typically user stories), prioritizes them, and adds them to the product backlog.
The Development Team is responsible for delivering potentially shippable product increments at the end of each Sprint. A Development Team is made up of 3–9 people with cross-functional skills who do the actual work (analyse, design, develop, test, technical communication, document, etc.).
Scrum is facilitated by a Scrum Master, who is accountable for removing impediments to the ability of the group to deliver the sprint goal/deliverables. The Scrum Master is not the group leader, but acts as a buffer between the group and any distracting influences. The Scrum Master ensures that the Scrum process is used as intended. The Scrum Master is the enforcer of rules. A key part of the Scrum Master’s role is to protect the Development Team and keep it focused on the tasks at hand.
The Scrum Framework
- A product owner creates a prioritized wish list called a product backlog.
- During sprint planning, the team pulls a small chunk from the top of that wish list, a sprint backlog, and decides how to implement those pieces.
- The team has a certain amount of time, a sprint, to complete its work – usually two to four weeks – but meets each day to assess its progress (daily scrum).
- Along the way, the Scrum Master keeps the team focused on its goal.
- At the end of the sprint, the work should be potentially shippable, as in ready to hand to a customer, put on a store shelf, or show to a stakeholder.
- The sprint ends with a sprint review and retrospective.
- As the next sprint begins, the team chooses another chunk of the product backlog and begins working again.
The cycle repeats until enough items in the product backlog have been completed, the budget is depleted, or a deadline arrives. Which of these milestones marks the end of the work is entirely specific to the project. No matter which impetus stops work, Scrum ensures that the most valuable work has been completed when the project ends.
Main activities in Scrum
The sprint itself is the main activity of a Scrum project. Scrum is an iterative and incremental process and so the project is split into a series of consecutive sprints. Each is time-boxed, usually to between one week and a calendar month. A recent survey found that the most common sprint length is two weeks. During this time the team does everything to take a small set of features from idea to coded and tested functionality.
The first activity of each sprint is a sprint planning meeting. During this meeting the product owner and team talk about the highest-priority items on the product backlog. Team members figure out how many items they can commit to and then create a sprint backlog, which is a list of the tasks to perform during the sprint.
The details of the sprint planning meeting :
When : 2nd half of the 2nd week of previous sprint
Duration : 4 hours
Attendees : Developers Team, BA, PO, Managers
Conducted By : PM/Scrum Master
Agenda Items :
- Pending Activities: Discussion about any outstanding items from the previous sprint. Output – After discussion either the item is marked resolved/done or there is a takeaway / follow-up task assigned to somebody that will help close the pending item.
- Lessons Learnt : Lessons learnt from the previous sprint are captured (both +ve and -ve)
- Sprint Planning: For each of the stories in the product backlog for the upcoming sprint the following are discussed:
- § Resource assignment
- § LOE (hours)
- Review of Product backlog for forth coming sprints.
- Vacation List
On each day of the sprint, a daily scrum meeting is attended by all team members, including the Scrum Master and the product owner. This meeting is time-boxed to no more than fifteen minutes. During that time, team members share what they worked on the prior day, will work on today, and identify any impediments to progress. Daily scrums serve to synchronize the work of team members as they discuss the work of the sprint.
At the end of a sprint, the teams conduct a sprint review. During the sprint review, the team demonstrates the functionality added during the sprint. The goal of this meeting is to get feedback from the product owner or any users or other stakeholders who have been invited to the review. This feedback may result in changes to the freshly delivered functionality. But it may just as likely result in revising or adding items to the product backlog.
Another activity performed at the end of each sprint is the sprint retrospective. The whole team participates in this meeting, including the Scrum Master and product owner. The meeting is an opportunity to reflect on the sprint that is ending and identify opportunities to improve in the new sprint.
- Daily stand-up meeting (15 mins)
The Scrum Team has a daily stand-up meeting, lasting approximately fifteen minutes and facilitated by the Scrum Master. Each member of the team answers three questions in the Daily Scrum meeting:
1) What did you do yesterday?
2) What will you do today?
3) Are there any impediments in your way?
Main artifacts of a Scrum project
The primary artifact of a Scrum project is, of course, the product itself. The team is expected to bring the product or system to a potentially shippable state at the end of each sprint.
The product backlog is a complete list of the functionality that remains to be added to the product. The product backlog is prioritized by the product owner so that the team always works on the most valuable features first. Product backlog is a list of features to be built (often written in the form of user stories).
During the sprint planning meeting, team members create the sprint backlog. The sprint backlog can be thought of as the team’s to-do list for the sprint. The sprint backlog is the list of stories and tasks the team needs to perform in order to deliver the functionality they committed to deliver during the sprint.
Burn down chart is a run chart of outstanding work (or backlog). It is useful for predicting when all of the work will be completed. Updated every day, it gives a simple view of the sprint progress. It also provides quick visualizations for reference. The release burndown chart that shows the amount of work left to complete the target commitment for a Product Release (normally spanning through multiple iterations).