<?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.4/uma.ecore"
    xmlns:rmc="http://www.ibm.com/rmc"  xmlns:epf="http://www.eclipse.org/epf"
    epf:version="1.2.0" xmi:id="-e26WOHRbTVQrDssK5zijVA"
    name="self_organize_work_assignments,_rmBEkJjsEduad8I_c-ogIA" guid="-e26WOHRbTVQrDssK5zijVA"
    changeDate="2007-01-05T06:07:49.299-0800" version="1.0.0">
  <mainDescription>&lt;p>&#xD;
    A &quot;self organizing team&quot; has the authority to choose the work that it will perform and the responsibility to do that&#xD;
    work in the way that it chooses.&amp;nbsp; Important aspects of a self organizing team&amp;nbsp;are:&#xD;
&lt;/p>&#xD;
&lt;ol>&#xD;
    &lt;li>&#xD;
        The team selects its own work. At the beginning of an iteration the team collectively selects the &lt;a href=&quot;./../../../openup/guidances/termdefinitions/work_item_EE5CE155.html&quot; guid=&quot;_jyVgcEvKEdunZcj9T5hrMQ&quot;>work item&lt;/a>s from the prioritized &lt;a href=&quot;./../../../openup/workproducts/work_items_list_39D03CC8.html&quot; guid=&quot;_rGNWsCbSEdqh1LYUOGRh2A&quot;>Work Items List&lt;/a>. Work selection is performed within given constraints, including&#xD;
        the priorities set by &lt;a href=&quot;./../../../openup/roles/stakeholder_9FFD4106.html&quot; guid=&quot;_dTa6gMAYEdqX-s4mWhkyqQ&quot;>Stakeholder&lt;/a>s, time (such as the length of the current &lt;a href=&quot;./../../../openup/guidances/concepts/iteration_C20B1904.html&quot; guid=&quot;_lam4ADkBEduxovfWMDsntw&quot;>Iteration&lt;/a>), the budget, and the skills of team members.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Individuals select their own work. Individuals are empowered to select their own work. Someone will choose to do&#xD;
        something because they are good at it and know that they can do the work effectively, because they want to gain&#xD;
        more experience at something and hope to improve their skill-set by working with someone with such experience, or&#xD;
        because they know that the work needs to be done and that it's their turn to do so. Although an individual fulfills&#xD;
        one or more roles on a project team that doesn't imply that the person is constrained to only doing specific types&#xD;
        of work.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        The team determines how to perform the work. At the beginning of an iteration the team will hold an &quot;all hands&quot;&#xD;
        planning meeting where it determines the general strategy for doing the work and the tasks required to do so. More&#xD;
        detailed planning, if required, will be done on a just-in-time (JIT) basis by the individual(s) doing the work.&#xD;
        Note that the team is still constrained by your organization's standards, technical infrastructure, regulations,&#xD;
        and so on.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Everyone commits to the work. The team commits to accomplishing the work that it has agreed to do by the end of the&#xD;
        iteration. Individuals also commit to doing the work that they say they will do, although as the iteration&#xD;
        progresses various tasks may be renegotiated as required.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        The team coordinates regularly. To ensure that the work is accomplished the team must coordinate its efforts&#xD;
        effectively. This is typically done through daily stand up meetings of the team and impromptu discussions between&#xD;
        individuals.&#xD;
    &lt;/li>&#xD;
&lt;/ol>&#xD;
&lt;p>&#xD;
    This is a participatory approach to decision making where everyone has the opportunity to provide input and to listen&#xD;
    to the decision making process. The goal is to make decisions at the right place within the organizational structure,&#xD;
    empowering teams by giving them both the responsibility and the authority to get the job done. It improves motivation&#xD;
    amongst team members, and thereby their productivity, by giving them control over their work.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Project Manager Responsibilities&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    There is still work for the &lt;a href=&quot;./../../../openup/roles/project_manager_E657F936.html&quot; guid=&quot;_0a0o0MlgEdmt3adZL5Dmdw&quot;>Project Manager&lt;/a> on self organizing teams. The project manager must still:&#xD;
&lt;/p>&#xD;
&lt;ol>&#xD;
    &lt;li>&#xD;
        Provide leadership. Team culture and project vision must be nurtured and evolved throughout the project, and&#xD;
        direction must be provided to the team.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Mediate disagreements. The manager must be prepared to step in and make a decision when other team members are&#xD;
        unable to come to a decision.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Ensure that team members grow their skill-set. From time to time the manager may need to motivate individuals to&#xD;
        take on new tasks that are outside their comfort zone or to work with others to help those people gain new skills.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Ensure that the team respects their limits. Self organizing teams have the authority to make decisions within the&#xD;
        scope of their responsibility, but that doesn't mean that they get to rethink everything that they feel like. For&#xD;
        example, the development team must still conform to the technical infrastructure and to the business strategy of&#xD;
        your organization: they likely don't have the authority to change these things even though they may not fully agree&#xD;
        with them. When an issue falls outside their scope of responsibility the team must either accept it or collaborate&#xD;
        with the people with the appropriate authority.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Summarize the project plan. External stakeholders, such as senior management or business representatives not&#xD;
        actively involved with the team, will want to know the current status of the project and the team's current plans.&#xD;
        The project manager may be required to summarize and communicate this information to those people.&#xD;
    &lt;/li>&#xD;
&lt;/ol>&#xD;
&lt;h3>&#xD;
    What This Isn't&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    The concept of self organizing teams often sounds like anarchy or non-management to traditional IT professionals, but&#xD;
    nothing could be further from the truth. Although self organization relies on team members being responsible and mature&#xD;
    it is tempered by the guiding hand of a good project manager. It is also tempered by organizational standards,&#xD;
    infrastructure, and external regulations. &quot;Self organizing&quot; doesn't mean that you have complete freedom to do what you&#xD;
    want.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Self organization isn't necessarily a consensus-based approach either; sometimes individuals will disagree with a&#xD;
    decision but will choose to go along with the will of the team. Nevertheless, consensus isn't ruled out by this&#xD;
    approach but it certainly isn't required.&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
