<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:ContentDescription xmi:version="2.0"
    xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.5/uma.ecore"
    xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.0" xmi:id="-i-UeSpBxKd6YtGLz_NW8GQ"
    name=",_277QEA4gEdy63f1yVoPyfA" guid="-i-UeSpBxKd6YtGLz_NW8GQ" changeDate="2007-06-01T15:50:36.302-0700">
  <mainDescription>&lt;h3> Establish norms and agreements&lt;/h3>&#xD;
&lt;p> Begin the Project Retrospective by establishing the duration, goals, and expectations &#xD;
  of the session. The following are typical durations for various Retrospectives: &#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &#xD;
  &lt;li>&lt;b> Iteration: &lt;/b>2 to 4 hours &lt;/li>&#xD;
  &lt;li>&lt;b> Incident: &lt;/b>15 to 45 minutes &lt;/li>&#xD;
  &lt;li> &lt;b>Project: &lt;/b>1 to several days &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    Select the facilitator of the Retrospective (See &lt;a class=&quot;elementLinkWithType&quot; href=&quot;./../../../openup/guidances/concepts/retrospective_B003F386.html&quot; guid=&quot;_2PfbIA4QEdy2q5zsU8WDnA&quot;>Concept: Retrospective&lt;/a> for more detail on the facilitator).&#xD;
&lt;/p>&#xD;
&lt;p> If the team is gathering to conduct the first Retrospective, the group will &#xD;
  need to create the cultural norms that will be used in the future Retrospectives. &#xD;
  If the team is regrouping to conduct a Retrospective, the existing cultural &#xD;
  norms will be used. Norm Kerth’s Prime Directive is an excellent and widely &#xD;
  referenced guiding principle for each Retrospective: &lt;/p>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
    &#xD;
  &lt;p class=&quot;quote&quot;> &lt;strong>Prime Directive&lt;/strong>: “Regardless of what we discover, we understand &#xD;
    and truly believe that everyone did the best job they could, given what they &#xD;
    knew at the time, their skills and abilities, the resources available, and &#xD;
    the situation at hand.” [&lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../openup/guidances/supportingmaterials/references_6CCF393.html#KER01&quot; guid=&quot;_9ToeIB83Edqsvps02rpOOg&quot;>KER01&lt;/a>] &#xD;
  &lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;p> Remind the team that the Prime Directive and cultural norms of the Retrospective &#xD;
  are in place to establish an environment in which the members can safely expose &#xD;
  sensitive topics and manage meaningful, if provocative, dialogue. The cultural &#xD;
  norms guide the team by a “social contract” that clearly outlines the “team &#xD;
  values and working agreements” that have been established by the team. The social &#xD;
  contract needs to include organizational value statements that govern acceptable &#xD;
  behavior and interactions, supplemented by inviolable principles that govern &#xD;
  the conduct and ethics of the team. The team must establish these rules of group &#xD;
  engagement before the Retrospective continues to the core of the group’s intended &#xD;
  gathering. Examples of working agreements include: tardiness is not acceptable; &#xD;
  mobile phones must be powered off during the session; all participants must &#xD;
  be in attendance throughout the duration of the Retrospective or ask permission &#xD;
  from the group for early departure; all opinions are welcome; the team must &#xD;
  strive for healthy, high-quality interaction. &lt;/p>&#xD;
&lt;p> The team’s working agreements (and&amp;nbsp;the Prime Directive statement) should &#xD;
  be displayed prominently in the Retrospective session, so that they are clearly &#xD;
  visible to all members of the team and, if required, easily accessible so that &#xD;
  the team can edit the content. After it is defined, future Retrospectives can &#xD;
  begin with a review of these working agreements. &lt;/p>&#xD;
&lt;p> After the team has established a safe environment in which to conduct the &#xD;
  Retrospective, the facilitator of the Retrospective should elicit participation &#xD;
  from the group, thereby granting tacit permission to members who are hesitant &#xD;
  to participate immediately. &lt;/p>&#xD;
&lt;h3> Collect and analyze data &lt;/h3>&#xD;
&lt;p> The team begins this step of the Retrospective with a review of the meaningful &#xD;
  characteristics of the iteration, release, incident, or project period. The &#xD;
  focus of the team’s work in this step includes: critical developments, notable &#xD;
  discoveries, work completed, project metrics (velocity, number of defects, and &#xD;
  so forth), and review of project artifacts (requirements artifacts, project &#xD;
  plans, and such). Encourage the team to capture all information (project data, &#xD;
  opinions, and so on) by using various tools (white boards, charts, timelines) &#xD;
  that provide a visual representation so that the team can identify relationships &#xD;
  and emerging patterns. &lt;/p>&#xD;
&lt;p> The team uses guiding questions to collect and analyze meaningful project &#xD;
  data. You can use these examples of key questions to elicit relevant information: &#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Were the defined goals and objectives met? Did the release meet its functionality and quality goals? Did the&#xD;
        release meet performance and capacity goals?&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Were risks reduced or eliminated? Can we identify new risks?&#xD;
    &lt;/li>&#xD;
  &lt;li> Were all planned work items addressed? What was the team’s velocity relative &#xD;
    to the plan? &lt;/li>&#xD;
    &lt;li>&#xD;
        Did the end users provide favorable feedback on what we built in this iteration?&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Are changes to the project plan required?&#xD;
    &lt;/li>&#xD;
  &lt;li> What portion of the current release will be used to establish the baseline? &#xD;
    What portion will need to be reworked? &lt;/li>&#xD;
  &lt;li> Have there been external changes, such as changes in the marketplace, in &#xD;
    the user community, or in the requirements? &lt;/li>&#xD;
  &lt;li> Was the development process appropriate? How can it be fine-tuned for the &#xD;
    specific needs of this project? &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p> The team has generated a list of candidate topics to focus on for its collective &#xD;
  inquiry, or heightened analysis. The team’s methods of analysis need to facilitate &#xD;
  a deepening understanding of the events characterizing the iteration, incident, &#xD;
  release, or Project Retrospective. The team will be evaluating these driving &#xD;
  factors, which ultimately documents a roadmap for the next cycle: &lt;/p>&#xD;
&lt;ul>&#xD;
  &lt;li>&lt;b>Success: &lt;/b>“What worked well for us during the past iteration (or project &#xD;
    or phase)?”&lt;/li>&#xD;
  &lt;li>&lt;b>Failure: &lt;/b>“What did not work well for us during the past iteration &#xD;
    [or project or phase)?”&lt;/li>&#xD;
  &lt;li>&lt;b>Opportunities for improvement: &lt;/b>“What should we do differently, or &#xD;
    what improvements should we undertake during our next iteration (or project &#xD;
    or phase)?”&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p> With increasing emphasis, the thread of team collaboration continues throughout &#xD;
  the Retrospective, thereby fostering an environment conducive to candid, unimpeded &#xD;
  examination by the team -- a rigorous style of examination that will be required &#xD;
  to unearth the details lurking in the interactions of the team, the conditions &#xD;
  of the project, fortuitous events, failures, risks, and examples of flourishing &#xD;
  success. &lt;/p>&#xD;
&lt;p> After the team has collected and analyzed the key data in the Retrospective, &#xD;
  the team will have evaluated key project content. For each item evaluated, they &#xD;
  will have established a root cause. The team will know what worked well, what &#xD;
  did not, and what to do differently this time, so they can carry forward a list &#xD;
  of suggested improvements that will be prioritized by the team. &lt;/p>&#xD;
&lt;h3> Set priorities&lt;/h3>&#xD;
&lt;p> By referencing the project data collected and analyzed in the Retrospective, &#xD;
  the team now creates a list of suggested improvements, assigning a priority &#xD;
  to each item on the list. &lt;/p>&#xD;
&lt;p> The selection of improvements should be limited to a subset that will be applied &#xD;
  in the next iteration cycle. This list should be considered as input to update &#xD;
  the next Iteration Plan, so you can ensure an integrated relationship between &#xD;
  the changes identified in the Retrospective and the normal course of the team’s &#xD;
  work plans. &lt;/p>&#xD;
&lt;p> Get commitment from members to complete, the suggested improvements that have &#xD;
  been chosen for application in the next iteration cycle. The visibility and &#xD;
  commitment among the members of the team imbue a sense that the Retrospective &#xD;
  was worthy of the team’s investment of time and that the results of the work &#xD;
  on the Retrospective will be tracked in the next iteration cycle. &lt;/p>&#xD;
&lt;p> Maintain a backlog of the suggested improvements that were not chosen for &#xD;
  the next iteration cycle. This will preserve the work of the Retrospective. &#xD;
  The selected content will be available for convenient access and monitoring &#xD;
  for progress, and the unselected items will be available for consideration during &#xD;
  future iteration cycles. &lt;/p>&#xD;
&lt;h3> Conclude and document the process&lt;/h3>&#xD;
&lt;p>&#xD;
    The team’s honed methods of investigation and analysis&amp;nbsp;are now applied to the Retrospective itself. During the&#xD;
    evaluation of the Retrospective, the team considers the moments of empowering thought and interaction, considers ideas&#xD;
    for improving future Retrospectives, revisits the team’s social contract, extends appreciation throughout the group,&#xD;
    and preserves the discoveries of the team (for example,&amp;nbsp;through the use of Retrospective documentation&#xD;
    or&amp;nbsp;pictures from a digital camera taken during the Retrospective).&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
