Retrospectives

The hardest, most important agile practice

Frazz Oct 8, 2023
Frazz Oct 8, 2023

Retrospectives (retros)

The obvious part

  • Look at what happened
  • Figure out how to do better

Retrospectives

Why they don't work

  • Gut feelings
    • "Our codebase sucks!"
  • Misdirected focus
    • "Attendance at swarms sucks!"
  • Blame
    • "That's the third time you've broken the app!"
  • Aspirational not operational proposals
    • "Ensure all important requirements identified"
  • Cures worse than the disease
    • "Everyone who is late pays a buck per minute."
    • "All code has to be reviewed by all team members before committing to main."
  • Useless metrics
    • "Tardiness is down 20%"
    • "Lines of code written is up 25%"

Continual Product Development

build-measure-learn loop

Continual Team Development

change-measure-analyze loop

Retrospectives

Key components

  • Focus on metrics that matter.
    • Value delivered, morale, productivity
  • Get data!
  • Experiment. Try a small change in process.
    • Useless: "Test more". This is a goal. How?
    • Helpful: "Add 10-minute test time to swarm agenda". This is a process change

What are good changes to propose?

Common Agile Changes

  • Acceptance tests
  • Backlogs
  • Burnup / burndown charts
  • Continuous deployment
  • Continuous integration
  • Daily stand-up
  • DTSTTCPW
  • Feature teams
  • Four-panel Storyboards
  • Information Radiators
  • Iterations
  • Niko-niko charts
  • Parking lot
  • Plan B
  • Post-It notes
  • Refactoring
  • Retrospectives
  • Scenarios
  • Story points
  • Swarming and pairing
  • Taskboards
  • TDD
  • Technical spike
  • Timebox
  • Transparency
  • User stories
  • Velocity
  • Vertical slices
  • Wideband polling
  • YAGNI

Anti-Agile Techniques

  • BDUF
  • Non-colocated teams
  • Scheduled milestones
  • Silos
  • Waterfall
  • Weekly task assignments

Underlying Agile Themes

  • Deliver value early
  • Define by story
  • Timebox
  • Defer commitment
  • Slice
  • Make it visible
  • Make it testable
  • Minimize work in progress
  • Minimize non-production

Getting Data (pt 1)

Weekly Self and Team Reflections

Getting data (pt 2)

  • Leverage existing data streams
    • Commit data (E.g., the Commit Log Analyzer )
    • Make commits more useful:
      • Tag commits by common Github tags: new feature, enhancement, bug fix.
      • Add collaborators to commit messages
  • Brief records at each swarm.
    • Who paired with whom on what
    • Mood chart at end of each swarm

Further reading