Sunday, April 10, 2011

SECA 5: Production - SCRUM an Agile Methodology


My company is currently developing a newer version of our core product and we have adopted the agile development methodology called SCRUM. Wikipedia defines Scrum "as an iterative, incremental methodology for project management often seen in agile software development, a type of software engineering". Scrum is unique because it introduces the idea of "empirical process control", that is Scrum uses the real-world progress of a project (not best guess) to plan and schedule releases.

In Scrum, projects are divided into sprints, which are typically one to three weeks in duration. At the end of each sprint, stakeholders and team members meet to assess the progress of a project and plan its next steps. This allows a project’s direction to be adjusted or reoriented based on completed work. The scrum process makes a lot of things visible that were not visible before. It records a fine-grained list of tasks that the team is doing on a daily basis in the sprint backlog. During a sprint, no one is allowed to change the sprint backlog, which means that the requirements are frozen for that sprint. Development is timeboxed and the sprint must end on time. If requirements are not completed for any reason, they are left out and returned to the product backlog. A sprint burn down chart is used to display the remaining work in the sprint backlog and is updated every day to give a simple view of the sprint progress. After a sprint is completed, the team demonstrates how to use the software.

Scrum has three fundamental roles: Product Owner, Scrum Master, and Team Member. The Product Owner is responsible for communicating the vision of the product to the development team. The Scrum Master acts as a liaison between the Product Owner and the team. The ScrumMaster does not manage the team. Instead, he or she works to remove any impediments that are obstructing the team from achieving its sprint goals while making sure its successes are visible to the Product Owner. The ScrumMaster also works to advise the Product Owner about how to maximize ROI for the team.
For software projects, a typical team includes a mix of software engineers, architects, programmers, analysts, QA experts, testers, and UI designers. For each sprint, the team is responsible for determining how it will accomplish the work to be completed. This grants teams a great deal of autonomy, but that freedom is accompanied by a responsibility to meet the goals of the sprint.

Some of the salient features are iterative development, high level accountability, small teams, regular builds, configuration management and frequent monitoring. However like any other system it has its own drawbacks; decision-making is entirely in the hands of the teams and there has to be constant, hands-on management.

No comments:

Post a Comment