Friday, January 26, 2007

Agile Restrospectives – Making Good Teams Great!

Agile Retrospectives: Making Good Teams GreatEsther Derby and Diana Larsen gave a presentation at Google Tech Talk about agile retrospectives. They explained how retrospectives are tied to the agile practices of inspect and adapt. It fits into the feedback cycle, looking at what you are doing, see if it is working or whether you need to do some changes and try things in a different way. Retrospectives address effectiveness of methods, engineering practices and team work.

They then describe 5 steps of retrospectives:

1. Set the stage: get everybody’s head in the game.

2. Gather data: what happened and how we responded.

3. Generate insights: make meaning of the data.

4. Decide what to do: same, differently, or try new things.

5. Close the retrospective.

Behind Closed Doors: Secrets of Great Management (Pragmatic Programmers)Retrospectives are ongoing and a linked process that flows naturally at the end of each iteration and into the planning part of next iteration. People think that they don’t have time for all of this, but these 5 stages can be done in about an hour. They recommend that you don’t skip these stages as you might compromise the results.

Next they cover each stage in details:

1. Set the stage: Specify a goal on what we are going to look at and an agreement on how we will work together.
  • a. Have a goal like let’s look at what’s working and what’s not working. This is good to start out with, but after a while it becomes boring. So then set a new goal like let’s look at how well we are applying coding standards, refactoring, xp practices, etc…
  • b. Set a working agreement: Inquiry rather than advocacy, Dialogue rather than debate, Conversation rather than argument, Understanding rather than defending

2. Gather Data: Think together as a group and look back over the iteration. Create a timeline and put up events that are important. Try to have a common understanding of the what went on and get a fuller picture of what happened. Also add an emotional graph tracking energy (high, medium, low) along with the events (avoid using the word ‘feeling’).

3. Generate Insights: People can look at the same event and see it very differently. Perform analysis and try to see any patterns or underlying causes, why the change did not work, why are things the way they are and what should we change. Track what went well, what did not go well, ideas of things we can do differently, and appreciation for good work (bouquet)

4. Decide what to do: What concrete actions do we want to take (stop doing something, refine or adjust a process, or pay attention to things we are taking for granted to ensure continued success.) Ask the team what we can do in the next iteration to make things better. Make sure you do not take on too much. Pick only one or two things that team thinks will help in next iteration (determined by dot voting). Also, understand that depending on how you ask the questions, you can get different result. Example, asking what is most important for us to do? Vs. What will have the biggest effect? Or what do we have most energy for? In the first case, things might not get done while in the second case there will be more commitment from the team?

5. Close Retrospectives: It is important to do this decisively.

  • a. Acknowledge that we are at the end.
  • b. Appreciate the hard work.
  • c. Decide how you will follow up. This is very critical.
  • d. Do a retrospective on the retrospective: Measure return on investment for one hour of retrospective. Rate the value of the meeting (scale 0-4) by polling team and asking how can the meeting be more valuable.
  • e. Close.

Esther and Diana then cover some benefits of retrospectives:

1. Improved productivity: team members understand how things fit, what the work is, and what they need to do.

2. Improved capability: Team members get different perspective on what happened in the iteration. It enhanced sharing and learning.

3. Improved quality: All feedback loops help improvement in quality both in the product and how team operates.

4. Increase capacity: Process improvements lead to increase in capacity.

5. High trust and moral: Taking regular time outs to examine the process builds trust and high moral.

Next they discuss what is needed to support change:

1. Reinforcement: Have the goal in front on them and know why we are doing the change.

2. Empathy: Acknowledge that change can be difficult.

3. Learning Opportunities: Learn and incorporate things into the way they work.

4. Practice Opportunities: Like anything else, need to practice before becoming good.

5. Reminders: Things will slide without reminders.

6. Sharing responsibility: Need to avoid having one person getting overwhelmed and having nothing get done. Need to have an environment where the team believes that they can act on their own and make their work life better.

Esther and Diana wrap up by sharing some of their favorite retrospectives as well as some of their low points.

This presentation is available on youtube at