The purpose of the Retrospective is to help teams to continuously improve their processes and work habits. Do not think of the Retrospective as a post-mortem but rather as a session during which to identify one point of improvement that the team can act on in the very next iteration.
Agile teams should hold a Retrospective at the end of each Iteration, or Sprint. This retrospective should be conducted by the team, for the team. It is not a venue for getting feedback from customers or other stakeholders–there are other events for that. Holding a retrospective at the end of Releases is also beneficial, as well as at the end of the project.
Ideally, the team should identify one point of improvement during the Retrospective and follow up on it during the very next Iteration (Sprint). This is called the Retrospective Objective, and it keeps the team on the track of continually improving its processes. The practice of choosing just one improvement, protects the team from the burden of trying to fix everything at once.
Retrospectives should never be used to criticize individuals or place blame. While your team is going through the forming-storming stages—and thereafter when necessary—it's helpful to start off by displaying some version of the Retrospective Prime Directive, such as this one:
- Book: Agile Retrospectives: Making Good Teams Great (Amazon)
- Why the Retrospective is Not a Lessons-Learned Meeting