Tuesday, May 03, 2011

LEARN AND IMPLEMENT OF SCRUM


SCRUM IMPLEMENTING:  



What Is Scrum? (Agile)



What Is Scrum? 




The Scrum methodology of agile software development marks a dramatic departure from waterfall management. 

In fact, Scrum and other agile processes were inspired by its shortcomings. 

The Scrum methodology emphasizes communication and collaboration, functioning software, and the flexibility to adapt to emerging business realities — all attributes that suffer in the rigidly ordered waterfall paradigm.


SCRUM Over View in Nut Shell:



From WIKI, Scrum is an iterative incremental framework for managing complex work (such as new product development) commonly used with agile software development. Although the word is not an acronym, some companies implementing the process have been known to spell it with capital letters as SCRUM. This may be due to one ofKen Schwaber’s early papers, which capitalized SCRUM in the title.[1]
Scrum is an art to manage and execute the projects. Scrum guide us how we can utilize the team strength in best manner to make small and quick deliveries by considering client priorities.
Earlier we used to follow the waterfall model. This model was good to cater to stable requirements when client was not having very complex and changing requirements. But as we grow, client becomes more technical and start expecting more from the software. This results in more complex requirements and more quickly changed requirements. Here comes the SCRUM to manage these complexities. So SCRUM
  • Is an art to manage and execute the projects
  • Asks client to prioritize the requirements based on business demand
  • Asks to plan as per client priorities
  • Asks team to make quick deliveries as per business priorities
  • Asks team to meet daily to have a quick status call with each other
  • Advocates empowerment of team rather than control over the team, i.e. share the responsibilities with the team. If team share the responsibility of planning, then it will also share the responsibility for delivery
  • Advocates coaching over bossing
  • Advocates code over documentation
  • Assumes that every team member is mature enough to understand the responsibility and hence team members can choose and own the task
Any person give his best when he or she owns any work by heart, and he can own any work by heart only if he own any work by him/herself  not by assignment. Scrum asks to take benefit of this concept and hence ask to empower the team to plan and choose the task themselves.
Scrum defines three roles for the team members. These roles are divided in two roles, pigs and chicken. Pigs are those who actually works in the project development and so are directly involved in the development. Chicken are the person who are not participating in the development process.
  • Product Owner
    • Product Owner represents the clients. He helps in requirement definition and setting the priorities for deliveries.
    • Product Owner comes under chicken, once he gives the requirements and set the priorities for the deliveries.
  • Team member
    • All other members of the team (developers, testers, designer, analyst etc) except Scrum Master
  • Scrum Master
    • Scrum Master helps the team to follow the Scrum and to follow the set principles for SCRUM.
    • He maintains the process typically like a project manager.
    • It works like a sheep dog who help the herds to be in right direction and save them from external threats.
    • Scrum Master is a person who is highly committed to the team and always works for their growth
    • Scrum Master does not exercise the authority but just facilitates the team members
So team members and Scrum Master comes under ‘Pig’ group and Product Owner, Manager and other stake holders come under ‘Chicken’ group.
Scrum has following important terms
  • Product Backlog
    • It is a list of all the requirements/features which need to be implemented to complete the product.
    • Product owner defines the product backlog and prioritize the requirements with the team
  • Release
    • These are the releases of product to client
    • Team select some of the features form the product backlog with Product Owner and plan to delivery these.
    • This plan is called release plan
  • Sprint
    • These are the internal releases
    • Team select some of the features form the product backlog and plan to complete these in a specific time duration. Feature selection is made after considering the total time duration of Sprint.
    • Sprint durations can not be extended. These are strictly fixed.
    • These helps to judge the outcome of efforts in a small period of time and test the outcome
    • Duration can be up to 1 month
  • Sprint Backlog
    • It is a list of all the features which team choose to complete in current sprint
  • Burn Down Chart
    • It is a chart which shows that how much work is still pending on date from the decided work of the Sprint or Release
Scrum has following important meetings
  •  Daily Scrum
    • It is a meeting where all the team members (generally all PIG) meet once in a day.
    • There may be Chickens in the meeting, however only Pigs are allowed to speak.
    • The meeting time and venue should be fixed.
    • Daily Scrum Meeting is the responsibility of all the team members.
    • Every member should explain three basic questions
      • What did he/she achieve yesterday
      • What is he/she planning for today
      • Any issue
  • Sprint Plan Meeting
    • It is called to plan the sprint with some doable feature set as per client priorities
    • Whole team should participate in th meeting
    • Divide the work among the team members
    • Team estimate the efforts required and allocate the work among them
    • The limit is of 15 minutes
  • Sprint Review Meeting
    • It is held after every sprint to review the outcome of sprint
    • Whole team attend the meeting with Product Owner and analyze the outcome of Sprint
    • Gaps used to be analyzed from the planning and pending items shift for the next sprint
    • The limit is of four hours
  • Sprint Retrospective meeting
    • It is held after sprint execution
    • Whole team sit together and try to learn from the experiences of the sprint
    • It helps to improve the processes in next sprint
    • The limit is of three hours
Scrum team should have ideally up to 7 members as these much members can have good co-ordination with each other as a team. Co-ordination and responsibility sharing is the key of SCRUM.
A few points to consider:
  • Regular Scrum Meetings
  • Daily Scrum should not be more than 15-20 mins
  • No one is authorize to ask the team members about three magic scrum meeting questions, but every team member should explain these him/herself.
  • Sprint duration MUST not be extended
  • Sprint review and retrospective meetings should be held on time and their outcome should be noted down
  • Scrum Master should save the team from external threats and external interventions.