Wednesday, April 27, 2011

My experience with Agile SCRUM approach.

What is Agile methodology?

Agile means "fast". Agile approach to software development is increment/iterative in nature. This allows teams to develop a piece of functionality fast and more customer satisfactory way. Scrum and FDD (Feature Driven Development) are examples of  Agile approach to Software development.

What is Scrum?

Scrum is Agile methodology for Software development. Scrum is based on distinct roles (Product Owner, Scrum Master and the Team). The team work on Sprints of a release. Each sprint can be of 2 weeks, 3 weeks or maximum 1 month.

What are different roles in Scrum?

Product Owner:

  • Considered to be a virtual project manager. Primarily interacts with customers and key stakeholders to prioritize the Product backlog.
  • Responsible to plan a product release. Present walk through to the team about Sprint Stories.
  • For the team Product Owner is the Domain expert.
Scrum Master:
  • Facilitates for the team so as any hindrances or hurdles can be removed.
  • Coaches team about the Scrum process and ensures team follows the process correctly.
Team:
  • Team consists of Developers, QA and Architect.
  • For any requirements clarifications team interacts with assigned PO.
  • For any improvements in process and impediments the team interacts with the Scrum Master.
  • Ideally Agile team is Self-organizing means the team knows their Strength and flexible enough to accommodate new challenges within the team itself.

.
Sprint Cycle:

  • Each project/product release consists of several sprints.
  • A sprint can be 2 weeks to maximum 1 month.
Sprint Planning meeting:
  • At the beginning of the Sprint, the team participates in Sprint planning meeting along with Product Owner, Scrum master and other key stakeholders.
  • The purpose of the Sprint planning meeting is to finalize the Sprint backlog (The list of User Stories team will deliver in this sprint).
  • The team after understanding the User stories from PO; estimates the Tasks for each of the Stories and commits to the PO for this Sprint delivery.
During the Sprint:
  • Team works on their Sprint work. Team is Self-organizing so they pick the tasks themselves.
  • At the end of the day's work team updates the status in Agile Project management tool.
  • Scrum master prints the Burn down chart for the team so as to reflect how team is doing.
  • For any clarifications team interacts with PO.
  • There is Daily Stand up meeting of 15 mins to know what all each Team member is currently working on, what he has done/accomplished and any impediments which are open.
Sprint Review meeting:
  • At the end of Sprint cycle the team present the functionality they have develop to the PO and other Stakeholders. 
  • Team review their work for the current sprint as part of Sprint Retrospective. Agile Scrum works on the basis of "Inspect and Adapt" approach.
Agile Tools:
  • I have used VersionOne and Rally for same.
My Suggestions:
  • Scrum Master should not interfere in Tasks estimation or try to influence team during the Sprint planning meeting.
  • Each team member should participate actively during Tasks estimation.
  • Sprint planning meeting is the key where any items not cleared should be clarified because based on this planning meeting only team commits its work to PO.