<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>All Free Tech &#187; Project Management</title>
	<atom:link href="http://www.allfreetech.com/tag/project-management/feed" rel="self" type="application/rss+xml" />
	<link>http://www.allfreetech.com</link>
	<description>For developers</description>
	<lastBuildDate>Tue, 01 Feb 2011 13:45:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Twelve Requirements Basics for Project Success</title>
		<link>http://www.allfreetech.com/development/twelve-requirements-basics-for-project-success-107.html</link>
		<comments>http://www.allfreetech.com/development/twelve-requirements-basics-for-project-success-107.html#comments</comments>
		<pubDate>Sat, 23 Jan 2010 07:12:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[projec]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://www.allfreetech.com/?p=107</guid>
		<description><![CDATA[The author provides a set of 12 requirements basics; these recommended approaches will contribute to your project&#8217;s success. The requirements basics are based on industry experience; guidance from requirements-related books, articles, and Web sites; and the author&#8217;s involvement with projects. Having an experienced requirements subject matter expert on the project staff can help the project [...]]]></description>
			<content:encoded><![CDATA[<p><span class="ctAbstract">The author provides a set of 12 requirements basics; these recommended approaches will contribute to your project&rsquo;s success. The requirements basics are based on industry experience; guidance from requirements-related books, articles, and Web sites; and the author&rsquo;s involvement with projects. Having an experienced requirements subject matter expert on the project staff can help the project manager and the project team guide investments that will help.</span></p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">Much has been written about requirements, and surely we have experienced enough to have learned how to do things in ways that support successful project outcomes. Yet, many projects encounter requirements-related problems, most of which could have been avoided. Ample guidance is available to enable successful project management and to perform effective requirements practices [1, 2, 3, 4, 5] that are easy to apply.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">Table 1 provides a set of 12 requirements basics for project success with supporting information, suggestions, and recommendations provided in this article. I encourage you to consider them thoughtfully in the context of your project and to determine if some changes in its approach may be worth considering. (Of course, if you digest this article and then decide to make no changes, no improvement opportunities will result. Failure to work proactively to continuously improve is a root cause of a lack of improvement in project success rates [6].) You may relate to the Requirements Secrets provided in Table 2. The sad truth is that these are not really secrets; they are fairly well-known facts that are well documented in the requirements literature (books and articles written by academicians and practitioners concerning requirements).<i> So, the bottom line is not that we do not know what to do, it is that we do not do it </i>&ndash; a sad commentary on our willingness and commitment to discipline our efforts on projects.</p>
<p>	<img alt="Table 1:  Twelve Requirements Basics for Project Success " border="0" height="359" src="http://www.stsc.hill.af.mil/crosstalk/2006/12/0612Young_Tab1.jpg" width="524" /><br />
	Table 1: <span class="ctCaption"> Twelve Requirements Basics for Project Success </span></p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<p>	<img alt="Table 2:  Requirements Secrets " border="0" height="446" src="http://www.stsc.hill.af.mil/crosstalk/2006/12/0612Young_Tab2.jpg" width="525" /><br />
	Table 2: <span class="ctCaption"> Requirements Secrets </span></p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">Related to the importance of requirements basics is the need to be agile. How does one balance increased investment in the requirements process with the need to be agile? In my judgment, it is the project&rsquo;s<i> approach </i>that makes all the difference. By using an evolutionary or incremental approach, and by delivering versions, releases, and new products, we can be agile. It is not required that we learn a whole new way of doing things.</p>
<p><strong><span class="ctSectionTitle">Twelve Requirements Basics for Project Success</span></strong></p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">Concerning potential improvements in your project&rsquo;s approach, we need to remind ourselves that each of us is a change agent on our jobs and on projects. Select an improvement opportunity from the following where you have influence and show others that you can be successful.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema"><strong>Basic 1: Provide training for all project participants concerning the requirements processes to be used on the project. </strong>Also, there needs to be a technical leader who is highly skilled in requirements engineering. The training and experience required for three levels of a requirements analyst (RA) are provided in Table 3. See [5] for more information and insight, including an extensive set of references to excellent requirements books and articles by many good writers. Industry systems engineering and requirements trainer Robert Halligan believes that the number one problem in requirements engineering is that project managers (PMs) fail to require experienced RAs, and that RAs are not sufficiently trained and/or experienced to perform their roles effectively<sup>1</sup>. PMs can use this skills matrix to recruit and train RAs; RAs can use it to pursue an ongoing professional development program to acquire needed expertise.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<p>	<img alt="Table 3:  RAs Skills Matrix " border="0" height="617" src="http://www.stsc.hill.af.mil/crosstalk/2006/12/0612Young_Tab3.jpg" width="525" /><br />
	Table 3: <span class="ctCaption"> RAs Skills Matrix </span></p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">It is important to distinguish between a<i> process </i>and the<i> skills </i>of project professionals. A process may be defined as a set of activities that results in the accomplishment of a task or the achievement of an outcome. Every project uses a requirements process whether it is defined and documented (written down) or not. Some of the advantages of involving a project&rsquo;s key leads in defining and documenting the requirements process for a project include the following:</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">&nbsp;</p>
<ul>
<li>Because they helped create it, the people involved in defining and documenting the process acquire a better understanding of it and become more committed to its successful use.</li>
<li>The leads for other areas within the project become more involved in the requirements activities and bring their expertise and experience to refine the requirements process.</li>
<li>Once the process is documented, the opportunity exits to improve it based on actual project events.</li>
<li>The process is likely to be more complete and useable.</li>
<li>The process is more likely to be integrated into other activities and plans on the project. In other words, by using a collaborative approach, project communication is enhanced.</li>
<li>Technical performers on projects become more inclined and willing to use an agreed-upon and understood requirements approach.</li>
</ul>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">When addressing the<i> skills </i>of a requirements analyst in Table 3, think of these skills<i> supporting </i>the project&rsquo;s requirements process. The process goals are created to perform requirements work effectively and successfully; the skills applied by the requirements analyst facilitate the performance of the requirements work. For example, by ensuring that each requirement meets the criteria for a good requirement, the RA enables the project to avoid a lot of rework, thus making the requirements process much more effective. Another example is that by utilizing the<i> joint team </i>mechanism (a way to do something), responsibility for the requirements is fixed &ndash; all requirements go through a funnel so that accountability for them can be maintained. The joint team mechanism needs to include a few representatives (between two and 12 or more, depending on the size of the project) of both the customer/user and the developer who are empowered to make decisions and take responsibility and accountability for the requirements throughout the project&rsquo;s life cycle.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema"><strong>Basic 2: Proactively partner with your customer. </strong>In our work, project practitioners like to use the word<i> partner </i>. It suggests that we are collaboratively working toward joint objectives. I am talking aboutin which an independent outside facilitator is engaged to orchestrate an approach in which a set of carefully selected stakeholders gain commitment to success through a series of planned partnering workshops<sup>2</sup>. The advantage of this approach is the evolution of a team that is committed to project success &ndash; it will not allow the project to become derailed in spite of the inevitable problems and interpersonal issues encountered during the days, weeks, months, and sometimes years of hard (and often conflicted and frustrating) work. Wiegers provides related ideas concerning having a product champion as a specific partnering technique in [9].</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema"><strong>Basic 3: Understand the resources required to perform requirements processes effectively and invest in the project&rsquo;s requirements process. </strong>The industry average for project investment in its requirements process is 3 percent of project costs; data from NASA shows that when 8-14 percent of project costs are invested in the system life-cycle requirements process, there is a much higher probability of achieving lower costs and improved schedule [10]. The requirements process used by the project or organization should be 1) developed by the project&rsquo;s stakeholders and staff; 2) documented; and 3) continuously improved based on experience on each project. Measure the requirements change activity (requirements volatility), including both new requirements and changes to requirements, to provide insight into project performance. Also, plan for change; this means estimating the amount of change and when it might occur.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema"><strong>Basic 4: Write a project vision and scope document. </strong>The benefit of this recommendation is to document the vision of the stakeholders concerning the goals of the project, and to achieve significant consensus on the project&rsquo;s scope (what is included in the project and what is excluded &ndash; for example,<i> product will not support users in Ireland until Vers. </i> <i> 3 </i>). A template for this document is developed by Karl Wiegers [9] and is represented in [15]. In our work, we need to be aware of the need to involve all stakeholders and to gain<i> buy-in </i>(commitment to the success of the project). Allowing various stakeholder groups to review the vision and scope document, comment on it, and then revise it to address their stakeholder comments is one technique that can help gain buy-in. One project best practice is to engage stakeholders throughout the project &ndash; projects that do so are more successful than those that do not because communication is improved and expectations are more realistic [7]. Also, this provides more opportunities to build interpersonal relationships and even allows customers and users to help solve the problems that arise.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema"><strong>Basic 5: </strong> <strong> Use proven requirements elicitation techniques such as requirements workshops and prototypes and other forms of visual presentations to evolve the real requirements</strong><sup>3</sup><strong> and to gain stakeholder buy-in [11]. </strong>Among more than 40 requirements-gathering techniques, these two seem to be the most effective. In the case of the former, various stakeholder groups will learn more about the perspective of the other stakeholder groups and will have a better understanding of the overall needs to be addressed. Another use of requirements workshops is to review issues and make decisions that best serve all stakeholders. The latter technique is a cost-effective way to gain a better understanding of the customer&rsquo;s and users&rsquo; real needs &ndash; prototypes may be designed, developed, implemented, and updated for a fraction of the cost of a delivered capability. Getting feedback on a visual representation is faster and easier than getting it from text.<i> The important thing is to evolve the real requirements before starting other technical work. </i>Experience has shown that using the stated requirements (the requirements provided by the customer and users at the beginning of a development effort) results in an estimated 45 percent rework [12].</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema"><strong>Basic 6: Utilize an evolutionary or incremental project approach to development, deployment, and implementation of the needed capabilities. </strong>This is both an opportunity and a challenge &ndash; whenever one employs a new technique on a real project, additional risk is assumed. My suggestion is to ensure that there are people on the project staff who have previously utilized a new practice, technique, method, tool, or mechanism. In this way, your project can benefit from lessons learned previously (provided, of course, that you pay attention to and are disciplined to incorporate them). An evolutionary or incremental approach allows the project to build hunks of delivered code at a time, and then uses them to learn how and where to proceed. Use versions, deliveries, releases, and new products to accommodate the inevitable requirements changes.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema"><strong>Basic 7: Use an effective mechanism to control requirements changes and new requirements. </strong>Controlling changes may mean generating new releases. Most projects utilize Change Control Boards (CCBs), but they usually address detailed project activities such as changes in the code. Use of a higher-level CCB (for example, the joint team I recommend to be responsible for the requirements) to maintain control of the requirements is a good example of applying added discipline on a project. It is logical (though most often not done) that requirements should be prioritized, and that the highest priority and most difficult requirements be addressed first. One reason to do this is that some requirements areat the beginning of a development effort; it requires some development work and related research effort to discover them. It is critical to understand that changes to requirements and new requirements can cause a project to go out of control, thus creating the need for a mechanism to control them. I recommend limiting changes to a maximum of .5 percent per month (6 percent per year) in the capability currently being developed in order to help keep the project under control [13]<sup>4</sup>.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema"><strong>Basic 8: </strong> <strong> Use an effective automated requirements tool to maintain information about the requirements. </strong>Although many projects do not follow this practice, in my judgment, an automated requirements tool is required for any project except tiny ones. This is because it is necessary to have a lot of information concerning each requirement &ndash; its<i> attributes </i>. For example, we need to know the following:</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">&nbsp;</p>
<ul>
<li>The source of the requirement (who nominated it).</li>
<li>A unique identifying number for it.</li>
<li>Its priority (on a scale of one to three).</li>
<li>Its relative cost to implement (low, medium, high).</li>
<li>Its relative difficulty to implement (low, medium, high).</li>
<li>Each requirement meets the criteria of a good requirement (the criteria shown in Table 4 should be met for each requirement. If they are not, it is likely that the requirement statement is not really correct).</li>
<li>The <i> rationale </i>for the requirement (why is the requirement needed?) [15]<sup>5</sup>.</li>
<li>Change history (how has the statement of the requirement changed over the system life?).</li>
<li>Traceability<sup>6</sup>(of each requirement to its source, as well as the design, code, test, documentation, and training materials).</li>
<li>Status (draft, final, approved, pending approval, disapproved).</li>
<li>Assigned to (component of the system).</li>
</ul>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<img alt="Table 4:  The Criteria of a Good Requirement" border="0" height="453" src="http://www.stsc.hill.af.mil/crosstalk/2006/12/0612Young_Tab4.jpg" width="525" /><br />
	Table 4: <span class="ctCaption"> The Criteria of a Good Requirement</span></p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">Two related needs should be considered. The first is that the requirements are used by different people (including customers, users, and project team members) with different<i> viewpoints </i>[16]. We need to be able to organize the requirements to provide different perspectives, for example, for customers, users, or testers. The order and the actual requirements selected for these activities are dependent on the viewpoint. The second need is that at any given time, one may need to see all requirements or only those changed ones; an automated requirements tool provides the capability to obtain various reports that are required to perform good requirements work.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema"><strong>Basic 9: Avoid requirements errors.</strong> A requirements error is a defect that is discovered in delivered code that is a result of a requirement statement. Data from NASA provided by requirements consultant and trainer Ivy Hooks show that 80 percent of the requirements errors that remain in delivered software are a result of incorrect facts (49 percent) and omitted requirements (31 percent) [10]. This is truly amazing when you think about it &ndash; clearly a key opportunity to improve requirements work. Making a concerted effort (investing more in the requirements process) to avoid these two types of requirements errors can save money and time and also improve the quality of delivered capabilities.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">Some of the things that can be done to address incorrect facts include the following:</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">&nbsp;</p>
<ul>
<li>Provide stakeholder reviews of requirements work products.</li>
<li>Require that an authoritative source document be specified.</li>
<li>Require verification of each requirement as part of the planning for testing.</li>
</ul>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">Some of the things that can be done to address omitted requirements include the following:</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">&nbsp;</p>
<ul>
<li>Elicit requirements from a variety of stakeholders.</li>
<li>Conduct requirements workshops and review the requirements collaboratively.</li>
<li>Conduct formal requirements reviews.</li>
<li>Ensure that all high-level requirements are addressed and met in the requirements work products.</li>
</ul>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema"><strong>Basic 10: Utilize inspections of requirements-related documents. </strong>Inspections are not difficult to perform, and their use is cost-effective; a concise explanation of how to perform both peer reviews and inspections and how to install a peer review process on a project can be found in [8].</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema"><strong>Basic 11: </strong> <strong> Enlist the support and assistance of all members of the project staff in performing requirements work.</strong> It is not just the requirements manager and/or the RA who need to be involved in requirements-related work on a project. Most members of the project staff can help; however, they need to be made aware of<i> how </i>they can help and that the PM&rsquo;s expectation and request is that they<i> do </i>help. A technique I have used successfully to accomplish this is an<i> early project requirements briefing </i>that is made to the entire project staff. Participants in the briefing can be invited to suggest how they can help with the requirements work with the objective of optimizing the efforts of all project members. A related need is to develop a strong sense of teamwork throughout the project. In my experience, an empowered and committed team can accomplish most anything it sets out to do.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema"><strong>Basic 12: Work proactively to address requirements-related risks. </strong>As is well known to practitioners, most projects do not address the risks they face with the discipline that they should. There are many excellent books concerning how to do this. A good starting point is Chapter 11 of [15]. Another source is [9], which provides a chapter on software requirements and risk management. Table 5 describes typical requirements-related risk response strategies that should be helpful.</p>
<p>	<img alt="Table 5:  Suggested Requirements-Related Risk Response Strategies " border="0" height="729" src="http://www.stsc.hill.af.mil/crosstalk/2006/12/0612Young_Tab5.jpg" width="525" /><br />
	Table 5: <span class="ctCaption"> Suggested Requirements-Related Risk Response Strategies </span></p>
<p><strong><span class="ctSectionTitle">Summary</span></strong></p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">From my experience in working with projects of all sizes, there is a lot of benefit to investing in and continuously improving the project&rsquo;s requirements process. There really is no good excuse for the extent of rework that is typically required on projects, or for the failure of projects, or even delivery of reduced functionality and/or over budget or beyond schedule issues. It is within our power to do better. Use of one or more of the requirements basics discussed here is likely to be helpful. Consider discussing the contents of this article at a project staff meeting with the objective of identifying the<i> top three </i>ideas, suggestions, or recommendations to improve the requirements practices of your project.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema"><strong><span class="ctAuthor">Dr. Ralph R. Young</span></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.allfreetech.com/development/twelve-requirements-basics-for-project-success-107.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running an Open Source Software Project</title>
		<link>http://www.allfreetech.com/development/running-an-open-source-software-project-97.html</link>
		<comments>http://www.allfreetech.com/development/running-an-open-source-software-project-97.html#comments</comments>
		<pubDate>Sat, 23 Jan 2010 04:48:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://www.allfreetech.com/development/running-an-open-source-software-project-97.html</guid>
		<description><![CDATA[Some people would be happy to convince you that managing an Open Source Software (OSS) project is completely different than managing acommercial software project. People working on Open Source software argue thatthere are no deadlines to meet, that quality issues can be left for thecommunity of users to identify, and that their are no complications [...]]]></description>
			<content:encoded><![CDATA[<p>Some people would be happy to convince you that managing an Open Source Software (OSS) project is completely different than managing acommercial software project. People working on Open Source software argue thatthere are no deadlines to meet, that quality issues can be left for thecommunity of users to identify, and that their are no complications of costingand budgeting to manage. I will hopefully have convinced you of the contrary bythe end of this article. I will have showed you that managing a normal softwareproject and an open source project has far more parallels than most people would have you believe.<span id="more-97"></span></p>
<p>Do the common project life cycle principals apply to the average Open Source Software project? Do OSS projects go through the phases ofdefinition, planning, organising, execution and closure? It is perhaps not quiteas formal, but if you look hard enough the same phases of the developmentprocess can be found in all OSS projects. Whether it&#39;s conscious orsubconscious, OSS projects all follow the common development stages. In fact itcan probably be argued that the successful OSS projects follow these principlesintuitively and instinctively. Good project management practices really can make the difference between successful and unsuccessful OSS projects.</p>
<p>Take for example the appointment of a project manager. The majority of OSS projects don&#39;t formally appoint an official project manger, yetin most projects you will find someone taking on the role of project manager. Heunderstands the significance of the development process and the importance of leading a good team.</p>
<p>So what is it that an unofficial OSS project manager might bring to the successful OSS project? As mentioned earlier, the project managercan&#39;t ignore the familiar stages making up the common software development process:</p>
<ol>
<li>Project Definition</li>
<li>Planning</li>
<li>Organising</li>
<li>Executing</li>
<li>Closing</li>
</ol>
<p>However, following this development process amounts to very little if the project manager has little understanding of the key leadershipskills involved. The ability to specify precise goals, to communicate clearlyand to motivate members of the project is crucial to the leadership. In the OpenSource environment, the motivation of the team members presents the realchallenge. The familiar financial motivation plays no part in many open sourceprojects. For most developers working in an OSS environment, you will probablyfind the following motivators having the biggest impact on the project:</p>
<ul>
<li>Achievement</li>
<li>Recognition</li>
<li>Responsibility</li>
<li>Advancement</li>
</ul>
<p>None of these motivators are tangible, but you have to pay close attention to them in OSS projects. It is easy in commercial projects toover look these points and focus on the more tangible motivator known as money.If you want a truly motivated team though, concentrate on both the tangible and the intangible motivators!</p>
<p>Even in the apparently chaotic world of open source software development, clear process and good leadership are essential tenets. The processmay be more fluid in an OSS project and the leadership less formally defined,but both aspects are just as important all the same. In the following sectionswe will look at the stages of the project development process in the OSS context and see how team motivation plays its part in each of these stages.</p>
<p><b>Project Definition</b></p>
<p>&quot;Project Definition&quot; sounds very formal, but its importance can&rsquo;t be too highly stressed. The problem definition influences everything within your project. Whilst working on an OSS project we may not formally document that we need achieve X and Y, but in many cases the objectives of an OSS project are far clearer in the minds of the OSS project team than that of the commercial software development team.</p>
<p>In the case of a commercial software development team, you might typically have someone define what needs to be achieved and then communicate that vision to the development team, hoping that they understand it. In the OSS scenario, you typically have a group of developers that have come together because they have all experienced, first hand, the &quot;problem definition&quot;. This makes it is far easier to understand the problem and see a route to the solution.</p>
<p>Defining the &#39;problem&#39; and specifying the requirements isn&rsquo;t always straightforward. However, this is where most OSS projects have an advantage over their commercial counterparts. By far the best way to understand a requirement is not to read it, but to experience it. Most OSS developers have experienced the need to fulfil a particular requirement. After all, coming up against the problem is probably the main reason they&#39;ve picked a particular OSS project to work on in the first place. Experiencing the need for a requirement first hand will always provide a better understanding than reading a written requirement specification second hand.</p>
<p>With a clear definition of the problem you are already ahead when it comes to motivating the team. Having a clear goal is absolutely key to engendering a feeling of achievement as the project evolves. You can only feel like you&rsquo;ve achieved something, or that you are progressing, if you know what you are aiming for. So make sure you define the project and that you communicate that definition clearly to the rest of the team.</p>
<p><b>Planning</b></p>
<p>When you think of Open Source projects, formal project planning isn&#39;t one of the first tasks that spring to mind. Open Source projects have a reputation for a slightly more ad-hoc approach to planning. Maybe the OSS approach to planning isn&#39;t formal but, believe it or not, it is still a step that needs to be taken seriously. The OSS projects that succeed may not have formally defined project plans, but you can guarantee that the team has an instinctive ability to plan and organise their work.</p>
<p>The almost religious reliance on defect tracking tools (e.g. Bugzilla or Mantis) is possibly one of the reasons OSS teams are so good at identifying and organising tasks. In the OSS environment, the teams defect-tracking tool turns into far more than just a tool for tracking defects. It becomes the foundation that helps to organise and priorities the work of the whole team. It tracks everything from release tasks, defects, enhancement suggestions and, sometimes, even the to-do lists of individual developers. The defect tracking system&rsquo;s effectiveness at prioritising and assigning tasks comes into its own within many OSS projects. Without the pressures of deadlines, the complexity of tools like Microsoft Project can be left behind for defect tracking tools that are far easier to implement and run.</p>
<p>The use of system architecture and design definition is possibly the weakest link in this comparison with formal project management.Whilst in commercial projects it is common to see reams of paper specifying thedesign of the system, it is not common to see this sort of work on an OSSproject. In a typical OSS project, it is common for design ideas and concepts tobe quickly prototyped in code and distributed to the community for feedback andcomment. Even if it is perhaps not the most efficient use of time and resources,this proves to be an effective mechanism for identifying what should and shouldnot be included in the application. Personally I advocate a least a certaindegree of formal design work before coding begins. Formal design specificationsadd clarity to the project and help foster a feeling of advancement as the project progresses.</p>
<p>It is during the planning phase that serious consideration needs to be given to matching the goals of the project with the goals of theteam members. One of the key reasons people get involved in OSS projects is toimprove their skills and experience. If you decided to implement your projectusing Pascal, you would likely limit the pool of potential developers to work onthe project, or even empty it. If, however, you select one of the more popularand exciting technologies, you are more likely to attract and retain coders onyour project. Again the feeling of advancement whilst building and developing new skills helps to create an environment of motivation.</p>
<p><b>Organising</b></p>
<p>The OSS team usually excels at this stage. The ability to bring together the team members, the tools, controls and communications methodsto get the job done are second nature to most OSS teams (partly because theyknow exactly where to turn to for OSS solutions to address these issues andpartly because that are no organisational restrictions imposed on theimplementation). A typical OSS team thinks nothing of implementing the toolsneeded to run the project efficiently. Setting up a defect tracking system, a forum and source code control in days if not hours.</p>
<p>The difficult, and perhaps crucial part, is how you open up these tools to the community. Do you open up your defect tracking system toabsolutely everybody? Thereby exposing yourself to perhaps hundreds of poorlywritten, invalid defect records which all need sorting through. Do you provideeasy access for new members of the development team to the source coderepository? People who have no track record on the project could make critical changes to the code base.</p>
<p>I witnessed a recent exchange on an OSS project forum where a new member had been busy checking in code changes to the CVS repository. He hadrenamed fundamental aspects of the application because he thought he knew betterabout the terminology that should be used. This demonstrated how easily extra,unnecessary work can be created if you don&rsquo;t get the project controls right.It is difficult to get it right as to whom, how, when and where you open up yoursource code repository. Yet getting it right is essential to the success of the project.</p>
<p>It is essential to get the balance right between restrictive controls and the freedom that helps motivate the team. If your controls aredraconian you stifle enthusiasm and motivation. If you loosen controls you mayfind it easier to develop the levels of motivation. Giving your team moreresponsibility makes a big difference to the project and can be incrediblymotivating. There is nothing complicated with principals, but never underestimate the importance of getting the balance right for your project.</p>
<p>It comes down to making the right decisions in involving the community you are serving and keeping the control and direction of the projecton the right path. Like many things in life, the solution usually lies somewherebetween the two extremes and can depend largely on the maturity of the project.Never forget though, that passing on more responsibility can be a powerful motivator.</p>
<p><b>Executing</b></p>
<p>You would think that the coding stage would be a walk in the park for most OSS projects. After all, we&#39;re all supposed to be good at this thepart. Yet the success of this part of the project is largely dependent on thefoundations built in the previous stages of the project. If you don&#39;t have aclear understanding of the problem you are solving or your prioritisation of thework was short of the mark, you limit the chances of success. Good coding alone doesn&#39;t make a successful project.</p>
<p>Assuming that the foundation stages have gone well, it is this stage where the &quot;release early and often&quot; approach is often citedas being the key to a successful OSS project. However, I would argue that an OSSproject that relies solely on the community for its unit and system testing isasking for trouble. I recently upgraded to the latest version of a popular Linuxoperating system. Maybe it was my fault for not reading the release notesproperly, but by the time I realised that they&rsquo;d stop supporting a populardatabase that I relied on it was too late. Yes they released early, but I hadalways found previous early releases reliable and became complacent whenupgrading. This taught me a valuable lesson regarding complacency and the deployment of OSS.</p>
<p>There is a balance to get right here, especially now that more and more people are starting to rely on OSS. If you continually release buggy software in today&rsquo;s environment, you risk losing users. You can&#39;t expect users to test everything for you. With so much choice around now (I&rsquo;ve lost count of the number of Linux distributions now), users will remain loyal only if you reach a certain level of quality before release. If you abuse the loyalty of those users, then you&rsquo;ll have fewer users to further support your testing efforts. With fewer users you have less testers and you enter a slow but lethal spiral of death. Get it right though and you can expect a faithful, loyal following of users.</p>
<p>Feedback from users is another absolutely crucial aspect to the execute stage. Few OSS projects enjoy the privileges of a dedicated test team that is paid to give you feedback. This presents two key problems</p>
<ol>
<li>the test team / users won&rsquo;t be physically located near you</li>
<li>the users / testers aren&#39;t obliged to give you feedback.</li>
</ol>
<p>To a large extent the feedback you get is down to two things</p>
<ol>
<li>how easy you make it for people to provide feedback</li>
<li>how supportive you are to those people when they provide feedback.</li>
</ol>
<p>This bit isn&#39;t difficult to understand. If they can&#39;t provide you with feedback (i.e. you don&#39;t give them a usable feedback channel) you won&#39;t get any feedback. If you don&#39;t thank your users/testers or you aren&#39;t grateful, then they won&#39;t provide you with feedback a second time round. More than commercial projects, OSS projects live and die by the feedback they receive from users, because they have no internal feedback mechanisms or internal test team to rely on.</p>
<p>Forums are among the best feedback channels and the most powerful motivators for OSS projects. Forums are so powerful that I find it difficult to understand why commercial projects don&#39;t use of them more. Perhaps it&rsquo;s the thought of airing your dirty washing in a forum that puts commercial projects off using forums. Yet, if a developer in a commercial project receives negative feedback about his/her work in a forum, you can almost guarantee that he/she will feel motivated to do something positive about it. We all crave for feedback and recognition. Feedback through forums can satisfy those cravings.</p>
<p>Take, as an example, the last time you ate at a restaurant and complimented the waiter for a really delicious meal. The chef cooked themeal but we compliment the waiter. How do we know that the compliment was sentback to the chef? Wouldn&rsquo;t it be more rewarding for the chef if he wascomplimented in person? It&rsquo;s no different in software development, as forumscan provide that direct channel between the users and developers. A forum islike standing up in the restaurant after finishing your meal and shoutingthrough to the chef in the kitchen that you thought the meal was delicious. Notonly does the chef receive your complement directly, but you&rsquo;ve also told therest of the dinners in the restaurant what you thought about the meal. That&rsquo;s a huge motivator for the chef.</p>
<p><b>Closing</b></p>
<p>Of all the stages, this is the one that is very different to that of a commercial project. Getting it right can make a huge difference to theoverall image of the project. You don&#39;t have to provide documentation. You don&rsquo;thave to provide any support. You don&rsquo;t have to make sure all defect fixes areverified before release. In a typical commercial project, you will not achievesign off until all of these aspects are complete. Yet many people fail torealise that if you don&rsquo;t complete these aspects with OSS projects, you areforcing your users to jump though many unnecessary hoops, which is likely to mean less users.</p>
<p>The Apache foundation is a really good example of completing the documentation successfully. People actually come forward to volunteer towrite documentation for this project, because they receive kudos and recognitionfor their efforts. In smaller and less successful projects, this can be howeveran extremely difficult step to complete. Nonetheless, without good documentationit is very difficult to call an OSS project a success. Users are so dependent onwell-written documentation. Imagine trying to use CVS without a well written user guide&#8230; it wouldn&#39;t be impossible but it would be far more difficult.</p>
<p>It is also during this phase that the feeling of achievement comes from knowing you&rsquo;ve solved the problem defined at the start of theproject. This is why it is so important to define the problem in the firstplace. When members of the team know they&rsquo;ve solved the problem defined at thestart, they know they&rsquo;ve been part of a successful project. It&rsquo;s importantto remember that a successful project is defined as much by the members of the team working on the project as it is by the end users.</p>
<p><b>Conclusion</b></p>
<p>Recognition, responsibility, advancement and a feeling of achievement all play a crucial part in keeping a team motivated. It is thatmotivation that plays one of the biggest parts in making a project a success. Noamount of project definition, planning and organising will achieve anything ifyour team isn&rsquo;t motivated. Yet every stage of a project presents opportunitiesfor you to motivate your team. Whether you are running an Open Source project ora commercial, closed source, project, you should take every single one of theseopportunities to motivate you team because this will ultimately create successful projects.</p>
<p><strong>William Echlin</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.allfreetech.com/development/running-an-open-source-software-project-97.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extreme Project Management</title>
		<link>http://www.allfreetech.com/development/extreme-project-management-90.html</link>
		<comments>http://www.allfreetech.com/development/extreme-project-management-90.html#comments</comments>
		<pubDate>Sat, 23 Jan 2010 04:37:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://www.allfreetech.com/?p=90</guid>
		<description><![CDATA[Extreme Project Management (XPM) is project delivery process. It consists of a series of practices to help manage projects more effectively. The practices help you control project schedules, assign work tasks, and assure that work is done efficiently and correctly. XPM is based on a highly successful software delivery process called Extreme Programming (XP). XP [...]]]></description>
			<content:encoded><![CDATA[<p>Extreme Project Management (XPM) is project delivery process. It consists of a series of practices to help manage projects more effectively. The practices help you control project schedules, assign work tasks, and assure that work is done efficiently and correctly. <span id="more-90"></span></p>
<p>XPM is based on a highly successful software delivery process called Extreme Programming (XP). XP was developed fairly recently in response to problems that plagued other software development processes.</p>
<p>XPM is an adaptation of the practices of XP from software to other fields like architecture.</p>
<p>This paper provides an overview of XPM from a practical &quot;how to&quot; viewpoint. I&#39;ll list the XP practices and talk about how to use them in architecture for planning and quality control. I&#39;ll cover topics only briefly, with the intent of expanding on them later.</p>
<h2>My Experience With XP</h2>
<p>I&#39;m both an architect and software developer. I had been writing software for over ten years before XP was introduced. To make a long story short, I started using XP practices and it literally changed my life: I was able to derive solutions faster. I was confident the work I did was right. My work improved continually. Bottom line: I produced much better work and took less time to do it.</p>
<p>Over time, I started thinking about adapting XP practices to architecture. This paper is the result of that thinking. XP practices can be readily and beneficially adapted to architecture. This paper shows how.</p>
<h2>Extreme Programming</h2>
<p>XP is a popular and effective software delivery process. Although developed fairly recently, XP has already attracted a large following of software developers, managers and customers. Its appeal for them: it works better than other software delivery methods.</p>
<p>XP is team-oriented and customer-focused. Teams range in size from small to medium with the customer as an integral part of the team. XP practices help the team determine and deliver exactly what the customer wants, even if the requirements change over time. The practices also insure that the team delivers high-quality error-free products.</p>
<p>Underlying XP are the values of simplicity, communication, feedback, and courage, which you will see evidence of in the practices themselves.</p>
<p>That&#39;s all I want to say about XP for now because I want to focus on XPM. There is plenty of information available on XP: at least seven books with more in progress, web sites, discussion groups, news groups, seminars, consultants and more. A good overview of XP is at <a href="http://www.xprogramming.com/xpmag/whatisxp.htm" target="outside">www.xprogramming.com</a>.</p>
<h2>XPM Practices</h2>
<p>XPM practices can be divided into two types: planning practices and quality control practices. Planning practices consist of the Release Plan and the Weekly Plan. The rest of the practices focus on quality control and are used daily.</p>
<p>In this paper, I&#39;ll first address XPM planning practices, then XPM quality control practices.</p>
<h2>XPM Planning Practices</h2>
<p>One of the cornerstones of XP is simplicity, and XPM follows suit. XPM planning practices are simple. You don&#39;t need critical path methods or project management software. All you need are index cards and common sense.</p>
<p>Here&#39;s an overview of how to run an XPM project:</p>
<ul>
<li>Create a release plan</li>
<li>Each week, create a weekly plan based on the release plan</li>
<li>Each day, do daily tasks based on the weekly plan</li>
</ul>
<h2 id="project_plan">Release Plan</h2>
<p>The first step in running an Extreme project is to create a Release Plan. The Release Plan describes all the work to be done for the current project phase. It is usually created by the project manager, aided by team members, before work begins. Create a separate Release Plan for each work phase: schematics, design development, contract documents, etc.</p>
<p>Here&#39;s how to create an XPM Release Plan:</p>
<ul>
<li>Think through every task required to complete the work.</li>
<li>For each task, write a brief description on an index card.</li>
<li>Estimate the time required to complete the task and add it to the card.</li>
</ul>
<p>When you have a card for every task, you&#39;ve finished the Release Plan. The Release Plan is just a stack of index cards.</p>
<p>Here are some planning guidelines:</p>
<ul>
<li>Make a card for every task you can think of.</li>
<li>No task should take more than 3 days. Break large tasks into sub tasks.</li>
<li>Each task must be testable. You must be able to verify that the task is correct and verify that it is complete.</li>
<li>Estimate time in ideal hours, that is, the number of hours it would take if you could work continuously without interruptions.</li>
<li>Make task descriptions brief, not detailed. Tell what, not how.</li>
</ul>
<p>The Release Plan is not cast in stone. It can and probably will change during the course of the project. Time estimates are not fixed either. They probably will be modified by the team members during weekly planning meetings.</p>
<h2>Release Plan Recap</h2>
<p>A detailed Release Plan is easy and won&#39;t take long to create, even for a large project. You can use spreadsheets, prior projects, and checklists to facilitate the process.</p>
<p>For more information, see <a href="http://www.architecturalpractices.com/articles_release_plan_tips.html">release planning tips</a>.</p>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Easy to create: add tasks using common sense, prior projects, checklists.</li>
<li>Exact scope of work is crystal clear; every detail is identified.</li>
<li>Project is broken down into small, identifiable tasks.</li>
<li>Easy to add and remove tasks at will.</li>
<li>Easy to estimate: small tasks can be estimated quickly and accurately.</li>
<li>Easy to reorganize: rearrange card stacks to represent weeks, months, priorities.</li>
</ul>
</div>
<h2 id="weekly_planning_meeting">Weekly Planning Meeting</h2>
<p>The Weekly Planning Meeting is an integral part of the XPM planning process. The purpose of the meeting is to assign the week&#39;s tasks. All team members attend. The meeting usually begins with a retrospective, which I&#39;ll talk about later.</p>
<p>It is important that the time interval between meetings be consistent. Meetings should be held weekly, at the same day, time, and place each week.</p>
<p>Prior to the meeting, the project manager selects tasks for the week. Task cards for work remaining are usually arranged on a table in stacks, by priority or by weeks. The PM goes through the stacks, chooses the highest priority tasks, and brings them into the meeting. The number of tasks selected should be based on the prior week&#39;s velocity.</p>
<h2>Velocity</h2>
<p>Velocity is the number of points (ideal hours) completed by the team per week. The idea behind velocity is simple: If a team did 100 points last week, it will do 100 points this week.</p>
<p>The concept behind velocity is this:</p>
<ul>
<li>If you use a constant time interval between planning meetings,</li>
<li>and if you use a consistent way to measure task difficulty or time,</li>
<li>then you can calculate a consistent measure of productivity: velocity.</li>
</ul>
<p>Two powerful features of velocity:</p>
<ul>
<li>Velocity tends to remain constant over time.</li>
<li>Velocity self-corrects for interruptions, under-estimating, over-estimating, meetings, pairing, and other inefficiencies.</li>
</ul>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Easy to calculate velocity: Count the number of points completed last week.</li>
<li>Fast feedback: Determine in first few weeks if project is on track.</li>
<li>Easy to determine project schedule: calculate weeks to completion by dividing points remaining by velocity. Example: 2000 points remain; velocity is 100 points per week, so project will take 20 weeks to complete.</li>
<li>Easy to determine project cost: calculate cost per point by dividing cost per week by velocity, then multiply cost per point by points remaining. Example: team salaries are $5000 per week, velocity is 100 points per week, so cost is $50 per point. If 2000 points remain, project cost is $100,000.</li>
<li>Signals potential problems: If velocity starts falling, look for the cause.</li>
</ul>
</div>
<p>When calculating velocity, only completed tasks are counted. Determining whether or not a task is complete will be discussed later when I talk about testing.</p>
<h2>Assign Week&#39;s Tasks</h2>
<p>Back to the planning meeting. The objective is to assign tasks for the week.</p>
<p>One by one, choose, read aloud, and discuss each task card. Purpose of the discussion is to:</p>
<ul>
<li>Clarify what&#39;s required and expected</li>
<li>Break down tasks into sub-tasks if necessary. No task should exceed 8 hours at this point.</li>
<li>Validate or re-estimate the time required</li>
</ul>
<p>After all cards have been reviewed, organized, and placed on the task board, team members begin signing up for tasks by posting a selected card beneath their name. When a task is complete, they update the time estimate, put the Task Card in the &quot;Done&quot; pile and select another card.</p>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Assures focus: No work is done unless there&#39;s a task card for it.</li>
<li>PM has complete control; can respond quickly to changes in priorities or requirements.</li>
<li>Discussing each task clarifies everyone&#39;s understanding of the requirements.</li>
<li>Team members can offer alternatives and timesaving ideas.</li>
<li>Estimates are reliable because they&#39;re determined by the team, not management.</li>
<li>Team members are more enthusiastic and likely to commit to time estimates they generate themselves.</li>
</ul>
</div>
<h2>Weekly Plan Recap</h2>
<p>The Weekly Plan corresponds to the Iteration Plan in XP. We call the time interval an iteration.</p>
<h2>Planning Recap</h2>
<p>We&#39;ve briefly discussed the Release Plan and Weekly Plan, two simple practices to assure that appropriate tasks are identified, assigned and tracked.</p>
<p>Before moving on, I should mention that new task cards must sometimes be added during an iteration. They usually represent high-priority tasks that can&#39;t be delayed. They are discussed and estimated during a stand-up meeting, and posted as before. Lower priority tasks of similar duration are removed to compensate.</p>
<p>Now I want to talk about the daily XPM practices. They help assure that tasks are done efficiently and correctly.</p>
<h2>Daily Practices</h2>
<p>Daily XPM practices help keep the team aligned, focused, and informed and help insure that tasks are done efficiently and correctly. The practices are integrated. Like concrete reinforced with steel, they are designed so the strengths of one compensate for the weaknesses of another. As a consequence, an XPM practice can&#39;t be ignored. If you can&#39;t follow an XPM practice, you should substitute alternatives that provide similar benefits.</p>
<p>One of the most important of the XPM practices is testing.</p>
<h2 id="testing">Testing in XP</h2>
<p>In XP, you test &quot;everything that could possibly break&quot;. Tests are automated so they can be repeated each time you make a change.</p>
<p>Testing is best feedback mechanism there is. Its results are immediate, unbiased and accurate. Without testing, XP simply would not work. XP values testing so much, it mandates that &quot;no code is written without a test&quot;.</p>
<h2>Testing Alternatives in XPM</h2>
<p>XP won&#39;t work without testing, nor will XPM. For every task, we need to be able to determine:</p>
<ul>
<li>Is it correct?</li>
<li>Is it complete?</li>
</ul>
<p>However, architects can&#39;t test the same way programmers do. When we can&#39;t test directly, we must devise alternatives such as:</p>
<ul>
<li>Test lists</li>
<li>Examples</li>
<li>Prototypes</li>
<li>Standard details</li>
<li>Mistake-proofing</li>
<li>Standard forms</li>
<li>Meeting agendas</li>
<li>Form letters</li>
<li>Peer reviews</li>
</ul>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Clarifies requirements. You can&#39;t write tests or testing alternatives unless you understand the requirements.</li>
<li>Helps identify and prevent errors and omissions.</li>
<li>Verifies that a task is correct and complete.</li>
</ul>
</div>
<p>To simplify this discussion, when I talk about tests from now on, I am including testing alternatives as well.</p>
<h2>Project Tests and Task Tests</h2>
<p>In XPM there are two types of tests:</p>
<ul>
<li>Project Tests: created by project manager, perhaps assisted by team members, to assure that overall project goals are met.</li>
<li>Task Tests: created by team members to assure that tasks are correct and complete.</li>
</ul>
<p>Example:</p>
<ul>
<li>A Project Test might require that stair detail conforms to code.</li>
<li>A Task Test might require that tread be 11&quot;, riser 7&quot;.</li>
</ul>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Project tests assure that overall project goals are met.</li>
<li>Task tests assure that detailed task goals are met.</li>
</ul>
</div>
<h2>One Test at a Time</h2>
<p>In XP, code is written test-first:</p>
<ul>
<li>Write a test.</li>
<li>Write code to make the test pass.</li>
<li>Write another test.</li>
<li>Repeat. If you can&#39;t think of any more tests, you&#39;re done.</li>
</ul>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Provides clear sense of direction</li>
<li>Minimizes tendency to do unneeded work</li>
<li>Reduces chance of errors</li>
</ul>
</div>
<p>This process is called Test Driven (or Iterative, or Incremental) Development in XP. Based on using feedback to determine the next step, it&#39;s a very effective and timesaving practice for developing software.</p>
<p>A similar process can be used for developing XPM tests in architecture. Instead of writing a comprehensive list of tests for a task, we would instead determine the minimum effort that would satisfy the requirement. If that is insufficient, ask what else is required, and continue until all requirements are met.</p>
<p>Iterative Development may not be as quite as important to architects, however, because most of our work, at least in the CD phase, is repetitive.</p>
<h2>Architects&#39; Advantage: Repetitive Tasks</h2>
<p>Most architectural projects follow the same or a similar path. We know we&#39;ll have to draw door and window details, research products and materials, write specifications, and prepare a cost estimate &#8211; no matter which project we are working on. The same tasks are repeated on each project. Thus, we have two advantages. We can:</p>
<ul>
<li>Re-use tests on other projects.</li>
<li>Share tests with colleagues.</li>
</ul>
<p>I&#39;ll discuss how to maximize these advantages at the end of the paper.</p>
<h2>Testing Recap</h2>
<p>Testing provides instant feedback that what we&#39;ve done is correct and complete. There is no better mechanism to give us that level of confidence. Where we can&#39;t provide automated software tests, we can develop alternatives. It&#39;s a wise investment because our tests can be used both now and in the future.</p>
<h2>Other XP Practices</h2>
<p>In the following sections, I&#39;ll briefly mention some other XP practices. They help keep the team aligned, focused, and informed. Most can be adapted directly to XPM as-is.</p>
<h2>Pairing</h2>
<p>In XP, tasks are completed by pairs, not individuals. Two people work together to complete each task, switching pairs frequently. Pairs also work together to create the tests and verify that they&#39;ve passed.</p>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Improves quality</li>
<li>Reduces errors</li>
<li>Provides reality check</li>
<li>Provides opportunity for cross training and mentoring</li>
<li>Transfers knowledge quickly between team members: office standards, project requirements, software tools</li>
</ul>
</div>
<p>Pairing may seem like a duplication of effort, but consider the alternatives. In order to achieve the same level of quality, communication and knowledge transfer, you need more meetings, memos, notes, emails, standards, and other office artifacts; all of which are time-consuming and difficult to sustain.</p>
<h2>All in Same Room</h2>
<p>Everyone working on the project works together in the same room, with visual and vocal contact.</p>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Speeds up communication</li>
<li>Reduces misunderstandings</li>
<li>Decisions are made faster</li>
<li>Tasks get done faster</li>
</ul>
</div>
<h2>Continuous Integration</h2>
<p>In XP, you are expected to maintain a complete, working, end-to-end system at all times. Other than stubs, which are place holders for unimplemented features, everything included works correctly; otherwise it&#39;s not included.</p>
<p>Example in architecture:</p>
<ul>
<li>Every component of the design, as represented by the deliverables, must be complete and correct at all times.</li>
<li>If an elevation is changed, floor and roof plans are changed to correspond.</li>
</ul>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Confidence that what is shown is correct</li>
</ul>
</div>
<h2>Collective Ownership</h2>
<p>Everyone owns all the documents. Any pair can make changes as long as the tests still pass. Working in pairs insures that changes are appropriate.</p>
<p>Examples in architecture:</p>
<ul>
<li>Pair with spec writer to change specs</li>
<li>Every team member is permitted, and expected, to change any component of the drawing set: plans, elevations, sections, details, etc.</li>
</ul>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>No need to wait for others to make changes</li>
<li>Work gets done faster</li>
</ul>
</div>
<h2>Office Standards</h2>
<p>XP requires teams to agree on and adhere to a set of standards. However, standards are added only as needed and unused standards are eliminated. In other words, standards, although required, are kept to a minimum. For example, instead of a detailed written standard, provide an example, annotated if necessary. Require that all work look like the example.</p>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Documents are consistent, look better, are easier to understand.</li>
<li>Team members work faster because standards are pre-defined.</li>
</ul>
</div>
<h2>Refactoring</h2>
<p>XPers &quot;refactor&quot; existing code to remove duplication and make their intent more clear. All tests must pass before and after doing a refactoring. To reduce oversights, refactoring is done in pairs. Tests and processes can be refactored as well as deliverables.</p>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>No duplication: Work gets done faster, there&#39;s no chance for conflict, changes are easier to make in the future.</li>
<li>Constant improvement: Processes, tests, and deliverables improve over time.</li>
</ul>
</div>
<h2>Retrospectives</h2>
<p>Retrospectives are held at frequent intervals in order to identify and modify processes that aren&#39;t working effectively.</p>
<ul>
<li>Weekly Retrospectives: Begin weekly planning meetings with short retrospective.</li>
<li>Project Retrospectives: Conduct longer retrospective after project or substantial milestones have been completed.</li>
</ul>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Frequent feedback improves processes.</li>
</ul>
</div>
<h2>Stand-Up Meetings</h2>
<p>Stand up meetings are held frequently to facilitate communication and keep team members informed.</p>
<ul>
<li>Daily Stand-Ups: Start each day with a short stand-up meeting. Each team member describes work on current task, identifies potential problems.</li>
<li>Ad-Hoc Stand Ups: Anyone can call for a stand-up to discuss a pressing issue.</li>
</ul>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Clarifies project status</li>
<li>Prevents oversights and potential problems</li>
</ul>
</div>
<h2>Project Charter</h2>
<p>Before beginning each project, the entire team meets to discuss project goals and priorities.</p>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>All team members start on the same track.</li>
</ul>
</div>
<h2>Sustainable Pace</h2>
<p>Team members work hard and at a pace that can be sustained over time. They rarely work overtime.</p>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Team members are refreshed each day, unlikely to burn out over time.</li>
</ul>
</div>
<h2>Big Visible Charts</h2>
<p>Display important information in a prominent location, for everyone to see. We post all task cards for the current iteration on the task board. Everyone can see who is working on what, what tasks have been completed, and what tasks remain.</p>
<p>We usually post a project progress chart. It charts the number of points completed and remaining after each iteration. The slope of the chart can be projected to point at the completion date.</p>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Dramatically shows everyone where team stands, where it&#39;s going.</li>
</ul>
</div>
<h2>On-Site Customer</h2>
<p>Customer is available at all times to answer questions, make decisions, offer feedback.</p>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Decisions made, questions answered, feedback obtained as fast as possible.</li>
</ul>
</div>
<h2>XPM Architectural Practices</h2>
<p>Some XPM practices are unique to architecture. As with XP practices, they help keep the team aligned, focused, and informed.</p>
<h2>Prototypes</h2>
<p>We use prototypes, in addition to standards, to insure consistency and establish a level of quality. Prototypes are like standards adapted to a specific task. For more information, see <a href="http://www.architecturalpractices.com/articles_prototypes.html">using prototypes</a>.</p>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Promote consistency.</li>
<li>Establish level of quality.</li>
</ul>
</div>
<h2>Working Cartoon Set</h2>
<p>From day one, we provide a model of our final objective, updated as we progress. We can instantly see the work we&#39;ve done and the work that remains. For more information, see <a href="http://www.architecturalpractices.com/articles_working_cartoon_set.html">working cartoon set</a>.</p>
<div class="benefits">
<p>Benefits</p>
<ul>
<li>Provide visual record of progress.</li>
</ul>
</div>
<h2>Practices Recap</h2>
<p>I&#39;ve discussed the most significant XP practices, listed their benefits and talked about how they can be adapted to architectural project management.</p>
<p>XP practices evolve over time. The XP community is very active and all XP practices are subjected to intense scrutiny and discussion. Similar scrutiny should be applied to XPM practices as well, not losing sight of our real objective: to efficiently produce high quality work.</p>
<h2>Future of XPM</h2>
<p>I&#39;d like to see:</p>
<ul>
<li>Architectural teams using XPM practices and sharing results.</li>
<li>Teams creating and sharing test alternatives.</li>
<li>People discussing XPM issues with as much vigor and enthusiasm as the XP community.</li>
</ul>
<h2>Making it Happen</h2>
<p>To help make it happen, I&#39;ve set up the following:</p>
<ul>
<li>A mailing list, managed by Google, to inform readers about new articles and revisions on these web pages. Go to <a href="http://groups.google.com/group/Architectural-Practices" target="outside">http://groups.google.com/group/Architectural-Practices</a> and follow Google&#39;s instructions.</li>
<li>An open discussion group, managed by Yahoo!, to discuss architectural practices at <a href="http://groups.yahoo.com/group/architecturalpractices/" target="outside">http://groups.yahoo.com/group/architecturalpractices/</a>.</li>
<li>This web site to collect and share materials on XPM. <a href="http://www.architecturalpractices.com/index.html" target="_parent">www.architecturalpractices.com</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.allfreetech.com/development/extreme-project-management-90.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 Lessons in Guerilla Tactics of Project Management</title>
		<link>http://www.allfreetech.com/development/10-lessons-in-guerilla-tactics-of-project-management-95.html</link>
		<comments>http://www.allfreetech.com/development/10-lessons-in-guerilla-tactics-of-project-management-95.html#comments</comments>
		<pubDate>Thu, 14 Jan 2010 04:46:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://www.allfreetech.com/?p=95</guid>
		<description><![CDATA[While many brilliant books and articles have been written on good project management, there is little attention paid to all the possibilities a project manager has to create the appearance of managing a project well without the burden of actually doing it. The following article is a summary of such tactics, which I could not [...]]]></description>
			<content:encoded><![CDATA[<p>While many brilliant books and articles have been written on good project management, there is little attention paid to all the possibilities a project manager has to create the appearance of managing a project well without the burden of actually doing it. The following article is a summary of such tactics, which I could not help noticing in many years of being involved in software projects. It is intended for project managers as well as people who monitor or supervise project managers, because we can prevent dirty tricks better if we have studied them.<span id="more-95"></span></p>
<p>As a project manager, you have three classes of natural enemies:</p>
<p>Luckily, only the third category really matters. The higher-level management decides on your salary, on your future assignments, on your career. Consequently, you need to direct all your attention to the higher-level management, or more precisely to the impression you make on the higher-level management. Doing good project management is one way of creating a good impression, but fortunately there are easier ways of achieving that goal.</p>
<p>The customer is often referred to as <i>the</i> counterpart of the project manager. This is wrong. The customer is only a minor figure in the game. In principle, it doesn&#39;t matter whether he is satisfied or not, whether he is happy or not, or what opinions or feelings he has about the project manager. The only significance the customer has at all, is in his impact on the higher-level management, and, contrary to popular belief, the fact is that the impact is negative if he is treated too well. The higher-level management will think it&#39;s child&#39;s play to run a project with such an easy-going type of client, whereas it must be your goal to make them believe that only your heroic efforts could bring any amount of success dealing with such a trouble-seeking customer.</p>
<p>Don&#39;t make it look easy.</p>
<p class="r">Having a satisfied customer is a dangerous thing</p>
<p>Satisfied customers belong to the mission statement, where they cannot do any harm. Avoid them in your projects at all cost. One has to be realistic. Who will be assigned to manage the next project: Project Manager A, who can manage trivial projects, but has never been challenged in difficult circumstances, or Project Manager B, who shows some degree of success even when confronted with extremely hostile customers?</p>
<p>Additionally, an overly satisfied customer will always generate the impression, that your loyalty to the customer is higher than your loyalty to your company. Allow this, and you are looking for a job.</p>
<p>Serious mistakes can be made in the planning phase, as this is the stage to foresee future difficulties, and prepare for them accordingly.</p>
<p class="r">Never get involved at the very early phases</p>
<p>Nothing can be gained by joining a project too early. Medals are being distributed at the end, not at the beginning. If you join later, you can always claim that things were messed up at the initial stage. No-one will remember exactly.</p>
<p class="r">Plan most tasks to be finished just before the last milestone</p>
<p>Too many people can read Gantt charts. Task end dates are like mini-checkpoints and the very last thing you need are umpteen checkpoints on which anyone can put his finger. Combining most of these checkpoints with the unavoidable last milestone gives you the much needed degree of freedom to interpret the progress during the project.</p>
<p class="r">Use person-years as estimation unit</p>
<p>It is in your interest to use the most ambiguous unit when estimating the effort, so that you can do some adjusted form of reverse calculations when needed. Avoid any detailed clarifications on what a person-year stands for, such as whether holidays or non-project overhead are included or not. If someone asks, say you used the standard definition, and therefore it&#39;s unnecessary to write it down.</p>
<p class="r">Add contingency at all levels</p>
<p>Contingency is your little friend and helper. However, you must be aware that removing contingency is the only contribution of higher-level management to project planning. Therefore, it is essential to add plenty of contingency in many different forms, so that you will have enough after the removal. You have to ask the engineers to add contingency in their estimates, which later you refer to as &quot;raw figures&quot;. Participate in all estimation meetings in order to talk the figures up. Then add contingency both in percentages and as extra activity at task, module and project level. Finally you add risk premiums at the various levels. The key skill here is creativity in naming, as you cannot expect any mercy from higher-level management when they recognize contingency as such.</p>
<p>Incomplete and ambiguous requirements are often said to be the most common obstacle to project success. That may or may not be true, in any case that&#39;s not your concern. Your concern is more the project manager&#39;s success. To this end, incomplete and ambiguous requirements are, generally speaking, quite helpful.</p>
<p class="r">Never ask for completion of obviously missing requirements</p>
<p>Obviously missing requirements are the basis of your bonus. You can include them in your planning, and when the gaps in the documents surface later on, use them to justify all that extra effort that accumulates naturally during a project.</p>
<p>You have to be a bit more careful when it comes to ambiguous requirements. Skilful professional judgment is required to find the optimal point in time when to address them. Some can be used as a reason for early delays, as it takes time to clarify them, others can be helpful in drawing attention away from something else at a convenient moment, still others can be helpful in justifying poor implementation at a late stage.</p>
<p>The problem with risks is, that the project manager is expected to manage them. That would be hard. Therefore, if you see any risks in the project, make sure they don&#39;t appear as such in the project plan. Fortunately, there are more suitable places in typical project plan templates.</p>
<p class="r">Hide risks as assumptions</p>
<p>It would be a mistake not to document those risks at all. You could be asked, &quot;why haven&#39;t you taken care of that?&quot; Assumptions are the perfect place for risks. No-one was ever asked to manage assumptions. Of course, a little rewording is required, by saying &quot;it is assumed that such and such will not happen&quot;. If the thing goes wrong, you can always say that the project started under different preconditions, and that this was agreed with everyone beforehand. You don&#39;t need to be afraid that it will not be agreed. Nobody ever reads these boring parts of the project plan in a review.</p>
<p>Make sure to keep some easy-to-manage risks for the risk table, otherwise people could get suspicious. Furthermore, as we have seen above, you need risks to justify the risk premiums, and you need some easy risk-related activities to fill your progress report.</p>
<p>After the inevitable removal of the contingency discovered, as mentioned above, don&#39;t forget to add &quot;best-case planning required by management&quot; as top risk. You are safe in not adding any risk aversion action to this one. As a matter of fact, quoting that risk is only a small favor you can do for higher-level management, who like to be pictured as brave managers, determined to take risks if necessary.</p>
<p>Status reports are a project managers appraisal sheets, and it comes in handy, that these are written by yourself. It would be a pity not to use that to its full advantage. Besides the obvious acclamation of any real or plausible sounding achievements, one has to follow just a few simple rules.</p>
<p class="r">Never report delays as long as it makes sense to stop the project</p>
<p>This is one of the basic principles for successful project managers. Nobody stops a project that is 80% completed because of a 30% budget overrun. That&#39;s quite different in the first half of the project. Fortunately, this principle is dead easy to follow, as it just requires not doing something. Fill the time in the steering meetings with success stories and complaints about the customer. That should be sufficient to convince higher-level management that these meetings need to be short.</p>
<p class="r">Never report delays as long as there is a chance that someone else has to</p>
<p>If you have a delay, wait until some external deliverable doesn&#39;t come in time. When that happens, your own delay to be enforced is calculated as the external delay plus your replanning time. The replanning time is never less than two weeks. If you need an external delay urgently, ask the customer to provide some clarification till the end of the week. Then say it&#39;s insufficient.</p>
<p class="r">Multiply enforced delays by team members</p>
<p>There is a strikingly simple formula to calculate the budget overrun from an enforced delay. Just multiply it by the headcount in your project, no matter how many people are actually affected by the delayed deliverable. Even avoid that concept of &quot;people affected&quot; in your reports, and rely on the sheer beauty and simplicity of the argument.</p>
<p class="r">In progress reports, only report actuals and planned totals</p>
<p>Project tracking is comparing actuals with plans. What you have to avoid, however, is comparing actuals with up-to-today totals, as this would mean comparing apples with apples, which in turn could lead to dangerous conclusions. You have to start this practice at the beginning, when it doesn&#39;t really matter yet, and later when people start to complain, say it&#39;s the way it was always done and it would be unwise to change reporting procedures in critical phases of a project.</p>
<p class="r">Call it extreme project management</p>
<p>This is a Jolly Joker explanation. Whenever you fail to come up with a good enough reason for anything, tell them you are applying extreme project management. Never get involved in discussions about details here. If someone insists and asks what exactly that means, or wants to know why that would be appropriate, then just refer them to &quot;the literature&quot; and advise them to learn a little more about modern management methodologies before one can continue such a discussion.</p>
<p>If milestones were supposed to be shifted around they would be called pebbles. Just like a week is a week, no matter what happens, a project phase has to end when the time is there, no matter what has been accomplished. The purpose of a milestone meeting is to celebrate the achievements of the passed project-phase with a glass of champagne or coffee and donuts, whatever your company&#39;s style allows.</p>
<p>Occasionally, people have the notion that the passing of a milestone needs to be &quot;decided&quot;, as if the passing of a year needed to be decided. That rarely comes from higher-level management, as they love their champagne, but if it does, you have to be careful. In that case, you discuss whatever issues they bring up at length and then, while they pour the champagne, say you will document the decisions in the milestone report.</p>
<p class="r">Report vague results of milestone meetings</p>
<p>No questions, the milestone is still passed, but you have to bring in the higher-level management objections in a constructive way. You do this by using some attributes, such as calling the milestone &quot;conditionally passed&quot;. Don&#39;t list any conditions in that case, that could later be used against you. Another variant is calling it &quot;provisionally passed&quot;, or something along those lines, just make sure you can refer to the milestone as &quot;passed&quot; in the next meeting.</p>
<p>Re-used modules are blame-tickets. Make sure to re-use plenty of code from previous projects, the more the better. Then track all the difficult bugs to some re-used code, even if the code was never intended to be used the way you use it. As the code comes from a team that doesn&#39;t exist anymore, it&#39;s as easy as winning a tennis match against a ghost. The good thing now is, that you can still prove that despite all these bugs, your decision to re-use was right, because writing all that tons of code from scratch would have been prohibitively expensive, so you saved an enormous amount of money.</p>
<p class="r">No-one was ever accused of having too much re-use</p>
<p>Another brilliant aspect of code re-use is, that a fair amount of extra costs can be justified by claiming that you make your code re-usable. Ideally, of course, your code will never actually be re-used, but even if it were, you wouldn&#39;t be there anymore. It also wouldn&#39;t make a difference to your bonus, because no higher-level manager has ever been known to distinguish between re-usable code and re-used code.</p>
<p>Never mention the project team in communication with higher-level management. Talk about you, or at most talk about &quot;the project&quot;. The team is just a tool to accomplish some work, and you don&#39;t talk a lot about your hammer, do you?</p>
<p class="r">Don&#39;t be popular within the project team</p>
<p>On the other hand, make sure the team talks about you whenever they happen to communicate with higher-level management. Furthermore, make sure they don&#39;t spread the impression that they like working for you. A project manager is not being paid for making the project team happy. If they are, it is always seen as an indication that you are unable to squeeze the last bit of productivity out of them, which is one of the worst things that could happen to your reputation.</p>
<p>Project end dates could be treated like other milestones, if it weren&#39;t for the peculiarity of product shipment. The principle of immovability still holds, but creativity may be needed for the delivery part. If the product isn&#39;t finished, you can still ship it, as long as you make sure that it&#39;s also untestable. There are a number of techniques to achieve this, which all have in common that they exploit properties of the test environment. You can make the product uninstallable, or you can make use of a limitation of the operating system, the platform or the database that is used, so that it won&#39;t run. These considerations cannot, of course, be left to the last minute. It must be a top priority task of your best engineers to identify these shipment variants before they build the product, and it must be a guiding design principle from the very beginning.</p>
<p class="r">Declare your uncompleted project as finished</p>
<p>Whatever the outcome of the attempts to test the product, after the final shipment, there must be no such thing as an open task. That&#39;s easy to achieve, because, after all, it&#39;s the project manager who decides when a task can be considered finished. The only things that are left after you close all tasks, are the so-called &quot;follow-up activities&quot;. These are, however, much better taken care of outside the project, for instance as &quot;maintenance&quot; under the supervision of line management, or within the next project, as long as it isn&#39;t yours.</p>
<p>It is rarely necessary to point out to higher-level management how wise it is to close the project as long as it is still possible to call it a huge success. They wouldn&#39;t be higher level if they wouldn&#39;t know the advantages of having successful projects within their area of responsibility. Keeping those simple tactics in mind really creates a win-win situation for everyone.</p>
<ol>
<li class="r">Natural enemies of a project manager
<ul>
<li>the customer</li>
<li>the project team</li>
<li>the higher-level management</li>
</ul>
</li>
<li class="r">The customer is a mean to an end</li>
<li class="r">Plan the planning</li>
<li class="r">Requirements are not required</li>
<li class="r">Risks are too risky</li>
<li class="r">Keep the reports clean</li>
<li class="r">Milestones are fixed</li>
<li class="r">Embrace re-use</li>
<li class="r">Your project team is not your electorate</li>
<li class="r">All good things must come to an end</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.allfreetech.com/development/10-lessons-in-guerilla-tactics-of-project-management-95.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>All We Need to Know About Software Project Management, We Can Learn From Watching Star Trek</title>
		<link>http://www.allfreetech.com/development/all-we-need-to-know-about-software-project-management-we-can-learn-from-watching-star-trek-104.html</link>
		<comments>http://www.allfreetech.com/development/all-we-need-to-know-about-software-project-management-we-can-learn-from-watching-star-trek-104.html#comments</comments>
		<pubDate>Sun, 23 Nov 2008 05:09:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://www.allfreetech.com/development/all-we-need-to-know-about-software-project-management-we-can-learn-from-watching-star-trek-104.html</guid>
		<description><![CDATA[Are you Kirk, Spock, Sulu, Chekov, Uhura, or Scotty? If you are part of a modern-day software engineering team, chances are you fit one of these roles. As we have read about Star Trek&#8217;s influence on technology, sit back for a warp drive look at how a software engineering team&#8217;s structure mimics that of the [...]]]></description>
			<content:encoded><![CDATA[<p><span class="ctAbstract">Are you Kirk, Spock, Sulu, Chekov, Uhura, or Scotty? If you are part of a modern-day software engineering team, chances are you fit one of these roles. As we have read about Star Trek&rsquo;s influence on technology, sit back for a warp drive look at how a software engineering team&rsquo;s structure mimics that of the Star Trek bridge crew.<span id="more-104"></span></span></p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">A few months ago, I watched a cable TV show which asserted that a <i>Star</i> <i>Trek</i> actor had <i>changed the world</i>. While the idea that William Shatner had single-handedly brought about the 21st century as we know it was funny, the information presented was pretty convincing that the science fiction show had a major impact on modern technology. Just call your bank&rsquo;s voice-recognition computer using your flip-phone and &hellip; well, you get the picture. And it does not end with the original series; those reconfigurable, flat-panel touch screens that Geordi and Data sit in front of in <i>The Next Generation</i> can now be found in just about every fast food restaurant!</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">As I marveled at the effects a television series had had on our modern lives, I suddenly realized that most of the current software generation had grown up with <i>Star Trek</i>. I began wondering what effect this had on our approaches to software development and management. What I discovered I have termed <i>The Gene Roddenberry Effect</i>: Everything we do in software project management originated with <i>Star Trek</i>. I have developed a list of lessons learned from <i>Star Trek</i> that I regularly employ.</p>
<p><strong><span class="ctSectionTitle">The Bridge Crew </span></strong></p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">One surprising example of how <i>Star Trek</i>has affected software project management is how the composition of the bridge crew on the starship Enterprise reflects that of current software teams. In the original series, most of the stories centered around the bridge crew: Kirk, Spock, Sulu, Chekov, Uhura, Scotty (you know the names). Kirk was the ultimate leader and decision-maker, Spock was second-in-command and science officer, and all the others had specific job titles as well.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">Modern industry has pretty much borrowed this structure for software engineering teams. Every project has a project manager (PM), a technical expert who acts as backup PM, a chief engineer, a communications officer (configuration manager), and so forth. The PM calls the shots, much like the captain (Kirk), and everyone else performs their particular jobs and regularly reports back to him. When the team has issues, it gathers in a conference room and projects everything on a flat panel monitor for all to review. The team makes a group decision, guided and ratified by Kirk. Watch those conference meetings in the original series and see if you get goose pimples at how similar they are to the meetings you go to each week.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">Perhaps most surprising is the similarity between the bridge crew concept in conjunction with the Software Engineering Institute&rsquo;s (SEI) Team Software Process (TSP). The TSP is SEI&rsquo;s <i>how-to</i> guide for implementing high-maturity software engineering teams. In the TSP, each member of the team is given one of eight management roles. As I began looking at them, I was amazed at how closely they matched the bridge crew concept (see Table 1).</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<p>	<img alt="Table 1: TSP Roles vs Enterprise Bridge Crew" border="0" height="190" src="http://www.stsc.hill.af.mil/crosstalk/2006/10/0610Webb_Tab1.jpg" width="525" /><br />
	Table 1:<span class="ctCaption"> TSP Roles vs Enterprise Bridge Crew</span></p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">What is even more interesting is that many TSP teams actually do double up on roles as shown in Table 1. If they do not have eight people to perform the different roles, people take on more than one.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">But wait; it gets even better.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">Once we move to <i>The Next Generation</i> series, we find a whole new bridge crew with expanded roles. In this case, Picard, the captain, is no longer the PM, but has risen to the rank of <i>senior management</i>(as described in SEI&rsquo;s Capability Maturity Model Integration 1.1). We can see from Table 2 that the team concept has matured aboard the newer Enterprise and that our more modern approaches to the software team concept have mimicked this structure.</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<p>	<img alt="Table 2: TSP Roles vs The Next Generation Enterprise Bridge Crew" border="0" height="207" src="http://www.stsc.hill.af.mil/crosstalk/2006/10/0610Webb_Tab2.jpg" width="525" /><br />
	Table 2:<span class="ctCaption"> TSP Roles vs The Next Generation Enterprise Bridge Crew</span></p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">We could go even further and examine the newer <i>agile</i> development methodologies only to discover that as the <i>Star Trek</i>series matured, so did their concepts of teams and agility. Captain Janeway&rsquo;s Federation/Maquis team aboard Voyager, for example, is the epitome of an agile team. In any case, whether or not it was done intentionally, it seems that modern software teams are indeed modeled after the <i>Star Trek</i> bridge crews. Some of the agile methods even measure a project <i>velocity</i>. A coincidence? Well, maybe.</p>
<p><strong><span class="ctSectionTitle">Lessons Learned </span></strong></p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">So, with the obvious links between the <i>Star Trek</i> universe and the way we manage software projects, what else we can learn from <i>Star Trek</i> that can actually help us in our day-to-day management of software projects? The following are the 10 project management tips I use most often:</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">&nbsp;</p>
<ol>
<li>When push comes to shove, it&rsquo;s always a computer geek who comes to the rescue! (Watch just about every <i>Star Trek: The Next Generation</i>episode with Wesley Crusher.)</li>
<li>Your greatest challenges can be the ones you thought you got rid of 200 years ago. (Remember Kahn [Ricardo Montalban] from the original episode <i>Space Seed</i>and the movie <i>Star Trek II</i>? Remember Y2K?)</li>
<li>If everyone on your project is too happy, you probably are not accomplishing anything. (Yes, it&rsquo;s the hippie episode about the spores, called <i>This Side of Paradise</i>. For those who are not ardent fans, trust us on this one.)</li>
<li>You cannot change the laws of physics, but you <i>can</i>bend them. (This is a line made famous by Scotty in the original series episode entitled <i>The Naked Time</i>.)</li>
<li>There is no such thing as a no-win scenario, especially if you change the conditions of the test. (This is Kirk&rsquo;s philosophy and fits pretty well into his profile above! Watch <i>Star Trek II &ndash; The Wrath of Kahn</i>for how this worked for him &hellip; or did not.)</li>
<li>Every successful project manager has both a good side and bad side and knows how to balance them. (Let&rsquo;s just hope you do not beat yourself up the way Kirk did in <i>The Enemy Within</i>&ndash; literally. In that episode, Kirk had an <i>evil twin</i>created by a transporter malfunction.)</li>
<li>Don&rsquo;t feed the Tribbles or they will overrun you! (Substitute your own set of problems for Tribbles as seen in <i>The Trouble with Tribbles</i>. If you do not know what a Tribble is, why are you reading this article?)</li>
<li>If you do not apply a lot of power to break away from your routine, you are doomed to repeat the same mistakes over and over again for eternity. ( <i>The Causality Loop</i>from <i>The Next Generation</i>&ndash; great episode! Go rent it!)</li>
<li>Some people can be very afraid of change. (Let us just hope it doesn&rsquo;t lead to the shedding of blood, red or pink as it did in the movie <i>Star Trek VI &ndash; The Undiscovered Country</i>.)</li>
<li>Always multiply your estimates by a factor of four so that you will be known as a <i>miracle worker</i>. (This comes from the movie <i>Star Trek III &ndash; The Search for Spock</i>, and we have no comment as to why this is number one or how we implement it; especially if any of our customers are reading this!)</li>
</ol>
<p><strong><span class="ctSectionTitle">Conclusion </span></strong></p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">While this article is a bit tongue-in-cheek, it&rsquo;s amazing how closely our software engineering practices mirror<i>Star Trek</i>. So live long, prosper, and remember to thank (or maybe curse) the <i>great bird of the galaxy</i> next time you put together those PowerPoint slides for your management review!</p>
<p xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema"><strong xmlns:msn="http://www.stsc.hill.af.mil/msn" xmlns:xs="http://www.w3.org/2001/XMLSchema">David R. Webb</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.allfreetech.com/development/all-we-need-to-know-about-software-project-management-we-can-learn-from-watching-star-trek-104.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

