Project Postmortem

"Those that do not know history are doomed to repeat it."

It is important for each team member to take stock at the end of a project and review your project's history analyzing its positive and negative aspects. Typically such reviews are called post-project reviews or "postmortems". The goal of a postmortem is to draw meaningful conclusions to help you learn from your past successes and failures. Despite its grim-sounding name, a postmortem can be an extremely productive method of improving your development practices. This document should not attempt to assign blame for failure. In most cases, the team as a whole should accept responsibility.

For each project, you are to individually analyze your experience once you have turned it in and had a few hours to relax and reflect. You may meet as a team to refresh your collective memory about project's timeline and how specific key decisions were made, but the analysis itself should be written individually and submitted according to the guidelines online here.

What to Submit

Your analysis should be divided into three distinct parts: a technical evaluation of the project's code and design; an evaluation of the progress and decisions made by your team; and an attempt to grade your team's overall effort. Your analysis should be an honest, thoughtful reflection that aims to identify specific actions that either helped or hurt later in the process. Additionally, it can be used to demonstrate your knowledge of design concepts that may not be easily represented in other project documentation.

At least the following sections must be included in your analysis. Questions are provided to get you started thinking about what to consider within each section, you may of course include anything else you feel is relevant. In other words, do not be limited by these questions, but include them at least.

Technical Review

This first part should focus solely of the code and design of the project, analyzing both its strengths and weaknesses.

Time Review
Reflect on how you spent your time while working on this project. Start with the estimated time spent on project and project start and finish dates. Include how many hours on average you worked each day of the project and what you spent your time doing (i.e., one of coding new features, refactoring, testing, reading, designing, debugging, documenting, and meeting with group members).
 
Planning
Reflect on how your group planned this project. Start with your initial plan for the project.
Status
Analyze the design and coding details of your project. Look over the entire project and assess the following:
Conclusions
What conclusions can you draw from analyzing your code? List both successes and shortcomings in your design.
Future work
No project is ever completely finished. Document at least three parts of your project that still need fixing, that you wish you could understand better, or could be extended or made more flexible.

Team Review

This second part should focus on how the team worked together to work on the project, looking at it from the roles each person assumed in the team and how they contributed to the overall effort, not their personalities.

Description
Begin with a brief overview of your team (including outside people with whom you collaborated), detailing what roles each person played, how each role was selected, and for what packages of code each was responsible.
 
Planning
Document your initial thoughts about the team, including the initial meeting and plans to keep communication flowing with the team.
Status
Analyze how effectively your team worked together to complete the project.
Conclusions
What conclusions can you draw from analyzing your team's planning and communication? List both successes and shortcomings in your team.
Future work
It would be a great waste of time to create a beautiful project postmortem, archive it, and forget about it. You should develop an action plan that can be applied to your next project. Review your project history, reflect on the lessons you've learned, and specify new guidelines you personally plan to follow in the future.

Grading

Finally, based on your answers to the questions above, or the effort needed to discover the answers, grade your team's project (not necessarily their effort). This is primarily intended to see if our assessment meets your expectations, not to influence your grade. Please note that it is rare that everyone in the course gets an A+ on every project, so you should justify the grade you have assigned.

Examples

Here are some examples of analysis' from other projects not related to this course. These examples are not endorsed in any way, but are meant to serve as an example.

Resources

Here are some other resources available online about project postmortems.

Comments?