Jul 15, 2010

Scrum (Software Development)

SCRUM is a methodology that is used by a team to manage development of features for a product, or generic software development.

In the scrum development process, it involves people of 3 main roles. Scrum Master(coordinator) , Product Owners (stakeholders/customers) and Team (analyst, designers, developers, testers).

It starts from the Product BackLog Listing, i.e. a documents that contains all features, enhancements, wishlist. That defines what are the necessary features are to be developed. This list have to contain rough estimates of the time required for development of these features. It should also contain the rough business value of the feature. It will give the product owner an idea/gauge of how must business value it will provide versus the 'cost' of developing the features. Allowing these features to be rated and prioritized in order.

A features of the highest priority in the Product Backlog, will be chosen by the product owner in a sprint planning meeting. The team will then decided how much can be accepted to be completed during this sprint. A sprint is typically a timed period when the team will develop the promised features. During this time, feature will be defined in detail of how the team will implement the features in a sprint backlog. Features will then be broken down into tasks, and small chunks of less than 16 hours of work each. These tasks are also ranked in the sprint logs by priority. The interesting thing is that the tasks are not assigned out. The team members will picked from this list based on priority and skill set for the task.

During these sprints, it relies on verbal communication, cross disciplined collaboration between the team. Hence the team needs to be on location to perform these sprints. Also a daily scrum needs to be held on the same time and location daily for a short 15 minutes period. Everyone in the team will answer the following questions:
  • What have been done yesterday
  • What will I do today
  • Is there any problems preventing me from completing my job today
When there are problems encountered by the team, the scrum master is to help facilitate and resolve any problems that are raised and get back to the team members.

A burndown chart needs to be maintained, showing the work left from the sprint backlog that the team can visually see to be aware of the progress to completion.
"A key principle of Scrum is its recognition that during a project the customers can change their minds about what they want and need (often called requirements churn), and that unpredicted challenges cannot be easily addressed in a traditional predictive or planned manner. As such, Scrum adopts an empirical approach—accepting that the problem cannot be fully understood or defined, focusing instead on maximizing the team’s ability to deliver quickly and respond to emerging requirements." - so very true


The process of selecting features from the product backlog for each sprint process will be iterated until the product backlog has been completely cleared.

No comments: