Wondering on how to estimate a set of business requirements into one or more Agile SCRUM Sprints? Go on reading further and let me know what you think.
If you are planning to work/develop software based on Agile SCRUM development model and are looking out for an estimation model, here it goes.
Quick Overview on Agile SCRUM
Before I go into presenting the model, let me present a quick introduction to Agile SCRUM development model.
Agile software development is a set of software development methods that are based on iterative and incremental method, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. Following is taken from Agile Manifesto website. Also, check some of the twelve principles of Agile development methodologies:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Scrum is an iterative and incremental agile software development framework for managing software projects and product or application development. Its focus is on “a flexible, holistic product development strategy where a development team works as a unit to reach a common goal” as opposed to a “traditional, sequential approach”.
Simply speaking, the way in which this works is that there are one or more SCRUM teams handling one or more application development. This team works in a SCRUM model thereby carrying out different activities/ceremonies such as pre-planning, planning, implementation, testing, and retrospectives. In planning phase, the team analyses the story and, estimate the complexity of the stories in form of points described below.
In my experience, SCRUM has been implemented in one of the three different sprint duration such as a 2-week, 3-week or a 4-week sprints. In these sprints, the developer and testers work together with a Scrum master and a product owner/business analyst on a set of stories (features/enhancements) taken from product backlog. Each of the story (from coding perspective) is estimated in form of following enumerations in points:
- 1 point: 1 point stories are simplest of all (very low complexity) in the sense that all issues are known, and the story implementation would essentially mean small modifications. Generally, 1 point story can be completed by one person alone and may not need team intervention. These stories can be completed a maximum of 1-2 days.
- 3 points: 3 points stories are of low-to-medium complexity where most of the issues are known. These stories can be completed in a maximum of 3-5 days (1 week). Generally, 3 points stories can as well be completed by one person alone without any intervention from the team.
- 5 points: 5 points stories are considered of medium complexity where only some issues have been identified and which would lead to large changes. These stories can be completed in 5-15 days time frame (2-3 weeks). These stories may require more than one person to work on it.
- 8 points: 8 points stories can be considered to be of very high complexity. These stories are the ones where stories have been understood, however, issues are yet to be identified. These stories may need 2.5 – 4 weeks to be completed. These stories may look like major feature request or major design change etc.
Once you have broken down the stories into complexities and estimated its completion in form of points, it is time to determine how many developers may be needed to release a set of requirements in a given time frame. This largely depends upon the velocity of individual developers’ velocity. Velocity is average number of story points that a developer can deliver in any specific sprint.
Assuming that developers have a velocity of 5 points in a 2 week’ sprint, and your set of requirements got estimated to a total of 120 story points, and you got 4 developers, following will be number of 2-weeks sprints:
120 / (4 developers x 5 points) = 6 sprints
Thus, the 120 points worth business requirements can be delivered in 6 x 2 = 12 weeks which is equivalent to 3 months.