Agile Scrum 101 — Every detail covered in less than 5 minutes
The most important decision to make before starting any project is how to run the SDLC(Software Development Life Cycle), or how to approach the project as a team. A development methodology, in simple terms, determines how the actual tasks of a project are organised and carried out. Companies use a variety of methodologies to carry out projects.
Agile is a widely used method of project management in the modern software development industry and it is very active in most companies considering its advantages of quick feedback cycle via early stakeholder involvement, flexible deliverables, adaptability etc.
Below is the Agile Manifesto i.e. guidance for running Agile based Software projects(Reference: http://agilemanifesto.org/). Highly recommend to re read the Agile Manifesto and the principles behind it.
The principles behind the above Manifesto:(Reference: http://agilemanifesto.org/)
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity — the art of maximising the amount of work not done — is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
The most popular framework of Agile methodology is Scrum, which is used by a wide range of companies and had achieved excellent results.
Agile Scrum an iterative approach where a series of steps are repeated to iteratively improve and deliver the expected product.
It is a framework consisting of a set of processes that are followed by teams iteratively to deliver a product iteration.
Product iteration is not a complete end product but a version of a product that can be used by customers. This version may not contain all the features of an envisioned product but contain a subset of all features, hence this is called product iteration / product increment. Teams keeps creating these product iterations/increments and reach out to customers to get early feedback on the new features developed. As stakeholders or customers are involved at an early stage, this enables the team to deliver on appropriate expectations.
The set of processes followed by the project team to deliver a product increment/iteration are called as Scrum Ceremonies
Agile Scrum Ceremonies
Scrum is executed in what are called sprints, or short iterations of work lasting usually no more than two weeks. A sprint employs four different scrum ceremonies or regular meetings to ensure proper execution.
- Sprint planning
- Daily scrum/standup
- Sprint review
- Sprint retrospective
Sprint Planning: This meeting is conducted on the first day of sprint or ending day of previous Sprint. The team meets in this meeting and decides what needs to be delivered in the next two weeks (assuming Sprint duration is 2 weeks). The scope is clearly agreed and the team will be working on only the features/bug fixes/other-items which are also called as User Stories that are agreed in this meeting. Each user story is assigned to a single team member or multiple team members to ensure that everyone knows who is working on which story.
Daily Scrum/Standup: This is a daily meeting where the entire team meets and discusses the progress of the User Stories. The meeting will go round about the team and each team member will convey
- What he/she did yesterday
- What he/she will be working on today
- Any impediments/blockers for his stories
This meeting will/should/must last for only 15 min to get everyone on the team on same page
Sprint review: This is a meeting where the team invites the stakeholders/customers(if they directly work for one) or senior management and demo the work they shipped in the last 2 weeks(assuming sprint duration is 2weeks). This is usually conducted on the last day of the sprint. The attendees can provide feedback on the work about any improvement that can be done. Team makes a note of these in the form of user stories and tackles them in upcoming sprints.
Sprint retrospective: This is a post mortem for the last sprint to discuss on the below
- What went well?
- What did go well?
- Any improvements to be done in the process and action plan for the improvement.
Typical scrum life cycle will look
- Product owner keep adding new stories to the Product backlog.
- At the start of the sprint, the development team picks up the stories to be delivered for a sprint(eg:- for a duration of 2 weeks) in Sprint Planning meeting. This is called Sprint backlog.
- Scrum master facilitates the daily standup & development team meets everyday in that standup and discusses the progress and impediments.
- Scrum master helps the team in resolving impediments and limits changes in the scope of the work.
- By the end of the sprint development team completes the committed stories and demo their work in Sprint review and obtains feedback and tries to incorporate the same back into the Product backlog.
- Post Sprint review, the development team again meet in Sprint retrospective to discuss on “What went well”, “What didn’t go well” and discuss on action items to improve the process and efficiency.
Roles in Scrum
The roles described are not job titles or designations. They specify nature of work that is executed by an individual when working in an Agile scrum based project.
Product Owner: The person who is responsible and holds the vision of the product and ensure the right product is being delivered
- Holds the vision of the product
- Maintaining product backlog.
- Writing user stories and pertaining acceptance criteria.
- Ensures that the Product backlog is always maintained in priority order.
- Can accept or reject any user story
- Will work with users/customers or stakeholders of the project to ensure that the development team is delivering value or the right product.
Development Team: A team of individuals working together to develop and deliver the product increment. A development can be composed of developers, testers, UX designers, architects etc. The team is responsible:
- Deliver the work as planned in Sprint planning
- Meet everyday in Daily scrum/standup and discuss the progress and any impediments
- Conduct sprint grooming session to ensure the work is ready for next sprint
- Will be self-organising exhibiting complete accountability and autonomy
- Be part of Sprint review meeting and demo their work and obtain feedback
Scrum Master: The person who is responsible for gluing everything and ensuring the scrum is run well and team is self organising themselves and delivering product increment. He/She is not a manager of the team or team lead or project manager and is a servant leader(supportive style of leadership) encouraging the team to have autonomy and accountability. Scrum master help the product owner define value, the development team deliver the value, and ensure the scrum team’s velocity gets better.
- Facilitate daily standup and run the scrum
- Protects the team from external distractions and limit change of scope in the middle of the sprint
- Facilitate in resolving impediments faced by Development team
- Enables close cooperation across all roles and functions, addresses disobedience of scrum practices
- Generating velocity after each sprint and share report with Senior management and team to specify how well the team is doing
- Helps facilitate Sprint retrospective meeting to discuss the improvements and action items
User Story: A user story is an informal, general explanation of a software feature written from the perspective of the end user. Its purpose is to articulate how a software feature will provide value to the customer.User stories are often expressed in a simple sentence, structured as follows:
“As a [persona], I [want to], [so that].”
An example will look like — “As a user, I want to be able to recover the password for my account, so that I will be able to access my account if I forgot the password”
Acceptance criteria: Conditions that must be satisfied by the product or software to be accepted by stakeholders or customers. They are unique for each user story and define the feature behavior from the end-user’s perspective.This is expressed in Given-When-Then-And format.
Acceptance criteria for User Story “As a user, I want to be able to recover the password for my account, so that I will be able to access my account if I forgot the password”
Acceptance Criteria: “The user has navigated to the login page and selected the forgot password option. The user entered a valid email to receive a link for password recovery, then the system should send an email to recover the user password. The user links on the link in email and should be able to set a new password”
Product Backlog: This is a growing document maintained by Product owner which contains user stories to be implemented in a priority order. These user stories make up different features of the product
Sprint Backlog: This is a subset of product backlog, a set of user stories that are picked up by the team to be delivered in a sprint which may be 2 weeks
Sprint grooming session: This is a meeting in which the development team meet and breakdown the user stories in further tasks so that each of the development team members work on the pertaining tasks and deliver the user story. Product owner will also be part of this meeting to clarify any query on the story. Eight hours is the recommended time for a sprint grooming session for a 2 week sprint. Essentially team will do this session in the ongoing sprint which will facilitate the tasks for next sprint
Increment: A version of product that is delivered after a sprint
Estimate: Each user story needs an estimate by when it will be completed and delivered. Different mechanism are used by teams to designate estimates and usually measured in story points(SP). Eg:- T-shirt sizes S(1–2SP),M(2–3SP),L(3–4SP),XL(4–5SP),XXL(5–6SP). SP can be considered as a day for better understanding
Velocity: Average amount of product backlog turned into increment of product during sprint and is measured in story points. Each sprint development team delivers X number of story points. Velocity can be average of last 6 sprints delivered story points. Scrum master will ensure that team delivers not less than velocity and ensure this velocity increase sprint on sprint by improving the processes
Impediment: Any blocker or hindrance in developing or completing a user story can be called as Impediment