Agile Development with Scrum
Recently, I have been reading up on Scrum and i read Agile Software Development With Scrum by Ken Schwaber and Mike Beedle. I thought I would post my notes from reading that book over here.
Scrum Master - responsible for success of scrum
Product backlog - evolving, prioritized queue of business and technical functionality that needs to be developed into a system.
Scrum Teams - Commits to achieving a sprint goal. The team is accorded full authority to do whatever it decides is necessary to achieve the goal.
The product backlog is defined and maintained by one person, not a committee. This person is the product owner. The product owner sets the priority for each item in the product backlog and creates estimates on time for each item by talking to the people that know the most about that item. Once this is done, the scrum teams choose items off the product backlog list that they think they can implement in their sprint. This should usually be the top items in the priority list. Scrum master is the liaison between management and the scrum team. He drives the scrum. The scrum master drives the scrum, but does not interfere with the scrum team's day to day work. The team has full powers to implement features any way they deem fit.
There should be one product backlog list per product regardless of the number of teams working on the product. Scrum teams select items from the product backlog list depending on their areas of expertise. Co-ordinate work across different teams with a scrum of scrums. Scrum masters from different teams meet to have a scrum.
Scrum teams should be about 6 - 8 people. Scrum teams should be cross functional. This team is responsible for doing all of the analysis, design, coding, testing and documentation. Commitments on the amount of work done in a sprint need to come from everyone in the scrum team. A third person should not determine how much work the scrum team needs to do. It has to be done by the scrum team.
There really needs to be a common work environment for scrum teams.
Daily scrums should be used to answer only three questions: What did you do since the last daily scrum (only things that pertain to the scrum/sprint and only an overview), what you are planning to do before the next daily scrum and what are the impediments.
Scrum Teams meet with the scrum master, management and product owner to figure out what it is going to build for the next sprint. The team then meets among itself to figure out how it is going to build those product backlog features. Together, these two meetings form the sprint planning meeting. At the end of this meeting we need to have a specific sprint goal. This needs to be properly defined and cannot be vague. In the second meeting the scrum team meets and decides on the sprint backlog list. This is the list of tasks that will accomplish the items the team has agreed to complete for the sprint. Each of these tasks should take somewhere between 4 - 16 hours each.
Scrum Values:
Scrum is based on a set of fundamental values.
- Commitment: Be willing to commit to a goal. Scrum provides people all the authority they need to meet their commitments.
- Focus: Do your job. Focus all of your efforts and skills on doing the work that you have committed to doing. Don’t worry about anything else.
- Openness: Scrum keeps everything about a project visible to everyone.
- Respect: Individuals are shaped by their background and their experiences. It is important to respect the different people who comprise a team.
- Courage: Have the courage to commit, to act, to be open and to expect respect.
- Venkat