Thursday, February 7, 2008

SCRUM Process

Currently we are using SCRUM process in our company. SCRUM is a good software delivery mechanism but is not for every organization and does not focus on all aspects. SCRUM focuses on short sprints (as name suggests what can be achieved in short time - sprint focus on that).

While its an advantage to focus on only the planned sprint it fails in having a long term view.

A typical example would be a web company which wants to roll small features out quick.

Team chooses the duration of the Sprint 2 weeks, 3 weeks wutever works. Three key players are involved: Scrum Master, Team and Product Manager.

Product Manager is the person who gets requirements from sponsors and ships it out to SCRUM master.

SCRUM master is not a true Project Manager, is a facilitator, is a coordinator and believes in completing the task at hand (2 weeks sprint).

SCRUM teams participate in Sprint Planning meetings where it is decided what activities / features or stories (as they are called) will be included in current sprint.

And then there is Product Owner who can also be the Product Manager but is not an ideal case. Product Owner is the person who works with stakeholders directly and is responsible in making a call as to which story is important for his sprint etc. For the sake of this discussion lets forget the product owner and concentrate on our three players before.

So a Sprint starts with Sprint Planning meeting. At Sprint Planning meeting team has a list of proposed stories which should be included in current Sprint.

Scrum Master manages discussion and activities in planning meeting and updation in tools which can be used to manage this. SCRUM Master puts all these stories on a board under backlog. Now you pick first and ask the product manager what this story is about. Once you know wut its about you ask the team who wants to work on it. People raise hands and own the story (remember SCRUM is a democratic process and believes in team volunteering for work. Ultimate goal of the team is to complete all story points committed by team and everyone works to complete this). With person assigned to a story now is the time for estimation. You estimate in days or hours your choice but you can only pick numbers from Fibonacci sequence. i.e. 1,2,3,5,8,13 ......idea is to force people to estimate correctly . Story Points as they are called should include time required and complexity and thus making up total of 5 or 8 or 13. Once this is achieved other cards are picked up and you discuss all stories planned.
next critical step is to decide how many stories this sprint. For that history is looked at and number is called velocity. Velocity is the achieved story points for the team. On top of that you add a focus factor (typically for teams which has unplanned work, maintenance etc. ) And you get current velocity team can commit to. Suppose your past velocity was 18 and in current sprint you have 20 story points (for 4 stories) you need to check other factors (maybe you have an extra resource this sprint or you have one resource at 50%) With that you decide the stories you want to implement.

So suppose your past velocity was 18 and focus factor was 60% (achieved / planned = .6) then current planned velocity = 18*.6 = 10.8. Now you need to make a judgment call if you have team and resources to plan something like 18 or go by what numbers tell you.

With this you have a plan for 2 weeks and you focus on completing this. People who own a story focus on completing it and people who don't focus on helping others. This data is added into a tool (several are available in the market). And status is taken in daily scrums. Daily Scrum is an exercise where everyone stands up (therefore called stand up meeting) to keep focus, keep people active etc. and every team members gives status on 3 things: 1: What did they do yesterday, 2: What will they do today 3: Any Impediments.

You can also plan a weekly status meeting to have an overall status check. For reporting you can send out status emails if the tool you are using does not give enough. Some tools are good and some give good snapshot of burn down (stories used, actuals, remaining, discovered work etc.).

Stories not completed in current sprint go back to Product Backlog which is mast log of all activities / features.

Repeat the exercise for next sprint.

No comments: