<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Simple^4 Xiaoming Wang</title>
	
	<link>http://ossme.com</link>
	<description>Unfortunate day dreamer</description>
	<pubDate>Fri, 07 Nov 2008 08:39:20 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/ossme/feed" type="application/rss+xml" /><feedburner:browserFriendly></feedburner:browserFriendly><item>
		<title>The spring of IT is coming</title>
		<link>http://ossme.com/2008/11/03/the-spring-of-it-is-coming/</link>
		<comments>http://ossme.com/2008/11/03/the-spring-of-it-is-coming/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 16:05:55 +0000</pubDate>
		<dc:creator>xiaoming</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<category><![CDATA[Travel]]></category>

		<category><![CDATA[business]]></category>

		<category><![CDATA[economics recession]]></category>

		<category><![CDATA[financial crisis]]></category>

		<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://ossme.com/?p=37</guid>
		<description><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/11/03/the-spring-of-it-is-coming/&t=The spring of IT is coming&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><h3>Dot-com bubbles</h3>
<p></ br></p>
<div>Looking back a decade ago, Dot-com bubbles in 1995-2001 especially its climax in 2000 was hardly forgotten. The decline of IT, specifically Dot-come business defeated the confidence of IT investors and employees. The IT industry did not fall over, innovation of hardware and software, Web 2.0, google and new age of Internet started fighting back to the business. Investors and marketing also doted Web business, such as success of <span class="misspell">SNS</span>. More money came into IT industry. Enterprises invested more in IT in order to develop their business and bring innovation to help business going forward. Probably no one did imagine around 2000 that IT giant would be able to come back so attractively and vivid.</div>
<div>
<h3>Financial crisis and Economics recession</h3>
<p></ br><br />
Finance institutions are always the core of world economic system. Investment banks, funds have innovated a big amount of products and tools to make profit aggressively. IT played a crucial role of building information system to transfer information, calculate risks efficiently and guarantee the continuity of business. Financial system hugely depends on IT system. When the financial crisis <span class="misspell">spreaded</span> all over the world in 2008, the Wall street experienced a scary nightmare in a coupe of months, Lehman Brother, Merrill lynch and Bear <span class="misspell">Stearns</span> fell down over night. There were huge impact on other business too rather than financial business itself because lack of liquidity and loss of confidence of investment. Business started cut off cost and save enough liquidity to prepare for even worse economics situation. No one can ignore the fact that world economics recession. The UK chancellor reported that GDP decreased 0.5% in the 3rd quarter which means the economics of the UK, one of the world top 5 economies is recessing. The US is also experiencing a huge pain and injected more than 700 billion dollars into their financial system. Car manufactures, toy makers, and other manufacturing had to shut down their business.</p>
</div>
<h3>Challenge of IT industry</h3>
<p></ br></p>
<div>IT industry can not escape from the economics recession. Unfortunately, the IT investment was hugely cut off. IT industry laid off employees. In people&#8217;s mind, IT cost money. I recently attended a economics discussion panel which was held by China Economics Research Center. I clearly remembered that one of the key note speaker said &#8220;IT had never produced productivity. 20 years ago, stock market can use telegram to transfer message and make the transaction without IT.&#8221; I personally very much disagree with his opinion, although it was not totally ridiculous. So what does IT do to help business? Generally, IT improves the efficiency and reduces the likelihood of making mistakes of business. It looks like that IT does not add value to business directly, however without IT, business can not grow so fast and so efficiently and there would not be such good service without the support of Information system and IT infrastructure. The financial crisis impact real economy directly and slow down the investment on IT indirectly. Now IT is facing a very critical time. Where is the way out? How much should IT industry worry?</div>
<div>
<h3>Opportunities of financial industry</h3>
<p></ br>
</div>
<div>One of the way outs is to help the business better, faster and more customer focusing. Jamie <span class="misspell">Dimon</span> CEO of JP Morgan Chase recently was interviewed by CCTV and through the whole conversation, he emphasized several times that the success of JP Morgan Chase was more customer focusing, better product and server, faster responded to the market.  From what he believes, how can IT help financial industry more customer focusing, provide better service, product and faster respond to the marketing is one way out. Some real life examples are:</p>
<ul>
<li>Short life-cycle of project delivery.</li>
<li>End-user, customer focusing design and continuous improvement</li>
<li>Cloud and Grid computing to help transaction faster and efficiently.</li>
<li>Business Intelligence to help analyzes customer&#8217;s preference etc.</li>
</ul>
<p>There are definitely more that IT can do in order to help business to achieve their goals. One of the reason that the US learnt from the financial crisis is that lack of effective supervision and Inappropriate regulations. In order to build or reform the existing financial system, a set of new rules, regulations, tools and products would come out. A new system which can lower the risks of investment and make the whole process clear and easy to supervised. All these changes need new information system or business re-engineering of existing system. Only IT can help business to make that happen. It is a great opportunity for IT to server government, industry and business to build good basis of the better financial system  and go forward.</p>
</div>
<h3>Real economy need IT innovation</h3>
<p></ br></p>
<div>During the economics recession, business is in a awkward situation, on one hand, they want to less spend and on the other hand they have to invest and innovate new ways of doing things in order to grow and increase profitability. Whatever primary, secondary industry, they have no choice to get rid of IT and live by their own. A good information system can bring them into the market faster with better service.</div>
<div>So, even it is still cold, it is close to the end of winter and there are more demand floating up and the spring of IT is coming.</div>
<h3>So what shall IT do to be prepared for the coming spring?</h3>
<p></ br></p>
<div>As Jamie <span class="misspell">Dimon</span> mentioned in his interview, looking back into the mistakes that we had made, learn from where we fell down. This is definitely one thing that IT should learn from the financial crisis. Reducing the risks of investment, pay more attention to how to help business to generate more productivity is the second aspect IT should be aware of. Be more customer/marketing focusing, better and faster, align with the growth of business, feel what business feel and be responsible for what business is.  More innovated ideas, products and brand new ways of doing things is always a way out. Certainly there are more things that IT can do instead of waiting for the end of the world. I believe that the spring of IT is coming after this short winter. There will be more opportunities than ever.</div>
]]></description>
			<content:encoded><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/11/03/the-spring-of-it-is-coming/&t=The spring of IT is coming&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><h3>Dot-com bubbles</h3>
<p></ br></p>
<div>Looking back a decade ago, Dot-com bubbles in 1995-2001 especially its climax in 2000 was hardly forgotten. The decline of IT, specifically Dot-come business defeated the confidence of IT investors and employees. The IT industry did not fall over, innovation of hardware and software, Web 2.0, google and new age of Internet started fighting back to the business. Investors and marketing also doted Web business, such as success of <span class="misspell">SNS</span>. More money came into IT industry. Enterprises invested more in IT in order to develop their business and bring innovation to help business going forward. Probably no one did imagine around 2000 that IT giant would be able to come back so attractively and vivid.</div>
<div>
<h3>Financial crisis and Economics recession</h3>
<p></ br><br />
Finance institutions are always the core of world economic system. Investment banks, funds have innovated a big amount of products and tools to make profit aggressively. IT played a crucial role of building information system to transfer information, calculate risks efficiently and guarantee the continuity of business. Financial system hugely depends on IT system. When the financial crisis <span class="misspell">spreaded</span> all over the world in 2008, the Wall street experienced a scary nightmare in a coupe of months, Lehman Brother, Merrill lynch and Bear <span class="misspell">Stearns</span> fell down over night. There were huge impact on other business too rather than financial business itself because lack of liquidity and loss of confidence of investment. Business started cut off cost and save enough liquidity to prepare for even worse economics situation. No one can ignore the fact that world economics recession. The UK chancellor reported that GDP decreased 0.5% in the 3rd quarter which means the economics of the UK, one of the world top 5 economies is recessing. The US is also experiencing a huge pain and injected more than 700 billion dollars into their financial system. Car manufactures, toy makers, and other manufacturing had to shut down their business.</p>
</div>
<h3>Challenge of IT industry</h3>
<p></ br></p>
<div>IT industry can not escape from the economics recession. Unfortunately, the IT investment was hugely cut off. IT industry laid off employees. In people&#8217;s mind, IT cost money. I recently attended a economics discussion panel which was held by China Economics Research Center. I clearly remembered that one of the key note speaker said &#8220;IT had never produced productivity. 20 years ago, stock market can use telegram to transfer message and make the transaction without IT.&#8221; I personally very much disagree with his opinion, although it was not totally ridiculous. So what does IT do to help business? Generally, IT improves the efficiency and reduces the likelihood of making mistakes of business. It looks like that IT does not add value to business directly, however without IT, business can not grow so fast and so efficiently and there would not be such good service without the support of Information system and IT infrastructure. The financial crisis impact real economy directly and slow down the investment on IT indirectly. Now IT is facing a very critical time. Where is the way out? How much should IT industry worry?</div>
<div>
<h3>Opportunities of financial industry</h3>
<p></ br>
</div>
<div>One of the way outs is to help the business better, faster and more customer focusing. Jamie <span class="misspell">Dimon</span> CEO of JP Morgan Chase recently was interviewed by CCTV and through the whole conversation, he emphasized several times that the success of JP Morgan Chase was more customer focusing, better product and server, faster responded to the market.  From what he believes, how can IT help financial industry more customer focusing, provide better service, product and faster respond to the marketing is one way out. Some real life examples are:</p>
<ul>
<li>Short life-cycle of project delivery.</li>
<li>End-user, customer focusing design and continuous improvement</li>
<li>Cloud and Grid computing to help transaction faster and efficiently.</li>
<li>Business Intelligence to help analyzes customer&#8217;s preference etc.</li>
</ul>
<p>There are definitely more that IT can do in order to help business to achieve their goals. One of the reason that the US learnt from the financial crisis is that lack of effective supervision and Inappropriate regulations. In order to build or reform the existing financial system, a set of new rules, regulations, tools and products would come out. A new system which can lower the risks of investment and make the whole process clear and easy to supervised. All these changes need new information system or business re-engineering of existing system. Only IT can help business to make that happen. It is a great opportunity for IT to server government, industry and business to build good basis of the better financial system  and go forward.</p>
</div>
<h3>Real economy need IT innovation</h3>
<p></ br></p>
<div>During the economics recession, business is in a awkward situation, on one hand, they want to less spend and on the other hand they have to invest and innovate new ways of doing things in order to grow and increase profitability. Whatever primary, secondary industry, they have no choice to get rid of IT and live by their own. A good information system can bring them into the market faster with better service.</div>
<div>So, even it is still cold, it is close to the end of winter and there are more demand floating up and the spring of IT is coming.</div>
<h3>So what shall IT do to be prepared for the coming spring?</h3>
<p></ br></p>
<div>As Jamie <span class="misspell">Dimon</span> mentioned in his interview, looking back into the mistakes that we had made, learn from where we fell down. This is definitely one thing that IT should learn from the financial crisis. Reducing the risks of investment, pay more attention to how to help business to generate more productivity is the second aspect IT should be aware of. Be more customer/marketing focusing, better and faster, align with the growth of business, feel what business feel and be responsible for what business is.  More innovated ideas, products and brand new ways of doing things is always a way out. Certainly there are more things that IT can do instead of waiting for the end of the world. I believe that the spring of IT is coming after this short winter. There will be more opportunities than ever.</div>
]]></content:encoded>
			<wfw:commentRss>http://ossme.com/2008/11/03/the-spring-of-it-is-coming/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Messenger and Bottle neck</title>
		<link>http://ossme.com/2008/10/18/messenger-and-bottle-neck/</link>
		<comments>http://ossme.com/2008/10/18/messenger-and-bottle-neck/#comments</comments>
		<pubDate>Sat, 18 Oct 2008 15:58:57 +0000</pubDate>
		<dc:creator>xiaoming</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://ossme.com/?p=36</guid>
		<description><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/10/18/messenger-and-bottle-neck/&t=Messenger and Bottle neck&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><div><strong>          &#8212;&#8211; A story about mirror game, messenger, bottle neck and bus factor.</strong>      </div>
<blockquote><p>A story </p></blockquote>
<div>Back to the school days, there was a quite interesting game called Mirror. It need no less than 5 or 6 people to participate. The players stand in one line. Each one can only see the players besides him. Then the host told the first player &#8220;an action&#8221;. It was start from the one player to show an action to the second one. Then each player has to try to do exactly the same action one by one. In the end the last player&#8217;s performance turned out to be very much different as the first one who stands at the front of the line. Audience laughed because they observed the misunderstanding between players. Actually,it will be more fun to get more people involved. Let&#8217;s imagine, if we have only two players, they could much better and the game would not be fun any more.               </p>
<div id="dg4s1">The story told us that information would get lost or being misunderstood by passing through human beings. As it was passed by more people the there would be more information lost or misunderstood. The information would lose more quicker as it was more complex. We call the players who only pass the message messenger. <br id="f6xg0" /><br id="mkcb" />                </p>
<blockquote><p>How bad is it?</p></blockquote>
<p><img class="alignright" style="float: right;" src="http://ossme.com/IMG/Complexity_InfoLost.bmp" alt="Axis of complexity and information lost" width="400" height="300" /></p>
</div>
<div id="dg4s1">Communication management is a crucial part of program/project management. How bad is it in a project, especially IT project? If the number of messengers is at a certain level, the project will lose efficiency, get more risky, even worse, it might fail in the end. 90% of time when there are messengers in a project, there is bottlenecks along. In a general project management course, lecturers talk about something called &#8220;bus factor&#8221;. If a member of the team were hit by a bus this morning, this team would not be able to continue producing enough productivity or could not work at all. This member is called bottleneck. No projects want bottlenecks unfortunately they do exist and sometimes, they play vital roles.</div>
<p><img class="alignright" style="float: right; border: 0;" src="http://ossme.com/IMG/bottle%20neck.bmp" alt="bottle neck" width="300" height="205" /></p>
<div id="dg4s1">Let&#8217;s take a look at two typical program/project models.  From the graph, we can discover, the two bigger smiley faces have one team behind them. However these two people are the only interface between the two teams. If either of them can not make it to work, the whole program might have to halt. The whole team might have to wait for someone else to be the interface and reconnect the communication. </div>
<p><img class="alignleft" style="float: left;" src="http://ossme.com/IMG/messenger.bmp" alt="messenger" width="300" height="205" /></p>
<div>Another model , which I called messenger model. People who are in the middle lever play a role to pass information between front and back layers. </div>
<div id="dg4s1">It might not be as bad as the model of bottlenecks however, we can easily tell that people in the middle layer increase the cost of communication. The accuracy of the information would decrease because this extra layer. Someone might ask why and when it happens in a program/project?</div>
<p> </p>
<div id="dg4s1">    </div>
<div id="dg4s1">
<p> </p>
<p> </p>
<blockquote><p>Reasons:</p></blockquote>
</div>
<div id="dg4s1">
<ul>
<li>When a program builds basic structure, managers sometimes prefer to only having senior people to be interfaces or having people to take order from them.</li>
<li>Even a program is originally well build, as long as it is growing, the role and responsibility of some team members might get confusing, during this stage, messengers might come out.</li>
</ul>
</div>
<div id="dg4s1"><br id="mkcb3" />                </p>
<blockquote><p><img class="alignright" style="float: right;" src="http://ossme.com/IMG/solution.bmp" alt="solution" width="400" height="300" />How to solve?</p></blockquote>
</div>
<div id="dg4s1">Is there any way to avoid this happening or if it happens already how to solve it?</div>
<div id="dg4s1">
<ol>
<li>Do not let one person to be the interface. Get more people involved in the communication.</li>
<li> Share responsibilities across roles. e.g. PM, senior business person, senior technical person should be able to back each other up.</li>
<li>Have a team shape flatter. Sharing rather than passing information.</li>
<li>Review program structure when it is growing, reconstruct the team and eliminate messengers or bring them to a upper or lower level.</li>
<li>Do not make the whole program one team, because it is too difficult to manage the communication. Bear in mind, communication cost. It&#8217;s better to think of cost efficient way to do communication. Such as stand up meetings, pair working etc.</li>
</ol>
</div>
<div id="dg4s1">
<p> </p>
<blockquote><p>Summary</p></blockquote>
<p>When a program/project knows the waste and risk of having bottlenecks and messengers, the team should continuously review the structure and ensure that everyone in the team actually contribute value rather than create waste or make trouble.</p>
</div>
</div>
]]></description>
			<content:encoded><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/10/18/messenger-and-bottle-neck/&t=Messenger and Bottle neck&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><div><strong>          &#8212;&#8211; A story about mirror game, messenger, bottle neck and bus factor.</strong>      </div>
<blockquote><p>A story </p></blockquote>
<div>Back to the school days, there was a quite interesting game called Mirror. It need no less than 5 or 6 people to participate. The players stand in one line. Each one can only see the players besides him. Then the host told the first player &#8220;an action&#8221;. It was start from the one player to show an action to the second one. Then each player has to try to do exactly the same action one by one. In the end the last player&#8217;s performance turned out to be very much different as the first one who stands at the front of the line. Audience laughed because they observed the misunderstanding between players. Actually,it will be more fun to get more people involved. Let&#8217;s imagine, if we have only two players, they could much better and the game would not be fun any more.               </p>
<div id="dg4s1">The story told us that information would get lost or being misunderstood by passing through human beings. As it was passed by more people the there would be more information lost or misunderstood. The information would lose more quicker as it was more complex. We call the players who only pass the message messenger. <br id="f6xg0" /><br id="mkcb" />                </p>
<blockquote><p>How bad is it?</p></blockquote>
<p><img class="alignright" style="float: right;" src="http://ossme.com/IMG/Complexity_InfoLost.bmp" alt="Axis of complexity and information lost" width="400" height="300" /></p>
</div>
<div id="dg4s1">Communication management is a crucial part of program/project management. How bad is it in a project, especially IT project? If the number of messengers is at a certain level, the project will lose efficiency, get more risky, even worse, it might fail in the end. 90% of time when there are messengers in a project, there is bottlenecks along. In a general project management course, lecturers talk about something called &#8220;bus factor&#8221;. If a member of the team were hit by a bus this morning, this team would not be able to continue producing enough productivity or could not work at all. This member is called bottleneck. No projects want bottlenecks unfortunately they do exist and sometimes, they play vital roles.</div>
<p><img class="alignright" style="float: right; border: 0;" src="http://ossme.com/IMG/bottle%20neck.bmp" alt="bottle neck" width="300" height="205" /></p>
<div id="dg4s1">Let&#8217;s take a look at two typical program/project models.  From the graph, we can discover, the two bigger smiley faces have one team behind them. However these two people are the only interface between the two teams. If either of them can not make it to work, the whole program might have to halt. The whole team might have to wait for someone else to be the interface and reconnect the communication. </div>
<p><img class="alignleft" style="float: left;" src="http://ossme.com/IMG/messenger.bmp" alt="messenger" width="300" height="205" /></p>
<div>Another model , which I called messenger model. People who are in the middle lever play a role to pass information between front and back layers. </div>
<div id="dg4s1">It might not be as bad as the model of bottlenecks however, we can easily tell that people in the middle layer increase the cost of communication. The accuracy of the information would decrease because this extra layer. Someone might ask why and when it happens in a program/project?</div>
<p> </p>
<div id="dg4s1">    </div>
<div id="dg4s1">
<p> </p>
<p> </p>
<blockquote><p>Reasons:</p></blockquote>
</div>
<div id="dg4s1">
<ul>
<li>When a program builds basic structure, managers sometimes prefer to only having senior people to be interfaces or having people to take order from them.</li>
<li>Even a program is originally well build, as long as it is growing, the role and responsibility of some team members might get confusing, during this stage, messengers might come out.</li>
</ul>
</div>
<div id="dg4s1"><br id="mkcb3" />                </p>
<blockquote><p><img class="alignright" style="float: right;" src="http://ossme.com/IMG/solution.bmp" alt="solution" width="400" height="300" />How to solve?</p></blockquote>
</div>
<div id="dg4s1">Is there any way to avoid this happening or if it happens already how to solve it?</div>
<div id="dg4s1">
<ol>
<li>Do not let one person to be the interface. Get more people involved in the communication.</li>
<li> Share responsibilities across roles. e.g. PM, senior business person, senior technical person should be able to back each other up.</li>
<li>Have a team shape flatter. Sharing rather than passing information.</li>
<li>Review program structure when it is growing, reconstruct the team and eliminate messengers or bring them to a upper or lower level.</li>
<li>Do not make the whole program one team, because it is too difficult to manage the communication. Bear in mind, communication cost. It&#8217;s better to think of cost efficient way to do communication. Such as stand up meetings, pair working etc.</li>
</ol>
</div>
<div id="dg4s1">
<p> </p>
<blockquote><p>Summary</p></blockquote>
<p>When a program/project knows the waste and risk of having bottlenecks and messengers, the team should continuously review the structure and ensure that everyone in the team actually contribute value rather than create waste or make trouble.</p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ossme.com/2008/10/18/messenger-and-bottle-neck/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agile Requirement Management</title>
		<link>http://ossme.com/2008/05/30/agile-requirement-management/</link>
		<comments>http://ossme.com/2008/05/30/agile-requirement-management/#comments</comments>
		<pubDate>Fri, 30 May 2008 13:47:53 +0000</pubDate>
		<dc:creator>xiaoming</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://ossme.com/?p=34</guid>
		<description><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/05/30/agile-requirement-management/&t=Agile Requirement Management&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><p>Recently, there was a thread in e-mail talking about why BA (Business Analyst) is needed in a software development project. The reason is that some of our client have concern why they need pay such a relative high rate for a BA. The argument is what the value of BA is? There are three crucial expertise that BA has.</p>
<ul>
<li> Requirement Management</li>
<li>User Interface Design</li>
<li>Domain Knowledge and Experience</li>
</ul>
<p>I am not going to talk about why domain experts and UI designers are important in a project. BA also take the responsibility of managing requirement in an agile project. In some projects, we called the role Requirement Manager.</p>
<p>So how does BA manage requirement? We group the activities into these four processes.:</p>
<ul>
<li>Requirement Gathering</li>
<li>Requirement Analyze</li>
<li>Requirement documented</li>
<li>Project planning</li>
</ul>
<p>I will talk them through with some examples.</p>
<blockquote><p>Requirement Gathering</p></blockquote>
<p>There are so many ways and tactics to gather requirement. Such as end user interview, expert interview, questionnaire, observation, experiment, brainstorming, and etc. In many case, a project choose a unefficient process to gather requirement although they might use many good methods and tools. A typical diagram of project requirement hierarchy is</p>
<p style="text-align: center;"><img style="vertical-align: middle;" src="http://ossme.com/IMG/RequirementManagement_Bad.bmp" alt="http://ossme.com/IMG/RequirementManagement_Bad" width="351" height="460" /></p>
<p>As we can see, the cost of communication is big, also the bad impact of this hierarchy is that lots of requirement were lost or misunderstood by the team during the transportation. It is even worse, the team might understand the requirement in different way, finally what we developed might not be what end user really wanted.  The team member could get different information and decision from PM, BAs or QAs. It is a nightmare for a team in a tough schedule.  What we can do in order to solve the problem is to bring the three layers in the middle into one. And organize them as one requirement management team.</p>
<p style="text-align: center;"><img style="vertical-align: middle;" src="http://ossme.com/IMG/RequirementManagement_Good.bmp" alt="http://ossme.com/IMG/RequirementManagement_Good" width="322" height="320" /></p>
<p>With this way, business analyst, domain experts and project manager can work together to help the customers and end users understand their problems well with their expertise.</p>
<blockquote><p>Requirement analyze</p></blockquote>
<p>There are some basic tricks for requirement analysis. Such as 5W1H (What, Who, Where, When, Why, How).  My colleague <a title="Chris" href="http://skizz.biz/blog/" target="_blank">Chris Stevenson</a> taught me another trick (5Why, alway ask 5 why when user want a function) which is quite useful to dig out the real value of the story and find out the root cause of the problem. Let&#8217;s see a real case of how to figure out a right design to solve a problem.</p>
<p>Once, I got a requirement from a BA, said that customer wanted to show build number, type and deployment date on the main window of the application (Client-Server application). It will be a simple implementation but I still push back because I don&#8217;t see the business value of the &#8220;requirement&#8221;. Then the BA provide a couple of scenarios in order to help us to understand the problem better.</p>
<p>Scenario: A trader came to office and found out that the application did not work. He called the support people who asked him a couple of questions. The trader provided the build number, then the support people still could not figure out the problem. In the end, the trader complaint that the application did not work. Actually the root cause was that the user was using a wrong version of application. The support complaint that he could not get enough information from the user to help him solve out the problem.</p>
<p>We can tell one option of solving the problem is to have rich information on client side to help support and end user communicate. However, the solution does not solve the ultimate problem. Indeed, what the support people and user need to know was that &#8220;user is using a wrong version of application&#8221;. The simplest solution is to show a message on the main window of application &#8220;Wrong version of application&#8221;. If the user passes the information to support people, he can re-deploy the right version of application to this user. Then problem solved. Did the support or end user care about the build number, type or deployment date? NO. They did not.</p>
<p>It is not too easy to identify the problem however BA need find the root cause and give the solution to solve the ultimate problem.</p>
<blockquote><p>Requirement documented</p></blockquote>
<p>In most of the agile project, stories are used to document requirement. However, it is not enough according to my experience. Personas, scenarios, business diagrams, and data mapping diagrams are also good documentation for the team to have the same understanding of the requirement.</p>
<blockquote><p>Project planning</p></blockquote>
<p>When we have enough prioritized requirement for a couple iterations or releases, we can start planning the project. The project plan will be justified in terms of the changes of the requirements. Certainly the project plan contains a set of prioritized stories.</p>
<p>Requirement Management is not easy. BA need also have psychology knowledge to get and analyze requirement more effectively.</p>
]]></description>
			<content:encoded><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/05/30/agile-requirement-management/&t=Agile Requirement Management&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><p>Recently, there was a thread in e-mail talking about why BA (Business Analyst) is needed in a software development project. The reason is that some of our client have concern why they need pay such a relative high rate for a BA. The argument is what the value of BA is? There are three crucial expertise that BA has.</p>
<ul>
<li> Requirement Management</li>
<li>User Interface Design</li>
<li>Domain Knowledge and Experience</li>
</ul>
<p>I am not going to talk about why domain experts and UI designers are important in a project. BA also take the responsibility of managing requirement in an agile project. In some projects, we called the role Requirement Manager.</p>
<p>So how does BA manage requirement? We group the activities into these four processes.:</p>
<ul>
<li>Requirement Gathering</li>
<li>Requirement Analyze</li>
<li>Requirement documented</li>
<li>Project planning</li>
</ul>
<p>I will talk them through with some examples.</p>
<blockquote><p>Requirement Gathering</p></blockquote>
<p>There are so many ways and tactics to gather requirement. Such as end user interview, expert interview, questionnaire, observation, experiment, brainstorming, and etc. In many case, a project choose a unefficient process to gather requirement although they might use many good methods and tools. A typical diagram of project requirement hierarchy is</p>
<p style="text-align: center;"><img style="vertical-align: middle;" src="http://ossme.com/IMG/RequirementManagement_Bad.bmp" alt="http://ossme.com/IMG/RequirementManagement_Bad" width="351" height="460" /></p>
<p>As we can see, the cost of communication is big, also the bad impact of this hierarchy is that lots of requirement were lost or misunderstood by the team during the transportation. It is even worse, the team might understand the requirement in different way, finally what we developed might not be what end user really wanted.  The team member could get different information and decision from PM, BAs or QAs. It is a nightmare for a team in a tough schedule.  What we can do in order to solve the problem is to bring the three layers in the middle into one. And organize them as one requirement management team.</p>
<p style="text-align: center;"><img style="vertical-align: middle;" src="http://ossme.com/IMG/RequirementManagement_Good.bmp" alt="http://ossme.com/IMG/RequirementManagement_Good" width="322" height="320" /></p>
<p>With this way, business analyst, domain experts and project manager can work together to help the customers and end users understand their problems well with their expertise.</p>
<blockquote><p>Requirement analyze</p></blockquote>
<p>There are some basic tricks for requirement analysis. Such as 5W1H (What, Who, Where, When, Why, How).  My colleague <a title="Chris" href="http://skizz.biz/blog/" target="_blank">Chris Stevenson</a> taught me another trick (5Why, alway ask 5 why when user want a function) which is quite useful to dig out the real value of the story and find out the root cause of the problem. Let&#8217;s see a real case of how to figure out a right design to solve a problem.</p>
<p>Once, I got a requirement from a BA, said that customer wanted to show build number, type and deployment date on the main window of the application (Client-Server application). It will be a simple implementation but I still push back because I don&#8217;t see the business value of the &#8220;requirement&#8221;. Then the BA provide a couple of scenarios in order to help us to understand the problem better.</p>
<p>Scenario: A trader came to office and found out that the application did not work. He called the support people who asked him a couple of questions. The trader provided the build number, then the support people still could not figure out the problem. In the end, the trader complaint that the application did not work. Actually the root cause was that the user was using a wrong version of application. The support complaint that he could not get enough information from the user to help him solve out the problem.</p>
<p>We can tell one option of solving the problem is to have rich information on client side to help support and end user communicate. However, the solution does not solve the ultimate problem. Indeed, what the support people and user need to know was that &#8220;user is using a wrong version of application&#8221;. The simplest solution is to show a message on the main window of application &#8220;Wrong version of application&#8221;. If the user passes the information to support people, he can re-deploy the right version of application to this user. Then problem solved. Did the support or end user care about the build number, type or deployment date? NO. They did not.</p>
<p>It is not too easy to identify the problem however BA need find the root cause and give the solution to solve the ultimate problem.</p>
<blockquote><p>Requirement documented</p></blockquote>
<p>In most of the agile project, stories are used to document requirement. However, it is not enough according to my experience. Personas, scenarios, business diagrams, and data mapping diagrams are also good documentation for the team to have the same understanding of the requirement.</p>
<blockquote><p>Project planning</p></blockquote>
<p>When we have enough prioritized requirement for a couple iterations or releases, we can start planning the project. The project plan will be justified in terms of the changes of the requirements. Certainly the project plan contains a set of prioritized stories.</p>
<p>Requirement Management is not easy. BA need also have psychology knowledge to get and analyze requirement more effectively.</p>
]]></content:encoded>
			<wfw:commentRss>http://ossme.com/2008/05/30/agile-requirement-management/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Green Story Card</title>
		<link>http://ossme.com/2008/05/13/green-story-card/</link>
		<comments>http://ossme.com/2008/05/13/green-story-card/#comments</comments>
		<pubDate>Wed, 14 May 2008 01:54:29 +0000</pubDate>
		<dc:creator>xiaoming</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://ossme.com/?p=33</guid>
		<description><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/05/13/green-story-card/&t=Green Story Card&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><p><a title="Xu Hao" href="http://www.blogjava.net/raimundox " target="_blank">Vincent Xu</a> recently invented a &#8220;Green Peace&#8221; style story card that I think might be a great innovation! The idea is quite simple, he laminated a plain story card which is made of paper with sticky back plastics so that the card can be reused. The motivation of creating the card is that he wants to write down some &#8220;To-do lists&#8221; or have simple technical discussion with other devs, so he can write or draw anything he wants to then erase the print and reuse the card.</p>
<p>I think the idea is brilliant and will contribute value for diverted project stakeholders. Let&#8217;s have a look the following story:</p>
<blockquote><p>
As a project manager/environmental protector, I want to reuse my story card, so that I save money and save environment.
</p></blockquote>
<blockquote><p>
As a project manager, I want to use limited number of story cards, so that I can take advantage of them as a tool to keep the project in a good shape.</p></blockquote>
<blockquote>
<p>As a developer, I want to a card to hold some information for an instant, so that I can use the card to communicate with other devs.</p></blockquote>
<blockquote>
<p>As a business analyst, I want to a story card which I can easily add or remove information without wasting the card, so that I save my time and save environment.</p></blockquote>
<blockquote>
<p>As a CEO/CFO, I want all my projects in the organization use the reusable story card, so that I can cut down the cost across the organization.</p></blockquote>
<p>We can see, it is not only about saving the environment. Imagine, if we use limited number of cards in a project, when there is no enough cards to be used for writing stories, or bugs, it is possible that we are having too much stories in blocked, in this case, the Signal pushed the project manager to deal with it. If we have only 10 bugs cards, when we do not have a blank card for new bug, it is probably the right time to cut down the number of outstanding bugs. Have some brainstorming, you might be able to find more interesting usage of the &#8220;Green card&#8221;.</p>
<p><img style="vertical-align: middle;" src="http://ossme.com/IMG/Green%20Story%20Card.bmp" alt="Green story card" width="589" height="307" /></p>
<p>Some tips of making &#8220;Green card&#8221;:</p>
<ul>
<li>Get a wider Sticky back plastics, so that you might need only two rows of them to cover the whole card.</li>
<li>You can use a shanpie but permanent marker to write on the cards.</li>
<li>You might need a piece of tissue or eraser aside, so that you can eraser the print whenever you want.</li>
</ul>
<p>More suggestions?</p>
]]></description>
			<content:encoded><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/05/13/green-story-card/&t=Green Story Card&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><p><a title="Xu Hao" href="http://www.blogjava.net/raimundox " target="_blank">Vincent Xu</a> recently invented a &#8220;Green Peace&#8221; style story card that I think might be a great innovation! The idea is quite simple, he laminated a plain story card which is made of paper with sticky back plastics so that the card can be reused. The motivation of creating the card is that he wants to write down some &#8220;To-do lists&#8221; or have simple technical discussion with other devs, so he can write or draw anything he wants to then erase the print and reuse the card.</p>
<p>I think the idea is brilliant and will contribute value for diverted project stakeholders. Let&#8217;s have a look the following story:</p>
<blockquote><p>
As a project manager/environmental protector, I want to reuse my story card, so that I save money and save environment.
</p></blockquote>
<blockquote><p>
As a project manager, I want to use limited number of story cards, so that I can take advantage of them as a tool to keep the project in a good shape.</p></blockquote>
<blockquote>
<p>As a developer, I want to a card to hold some information for an instant, so that I can use the card to communicate with other devs.</p></blockquote>
<blockquote>
<p>As a business analyst, I want to a story card which I can easily add or remove information without wasting the card, so that I save my time and save environment.</p></blockquote>
<blockquote>
<p>As a CEO/CFO, I want all my projects in the organization use the reusable story card, so that I can cut down the cost across the organization.</p></blockquote>
<p>We can see, it is not only about saving the environment. Imagine, if we use limited number of cards in a project, when there is no enough cards to be used for writing stories, or bugs, it is possible that we are having too much stories in blocked, in this case, the Signal pushed the project manager to deal with it. If we have only 10 bugs cards, when we do not have a blank card for new bug, it is probably the right time to cut down the number of outstanding bugs. Have some brainstorming, you might be able to find more interesting usage of the &#8220;Green card&#8221;.</p>
<p><img style="vertical-align: middle;" src="http://ossme.com/IMG/Green%20Story%20Card.bmp" alt="Green story card" width="589" height="307" /></p>
<p>Some tips of making &#8220;Green card&#8221;:</p>
<ul>
<li>Get a wider Sticky back plastics, so that you might need only two rows of them to cover the whole card.</li>
<li>You can use a shanpie but permanent marker to write on the cards.</li>
<li>You might need a piece of tissue or eraser aside, so that you can eraser the print whenever you want.</li>
</ul>
<p>More suggestions?</p>
]]></content:encoded>
			<wfw:commentRss>http://ossme.com/2008/05/13/green-story-card/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GOT &amp; GDT</title>
		<link>http://ossme.com/2008/03/15/got-gdt/</link>
		<comments>http://ossme.com/2008/03/15/got-gdt/#comments</comments>
		<pubDate>Sun, 16 Mar 2008 05:53:40 +0000</pubDate>
		<dc:creator>xiaoming</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://ossme.com/2008/03/15/got-gdt/</guid>
		<description><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/03/15/got-gdt/&t=GOT &#038; GDT&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><h2>Successful projects</h2>
<p>There are varied criteria of determining if a project is successful. They are</p>
<blockquote>
<ul>
<li>Deliver on time</li>
<li>Achieve the quality of the project(product/working software)</li>
<li>Achieve the margin, maximum the benefit</li>
<li>Customer&#8217;s satisfaction</li>
<li>Resource well developed and enjoyable</li>
<li>Good relationship with client</li>
<li>Reputation in the industry</li>
<li>and etc</li>
</ul>
</blockquote>
<p>It is not too difficult to define and work towards those objectives in the beginning of the project. However, two months later, how many projects were still considering the set of goals is what they were working for? Many teams only focused on several of them. If you were asked the question, why did you give up some of them? The answer would be very simple &#8220;No time!&#8221; I can not blame the excuses because the crucial judgment of a successful project is &#8220;Deliver on time&#8221;. The reason that we did not achieve all the goals in the end of the project is that we regard them individually, not looked them as one OBJECTIVE. And the even worse, team member might understand the goals differently, and work towards different directions. You might find, some objectives were partially accomplished.  Partially done work is also considered as waste, even effort was hard made. Personally, I don&#8217;t reckon that a successful delivery is always the top one criteria to measure whether a project is successful. However, it is mandatory.</p>
<p>So how can we ensure that the whole team works towards the same goals, keep going and accomplish them in the end of project. You need GOT and GDT.</p>
<blockquote><p>GOT stands for Goal Oriented Thinking; GDT stands for Goal Driven Team.</p></blockquote>
<p>In general, we need the whole team think the project in a way of &#8220;Goal Oriented&#8221; and the project team should be &#8220;Goal Driven&#8221;.<br />
It might be quite dry to understand the concept and where to start. Let me give a start point, thinking of the reasons of failure projects.</p>
<h2>Reasons of failure projects</h2>
<p>The reasons of failure projects vary case by case. They could be</p>
<blockquote>
<ul>
<li>Customer&#8217;s expectation is beyond team&#8217;s capability</li>
<li>Contract is much risky</li>
<li>Requirement changes too frequently</li>
<li>Lack of communication and feedback</li>
<li>Team does not have the same goal</li>
<li>Team does not focus on the goal</li>
<li>and etc</li>
</ul>
</blockquote>
<p>Nevertheless, if the team does not work towards the same direction, the risk would be much more increased. Sometimes, project managers felt quite frustrated  that the project failed even they had the money, right people and kinda nice customers.</p>
<p>Behind the reasons, either the team did not have the same goal, or did not work towards the same goal. So how to organize the team to achieve the same objectives along the road of project and make a project successfully? We need GOT and GDT.</p>
<h2>GOT (Goal Oriented Thinking) &amp; GDT (Goal Driven Team)</h2>
<p>In order to make it more clear and transparent to my readers, I organize my thinking into five aspects(In pink). In each of them, there are solutions(In green) and tools(In yellow) to achieve the objectives of &#8220;GOT and GDT&#8221; through the whole life cycle of a project. Several solutions can also map to our daily business activities(In blue).</p>
<p><a href="http://ossme.com/IMG/GOT%20%20GDT.png" title="GOT GDT diagram" target="_blank"><img src="http://ossme.com/drop/GOT_GTD/GOT_GDT.png" title="GOT GDT Free Mind diagram" alt="GOT GDT Free Mind diagram" height="316" width="635" /></a></p>
<p>There are also relationship between Solutions, tools and activities. For details of this diagram please view <a href="http://ossme.com/drop/GOT%20%20GDT_MAP.html" title="GOT GDT diagram" target="_blank">here</a>.</p>
<h3>Goal Oriented Thinking</h3>
<p><img src="http://ossme.com/IMG/GOTsub/GOT.bmp" title="GOT" /></p>
<p>In the beginning of a project, not everyone in the team might know what exact goal of this project. So first thing, a project manager need to do is to figure out &#8220;Goal for small and big team&#8221; and clarify them, put them in a place that is visible to the whole team all the time. Then a PM still ensure that all effort which the team makes is for the goal of the small and big team. PM is responsible for drafting and finalizing the goals. I will talk about this in the &#8220;What a manager/Lead should do&#8221;section. Sometimes, you work in a small team which is part of a big team. PM need to let everyone in the team know the goal of each team.  In most of the cases, small team has more goals than the big one. Make sure to balance them across teams. Team member could have objectives for himself. Make sure PM has the interviews before you draft the goal of a team, considering their personal objectives and balance it. After a goal or set of goals is finalized. It becomes the goal for a whole team. So It is OUR goal but for individual. One team One Dream.</p>
<h3>Goal Driven Team</h3>
<p><img src="http://ossme.com/IMG/GOTsub/GDT.bmp" alt="GOT" title="GOT" align="left" /></p>
<p>When you have a team which has the same goal. Next, make sure team member continue working to achieve it. To build a GDT, first thing, let everyone in the team understand it and ask them how they can do to help the team and himself to achieve the goal. PM can make it as several action items for teammates every other week. Then in the end of each two weeks, PM can evaluate individual performance against goal/value. It is not a good idea to have a performance review in the end of each year. Because no one would actually remember what a team member did well or not. Why not divide them into each very small trunk and evaluate them.</p>
<p>A pull system is a good tool in order to achieve the goal for a team. After we have action items for individual, you don&#8217;t have to push tasks to them, all you need do is get the tasks ready and ensure its visibility. Team member will self-organize to pick up tasks in order to accomplish team goals and his personal action item.</p>
<p>To build a GDT, PM should make sure that you get the right person on board. If anyone who always have different understanding of the team&#8217;s goal or can not work towards it. He might suit for the other projects but this one. A PM need to recommend him to another team or resource manager in this case.</p>
<p>An organization has her own visions, objectives and targets. Our ultimate goal is to align the team&#8217;s objectives with organization&#8217;s vision. Only a Goal Driven team can make this easier.</p>
<h3>Transparent Team</h3>
<p><img src="http://ossme.com/IMG/GOTsub/Transparent_team.bmp" alt="GOT" title="GOT" align="left" /></p>
<p>Even, a GDT is right there, we can not take for granted that a team will never change. Team member need to know everything in the team. The team shall be transparent to all sponsors, customers, users and team member himself. It does not limit to visibility of the plan, progress and risks but the business plan. Why business plan? If a team member does not know it, he won&#8217;t know how valuable his effort is. If team member don&#8217;t know it, he would not know whether what he is doing is waste.</p>
<p><a href="http://ossme.com/IMG/BP_Story.bmp" title="Business Process diagram" target="_blank"><img src="http://ossme.com/IMG/BP_Story.bmp" title="Business process diagram" alt="Business process diagram" align="right" height="464" width="496" /></a></p>
<p>Another thing, every project need pay more attention to, let the team see the whole system but his individual area.There are several tools that we can use to help. Business process diagram of the whole system is always help. Each small team may highlight his own part.</p>
<p>Sometimes, developers focus on individual functionality/story, rather than the whole business process or the system itself. In the middle of project, some team keened to make large amount of code refactoring. There are many reasons that lead to the smell situation. One of them is that developers don&#8217;t see the design for the whole business process or system. The diagram here shows how stories map to the business process. Why not hang this diagram somewhere everyone can see it?</p>
<p>For project plan and progress reporting, I recommend several tools, such as &#8220;S-curve&#8221;, &#8220;Burn down and burn up Chart&#8221;, Kanban or story wall and task wall</p>
<p>What we did was not enough. 10 minutes technical knowledge sharing should happen everyday. One minute talk is another useful tool for the team to practice communication skills. We can do more. Get the lessons learnt visible to the whole organization and require feedbacks. Open discussion, more communication helps the team more transparent.</p>
<p>At the same time, the team has the reporting material for senior management team. No extra work is needed. Someone said that &#8220;Reporting is only for bosses&#8221;. Not all true! Bosses need see what is going on in each team, meanwhile every team member need know this as well. They should see the same page.</p>
<h3>What a manager/lead should do</h3>
<p><img src="http://ossme.com/IMG/GOTsub/Manager.bmp" alt="GOT" title="GOT" align="top" height="173" width="619" /></p>
<p>I have been talking about what a manager/lead should do in the previous sections. Personally, I don&#8217;t like separate managers and leaders into two groups. Nowadays, managers do not only control schedule, control cost and etc, we also set directions, develop resource, align people and  Enable motivation.</p>
<p>First thing, a manager should do is to draft and finalize the goal for a team. So what is the goal composed of?</p>
<blockquote>
<ul>
<li>Contract and deliverables</li>
<li>Margin of the project</li>
<li>Individual career development</li>
<li>Organization vision</li>
<li>Customer expectation and satisfaction</li>
<li>Team&#8217;s enjoyableness of the project</li>
<li>Business development&#8217;s strategies</li>
<li>Reputation</li>
<li>And etc</li>
</ul>
</blockquote>
<p>This is how a project goal composed. Think of its balance and compromise then, explain it to the whole team, answer questions and reach individual&#8217;s understanding.</p>
<p>PM and the whole team need to highlight the goal in any occasion,  such as meetings, activities, requirement discussion and etc. Whenever you observe an activity that violates the team&#8217;s goal, anyone should stand up and let the people know that they might be going to a wrong direction. The team shall consider those behaviors as waste and eliminate them right away.</p>
<p>For HR team, it is a good way to measure people&#8217;s performance referring to if individual worked for the team&#8217;s goal and how much value that each team mate contribute .</p>
<h3>Goal is not everything</h3>
<p><img src="http://ossme.com/IMG/GOTsub/NotEveryThing.bmp" alt="Not everything" title="Not everything" align="left" height="60" width="654" /></p>
<p>How do we deal those good ideas that are not associated with our goal?</p>
<p>Please don&#8217;t throw them away or ignore. Offer another place for those good ideas and encourage the team to develop the ideas into true story in non-project time. I always believe that the creativity and ideas are the keys of a successful projects.</p>
<h2>Summary</h2>
<p>In summary, combine the goals of organization, project and individual into one GOAL, as OUR goal. Help the team to work towards the same direction in order to achieve the same goal which will make you a successful project.</p>
]]></description>
			<content:encoded><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/03/15/got-gdt/&t=GOT &#038; GDT&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><h2>Successful projects</h2>
<p>There are varied criteria of determining if a project is successful. They are</p>
<blockquote>
<ul>
<li>Deliver on time</li>
<li>Achieve the quality of the project(product/working software)</li>
<li>Achieve the margin, maximum the benefit</li>
<li>Customer&#8217;s satisfaction</li>
<li>Resource well developed and enjoyable</li>
<li>Good relationship with client</li>
<li>Reputation in the industry</li>
<li>and etc</li>
</ul>
</blockquote>
<p>It is not too difficult to define and work towards those objectives in the beginning of the project. However, two months later, how many projects were still considering the set of goals is what they were working for? Many teams only focused on several of them. If you were asked the question, why did you give up some of them? The answer would be very simple &#8220;No time!&#8221; I can not blame the excuses because the crucial judgment of a successful project is &#8220;Deliver on time&#8221;. The reason that we did not achieve all the goals in the end of the project is that we regard them individually, not looked them as one OBJECTIVE. And the even worse, team member might understand the goals differently, and work towards different directions. You might find, some objectives were partially accomplished.  Partially done work is also considered as waste, even effort was hard made. Personally, I don&#8217;t reckon that a successful delivery is always the top one criteria to measure whether a project is successful. However, it is mandatory.</p>
<p>So how can we ensure that the whole team works towards the same goals, keep going and accomplish them in the end of project. You need GOT and GDT.</p>
<blockquote><p>GOT stands for Goal Oriented Thinking; GDT stands for Goal Driven Team.</p></blockquote>
<p>In general, we need the whole team think the project in a way of &#8220;Goal Oriented&#8221; and the project team should be &#8220;Goal Driven&#8221;.<br />
It might be quite dry to understand the concept and where to start. Let me give a start point, thinking of the reasons of failure projects.</p>
<h2>Reasons of failure projects</h2>
<p>The reasons of failure projects vary case by case. They could be</p>
<blockquote>
<ul>
<li>Customer&#8217;s expectation is beyond team&#8217;s capability</li>
<li>Contract is much risky</li>
<li>Requirement changes too frequently</li>
<li>Lack of communication and feedback</li>
<li>Team does not have the same goal</li>
<li>Team does not focus on the goal</li>
<li>and etc</li>
</ul>
</blockquote>
<p>Nevertheless, if the team does not work towards the same direction, the risk would be much more increased. Sometimes, project managers felt quite frustrated  that the project failed even they had the money, right people and kinda nice customers.</p>
<p>Behind the reasons, either the team did not have the same goal, or did not work towards the same goal. So how to organize the team to achieve the same objectives along the road of project and make a project successfully? We need GOT and GDT.</p>
<h2>GOT (Goal Oriented Thinking) &amp; GDT (Goal Driven Team)</h2>
<p>In order to make it more clear and transparent to my readers, I organize my thinking into five aspects(In pink). In each of them, there are solutions(In green) and tools(In yellow) to achieve the objectives of &#8220;GOT and GDT&#8221; through the whole life cycle of a project. Several solutions can also map to our daily business activities(In blue).</p>
<p><a href="http://ossme.com/IMG/GOT%20%20GDT.png" title="GOT GDT diagram" target="_blank"><img src="http://ossme.com/drop/GOT_GTD/GOT_GDT.png" title="GOT GDT Free Mind diagram" alt="GOT GDT Free Mind diagram" height="316" width="635" /></a></p>
<p>There are also relationship between Solutions, tools and activities. For details of this diagram please view <a href="http://ossme.com/drop/GOT%20%20GDT_MAP.html" title="GOT GDT diagram" target="_blank">here</a>.</p>
<h3>Goal Oriented Thinking</h3>
<p><img src="http://ossme.com/IMG/GOTsub/GOT.bmp" title="GOT" /></p>
<p>In the beginning of a project, not everyone in the team might know what exact goal of this project. So first thing, a project manager need to do is to figure out &#8220;Goal for small and big team&#8221; and clarify them, put them in a place that is visible to the whole team all the time. Then a PM still ensure that all effort which the team makes is for the goal of the small and big team. PM is responsible for drafting and finalizing the goals. I will talk about this in the &#8220;What a manager/Lead should do&#8221;section. Sometimes, you work in a small team which is part of a big team. PM need to let everyone in the team know the goal of each team.  In most of the cases, small team has more goals than the big one. Make sure to balance them across teams. Team member could have objectives for himself. Make sure PM has the interviews before you draft the goal of a team, considering their personal objectives and balance it. After a goal or set of goals is finalized. It becomes the goal for a whole team. So It is OUR goal but for individual. One team One Dream.</p>
<h3>Goal Driven Team</h3>
<p><img src="http://ossme.com/IMG/GOTsub/GDT.bmp" alt="GOT" title="GOT" align="left" /></p>
<p>When you have a team which has the same goal. Next, make sure team member continue working to achieve it. To build a GDT, first thing, let everyone in the team understand it and ask them how they can do to help the team and himself to achieve the goal. PM can make it as several action items for teammates every other week. Then in the end of each two weeks, PM can evaluate individual performance against goal/value. It is not a good idea to have a performance review in the end of each year. Because no one would actually remember what a team member did well or not. Why not divide them into each very small trunk and evaluate them.</p>
<p>A pull system is a good tool in order to achieve the goal for a team. After we have action items for individual, you don&#8217;t have to push tasks to them, all you need do is get the tasks ready and ensure its visibility. Team member will self-organize to pick up tasks in order to accomplish team goals and his personal action item.</p>
<p>To build a GDT, PM should make sure that you get the right person on board. If anyone who always have different understanding of the team&#8217;s goal or can not work towards it. He might suit for the other projects but this one. A PM need to recommend him to another team or resource manager in this case.</p>
<p>An organization has her own visions, objectives and targets. Our ultimate goal is to align the team&#8217;s objectives with organization&#8217;s vision. Only a Goal Driven team can make this easier.</p>
<h3>Transparent Team</h3>
<p><img src="http://ossme.com/IMG/GOTsub/Transparent_team.bmp" alt="GOT" title="GOT" align="left" /></p>
<p>Even, a GDT is right there, we can not take for granted that a team will never change. Team member need to know everything in the team. The team shall be transparent to all sponsors, customers, users and team member himself. It does not limit to visibility of the plan, progress and risks but the business plan. Why business plan? If a team member does not know it, he won&#8217;t know how valuable his effort is. If team member don&#8217;t know it, he would not know whether what he is doing is waste.</p>
<p><a href="http://ossme.com/IMG/BP_Story.bmp" title="Business Process diagram" target="_blank"><img src="http://ossme.com/IMG/BP_Story.bmp" title="Business process diagram" alt="Business process diagram" align="right" height="464" width="496" /></a></p>
<p>Another thing, every project need pay more attention to, let the team see the whole system but his individual area.There are several tools that we can use to help. Business process diagram of the whole system is always help. Each small team may highlight his own part.</p>
<p>Sometimes, developers focus on individual functionality/story, rather than the whole business process or the system itself. In the middle of project, some team keened to make large amount of code refactoring. There are many reasons that lead to the smell situation. One of them is that developers don&#8217;t see the design for the whole business process or system. The diagram here shows how stories map to the business process. Why not hang this diagram somewhere everyone can see it?</p>
<p>For project plan and progress reporting, I recommend several tools, such as &#8220;S-curve&#8221;, &#8220;Burn down and burn up Chart&#8221;, Kanban or story wall and task wall</p>
<p>What we did was not enough. 10 minutes technical knowledge sharing should happen everyday. One minute talk is another useful tool for the team to practice communication skills. We can do more. Get the lessons learnt visible to the whole organization and require feedbacks. Open discussion, more communication helps the team more transparent.</p>
<p>At the same time, the team has the reporting material for senior management team. No extra work is needed. Someone said that &#8220;Reporting is only for bosses&#8221;. Not all true! Bosses need see what is going on in each team, meanwhile every team member need know this as well. They should see the same page.</p>
<h3>What a manager/lead should do</h3>
<p><img src="http://ossme.com/IMG/GOTsub/Manager.bmp" alt="GOT" title="GOT" align="top" height="173" width="619" /></p>
<p>I have been talking about what a manager/lead should do in the previous sections. Personally, I don&#8217;t like separate managers and leaders into two groups. Nowadays, managers do not only control schedule, control cost and etc, we also set directions, develop resource, align people and  Enable motivation.</p>
<p>First thing, a manager should do is to draft and finalize the goal for a team. So what is the goal composed of?</p>
<blockquote>
<ul>
<li>Contract and deliverables</li>
<li>Margin of the project</li>
<li>Individual career development</li>
<li>Organization vision</li>
<li>Customer expectation and satisfaction</li>
<li>Team&#8217;s enjoyableness of the project</li>
<li>Business development&#8217;s strategies</li>
<li>Reputation</li>
<li>And etc</li>
</ul>
</blockquote>
<p>This is how a project goal composed. Think of its balance and compromise then, explain it to the whole team, answer questions and reach individual&#8217;s understanding.</p>
<p>PM and the whole team need to highlight the goal in any occasion,  such as meetings, activities, requirement discussion and etc. Whenever you observe an activity that violates the team&#8217;s goal, anyone should stand up and let the people know that they might be going to a wrong direction. The team shall consider those behaviors as waste and eliminate them right away.</p>
<p>For HR team, it is a good way to measure people&#8217;s performance referring to if individual worked for the team&#8217;s goal and how much value that each team mate contribute .</p>
<h3>Goal is not everything</h3>
<p><img src="http://ossme.com/IMG/GOTsub/NotEveryThing.bmp" alt="Not everything" title="Not everything" align="left" height="60" width="654" /></p>
<p>How do we deal those good ideas that are not associated with our goal?</p>
<p>Please don&#8217;t throw them away or ignore. Offer another place for those good ideas and encourage the team to develop the ideas into true story in non-project time. I always believe that the creativity and ideas are the keys of a successful projects.</p>
<h2>Summary</h2>
<p>In summary, combine the goals of organization, project and individual into one GOAL, as OUR goal. Help the team to work towards the same direction in order to achieve the same goal which will make you a successful project.</p>
]]></content:encoded>
			<wfw:commentRss>http://ossme.com/2008/03/15/got-gdt/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introduction of Lean Project Management</title>
		<link>http://ossme.com/2008/01/27/introduction-of-lean-project-management/</link>
		<comments>http://ossme.com/2008/01/27/introduction-of-lean-project-management/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 11:39:23 +0000</pubDate>
		<dc:creator>xiaoming</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://ossme.com/2008/01/27/introduction-of-lean-project-management/</guid>
		<description><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/01/27/introduction-of-lean-project-management/&t=Introduction of Lean Project Management&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><p>Software development is a procedure of manufacture. However it is not all about manufacture, it is manufacture of creativities. When Toyota started applying Lean methodology in their car making plant, they might never imagine that some years later, IT industry would start applying lean in the software development. The successful experience mostly come from the combination of Lean and Agile.</p>
<p>So what lean principle is and how to apply Lean principle in Agile project management? Typically Lean processes; synchronize the flow of work, through the business balance work loads, reduce work in progress and shortens lead times. Lean has <strong>seven</strong> principles. They are:</p>
<blockquote>
<ul>
<li>Eliminate Waste</li>
<li>Amplify learning</li>
<li>Decide as late as possible</li>
<li>Deliver as fast as possible</li>
<li>Empower the team</li>
<li>Build integrity in</li>
<li>See the whole</li>
</ul>
</blockquote>
<h3>Eliminate waste</h3>
<p>As we know lean basically aims to eliminate the waste, shorten lead time and empower the team, so it is all about eliminate the waster in order to response customer&#8217;s requirement more effectively and cut down the cost.</p>
<p>So in IT project, how do we eliminate the waste? We have to find the waste first then find a way to eliminate them. Let&#8217;s see where the waste come from in a software development project:</p>
<blockquote>
<ol>
<li>Partially done work</li>
<li>Extra processes</li>
<li>Extra features</li>
<li>Task switching</li>
<li>Waiting</li>
<li>Motion</li>
<li>Defects</li>
</ol>
</blockquote>
<p>Yes, in order to eliminate those waste,one strategy could be used here which is called Value stream mapping:</p>
<p>Find your waste and map your current process with value, any in valuable process should be eliminated from the process</p>
<ol>
<li>List 10-15 most important activities and rate them 1-5, (1: least important, 5 highest value) . &#8212;- Take two lowest scoring activities and plan to cut the time of these two activities into half.</li>
<li>Discuss one of the 7 waste in the meeting and ask
<ul>
<li>Do you agree that this &#8220;waste&#8221; is really a waste? Why or why not?</li>
<li>Whether or not you agree that the item is a waste, estimate how much time it consumes in an average week.</li>
<li>What can or should be done to reduce that time?</li>
</ul>
</li>
<li>Develop a value stream map. Start with an incoming request and map a timeline of its progress to providing customer value. Find out how much of the time is spent adding value and how much is spent waiting. Take the biggest cause of delay and develop a plan to cut it in half.</li>
</ol>
<h3>Amplify learning</h3>
<p>In an IT project it is always critical for the team to communicate efficiently and get feedback as fast as possible so the team can learn fast and response fast. In order to achieve it, there are several things that you can do:</p>
<blockquote>
<ul>
<li>Feedback</li>
<li>Iteration</li>
<li>Synchronization &#8212; Define and dev interface then component</li>
<li>Set-based development</li>
</ul>
</blockquote>
<p>Talking about set-based management which is opposite to point-based management,check out how to apply set-based management in a project below:</p>
<p><strong>Set-based VS point based development</strong></p>
<ol>
<li>    Set-based development: three steps</li>
<li>    develop multiple options</li>
<li>    communicate constraints</li>
<li>    solutions emerge</li>
</ol>
<h3>Decide as late as possible</h3>
<p>When a team decide the plan for the next 6 months, they work hard for the goals, however, people found that the plan was always changing because the requirement was changing, the team was changing and almost everything was changing. So in my opinion, don&#8217;t make decision too early unless that you have to. There is a famous 100 days rule in project management which was defined as that never plan a project more than 100 days or 3 months. Why don&#8217;t we try the option thinking?</p>
<ul>
<li>Options thinking</li>
<li>The last responsible moment</li>
</ul>
<p>Someone might say that there is a lot risk if we try to make the decision as late as possible. Yes there is. So that we should to try to do the following in order to keep the risk lower.</p>
<blockquote>
<ul>
<li>        Share partially complete design information</li>
<li>        Organize for direct, worker-to-worker collaboration</li>
<li>        Develop a sense of how to absorb changes</li>
<li>        Develop a sense of what is critically important in the domain</li>
<li>        Develop a sense of when decisions must be made</li>
<li>        Develop a quick response capability</li>
</ul>
</blockquote>
<ul>
<li> Making decisions  &#8212; Flexibility, Robustness, Self-organization</li>
</ul>
<h3>Deliver as fast as possible</h3>
<p>No customer want to see the result in the end rather than see the progress very often. So as a software development team, &#8220;deliver as fast as possible&#8221; is quite important.</p>
<ul>
<li> Pull system  &#8212; against push system, and information radiator</li>
<li>Queuing theory
<ul>
<li>Reducing cycle time</li>
<li>Steady rate of arrival</li>
<li> Steady rate of service</li>
<li> Slack</li>
</ul>
</li>
</ul>
<ul></ul>
<ul>
<li>Cost of delay</li>
</ul>
<h3>Empower the team</h3>
<p>From the experience of GE&#8217;s work-out, we can see there is no better way than let the worker to make the decision rather than the managers because the workers are the core of productivity.The people who add value are the center of organizational energy. Managers should play a role of collaboration, leading and support.</p>
<ul>
<li>Self-determination (CMMI VS Lean)</li>
<li>Motivation</li>
<li>Leadership (Manager VS Leader)</li>
<li>Expertise</li>
</ul>
<p>Talking about Self-determination, I have to talk about the difference of CMM and Lean. There is no good or bad while they are just different and can work in different circumstances.</p>
<p><strong>CMMI Assumption</strong></p>
<ul>
<li>A system is best managed by disaggregating it into identifiable work products that are transformed from an input to an output state to achieve specific goals.</li>
<li>A mature organization is one in which everything is carefully planned and then controlled to meet the plan.</li>
</ul>
<p><strong>Lean Assumption</strong></p>
<ul>
<li>A mature organization looks at the whole system; it does not focus on optimizing disaggregated parts.</li>
<li>A mature organization focuses on learning effectively and empowers the people who do the work to make decisions.</li>
</ul>
<p>Here contrast to the original concept of management or manager, as planning, scheduling, controlling and reporting, management and managers are also should be leading or leaders. As <a href="http://www.answers.com/Jack+Welch?cat=biz-fin&amp;gwp=13" title="Jack Welch" target="_blank">Jack Welch</a> said in his<a href="http://www.amazon.co.uk/Winning-Ultimate-Business-How-Book/dp/0007197675/ref=pd_bbs_sr_1?ie=UTF8&amp;s=gateway&amp;qid=1201432895&amp;sr=8-1" title="Winning" target="_blank"> book Winning</a>, before you become a manager/leader, all you need do is to develop yourself, after you became a manager/leader all you need do is to develop the people in your team. As a leader you not only do Plan,Budget,Organize,Staff,Track and Control but also do Set Direction,Align People and Enable Motivation. Yes, give it a try that is always a good motivation!</p>
<h3>Build Integrity In</h3>
<p>You can also find some suggestions about Integrity in Jack&#8217;s book. Almost every successful organization or manager encourage people to build integrity in the organization or team.</p>
<ul>
<li>Perceived Integrity &#8212; Model Driven Design(Conceptual domain model, glossary, use case model, Qualifier)</li>
<li>Conceptual Integrity</li>
<li>Refactoring &#8212; Simplicity, Clarity, Suitability for use, No repetition, No extra features</li>
<li>Testing</li>
</ul>
<h3>See the whole</h3>
<p>Last but not least, a team not only the project manager should always see the whole of the system even not in his own project but in the whole product or system.</p>
<ul>
<li>System Thinking</li>
<li> Measurements</li>
<li> Contracts</li>
</ul>
<p>Now people can see when you do a project, there are more that you can do to eliminate the waste, empower the team in order to response customers&#8217; requirement faster, increase the efficiency of the project. It is not really easy to apply all these principles in one day however bear in mind and give it a try. There would not be too long to see your own project better and better!</p>
]]></description>
			<content:encoded><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/01/27/introduction-of-lean-project-management/&t=Introduction of Lean Project Management&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><p>Software development is a procedure of manufacture. However it is not all about manufacture, it is manufacture of creativities. When Toyota started applying Lean methodology in their car making plant, they might never imagine that some years later, IT industry would start applying lean in the software development. The successful experience mostly come from the combination of Lean and Agile.</p>
<p>So what lean principle is and how to apply Lean principle in Agile project management? Typically Lean processes; synchronize the flow of work, through the business balance work loads, reduce work in progress and shortens lead times. Lean has <strong>seven</strong> principles. They are:</p>
<blockquote>
<ul>
<li>Eliminate Waste</li>
<li>Amplify learning</li>
<li>Decide as late as possible</li>
<li>Deliver as fast as possible</li>
<li>Empower the team</li>
<li>Build integrity in</li>
<li>See the whole</li>
</ul>
</blockquote>
<h3>Eliminate waste</h3>
<p>As we know lean basically aims to eliminate the waste, shorten lead time and empower the team, so it is all about eliminate the waster in order to response customer&#8217;s requirement more effectively and cut down the cost.</p>
<p>So in IT project, how do we eliminate the waste? We have to find the waste first then find a way to eliminate them. Let&#8217;s see where the waste come from in a software development project:</p>
<blockquote>
<ol>
<li>Partially done work</li>
<li>Extra processes</li>
<li>Extra features</li>
<li>Task switching</li>
<li>Waiting</li>
<li>Motion</li>
<li>Defects</li>
</ol>
</blockquote>
<p>Yes, in order to eliminate those waste,one strategy could be used here which is called Value stream mapping:</p>
<p>Find your waste and map your current process with value, any in valuable process should be eliminated from the process</p>
<ol>
<li>List 10-15 most important activities and rate them 1-5, (1: least important, 5 highest value) . &#8212;- Take two lowest scoring activities and plan to cut the time of these two activities into half.</li>
<li>Discuss one of the 7 waste in the meeting and ask
<ul>
<li>Do you agree that this &#8220;waste&#8221; is really a waste? Why or why not?</li>
<li>Whether or not you agree that the item is a waste, estimate how much time it consumes in an average week.</li>
<li>What can or should be done to reduce that time?</li>
</ul>
</li>
<li>Develop a value stream map. Start with an incoming request and map a timeline of its progress to providing customer value. Find out how much of the time is spent adding value and how much is spent waiting. Take the biggest cause of delay and develop a plan to cut it in half.</li>
</ol>
<h3>Amplify learning</h3>
<p>In an IT project it is always critical for the team to communicate efficiently and get feedback as fast as possible so the team can learn fast and response fast. In order to achieve it, there are several things that you can do:</p>
<blockquote>
<ul>
<li>Feedback</li>
<li>Iteration</li>
<li>Synchronization &#8212; Define and dev interface then component</li>
<li>Set-based development</li>
</ul>
</blockquote>
<p>Talking about set-based management which is opposite to point-based management,check out how to apply set-based management in a project below:</p>
<p><strong>Set-based VS point based development</strong></p>
<ol>
<li>    Set-based development: three steps</li>
<li>    develop multiple options</li>
<li>    communicate constraints</li>
<li>    solutions emerge</li>
</ol>
<h3>Decide as late as possible</h3>
<p>When a team decide the plan for the next 6 months, they work hard for the goals, however, people found that the plan was always changing because the requirement was changing, the team was changing and almost everything was changing. So in my opinion, don&#8217;t make decision too early unless that you have to. There is a famous 100 days rule in project management which was defined as that never plan a project more than 100 days or 3 months. Why don&#8217;t we try the option thinking?</p>
<ul>
<li>Options thinking</li>
<li>The last responsible moment</li>
</ul>
<p>Someone might say that there is a lot risk if we try to make the decision as late as possible. Yes there is. So that we should to try to do the following in order to keep the risk lower.</p>
<blockquote>
<ul>
<li>        Share partially complete design information</li>
<li>        Organize for direct, worker-to-worker collaboration</li>
<li>        Develop a sense of how to absorb changes</li>
<li>        Develop a sense of what is critically important in the domain</li>
<li>        Develop a sense of when decisions must be made</li>
<li>        Develop a quick response capability</li>
</ul>
</blockquote>
<ul>
<li> Making decisions  &#8212; Flexibility, Robustness, Self-organization</li>
</ul>
<h3>Deliver as fast as possible</h3>
<p>No customer want to see the result in the end rather than see the progress very often. So as a software development team, &#8220;deliver as fast as possible&#8221; is quite important.</p>
<ul>
<li> Pull system  &#8212; against push system, and information radiator</li>
<li>Queuing theory
<ul>
<li>Reducing cycle time</li>
<li>Steady rate of arrival</li>
<li> Steady rate of service</li>
<li> Slack</li>
</ul>
</li>
</ul>
<ul></ul>
<ul>
<li>Cost of delay</li>
</ul>
<h3>Empower the team</h3>
<p>From the experience of GE&#8217;s work-out, we can see there is no better way than let the worker to make the decision rather than the managers because the workers are the core of productivity.The people who add value are the center of organizational energy. Managers should play a role of collaboration, leading and support.</p>
<ul>
<li>Self-determination (CMMI VS Lean)</li>
<li>Motivation</li>
<li>Leadership (Manager VS Leader)</li>
<li>Expertise</li>
</ul>
<p>Talking about Self-determination, I have to talk about the difference of CMM and Lean. There is no good or bad while they are just different and can work in different circumstances.</p>
<p><strong>CMMI Assumption</strong></p>
<ul>
<li>A system is best managed by disaggregating it into identifiable work products that are transformed from an input to an output state to achieve specific goals.</li>
<li>A mature organization is one in which everything is carefully planned and then controlled to meet the plan.</li>
</ul>
<p><strong>Lean Assumption</strong></p>
<ul>
<li>A mature organization looks at the whole system; it does not focus on optimizing disaggregated parts.</li>
<li>A mature organization focuses on learning effectively and empowers the people who do the work to make decisions.</li>
</ul>
<p>Here contrast to the original concept of management or manager, as planning, scheduling, controlling and reporting, management and managers are also should be leading or leaders. As <a href="http://www.answers.com/Jack+Welch?cat=biz-fin&amp;gwp=13" title="Jack Welch" target="_blank">Jack Welch</a> said in his<a href="http://www.amazon.co.uk/Winning-Ultimate-Business-How-Book/dp/0007197675/ref=pd_bbs_sr_1?ie=UTF8&amp;s=gateway&amp;qid=1201432895&amp;sr=8-1" title="Winning" target="_blank"> book Winning</a>, before you become a manager/leader, all you need do is to develop yourself, after you became a manager/leader all you need do is to develop the people in your team. As a leader you not only do Plan,Budget,Organize,Staff,Track and Control but also do Set Direction,Align People and Enable Motivation. Yes, give it a try that is always a good motivation!</p>
<h3>Build Integrity In</h3>
<p>You can also find some suggestions about Integrity in Jack&#8217;s book. Almost every successful organization or manager encourage people to build integrity in the organization or team.</p>
<ul>
<li>Perceived Integrity &#8212; Model Driven Design(Conceptual domain model, glossary, use case model, Qualifier)</li>
<li>Conceptual Integrity</li>
<li>Refactoring &#8212; Simplicity, Clarity, Suitability for use, No repetition, No extra features</li>
<li>Testing</li>
</ul>
<h3>See the whole</h3>
<p>Last but not least, a team not only the project manager should always see the whole of the system even not in his own project but in the whole product or system.</p>
<ul>
<li>System Thinking</li>
<li> Measurements</li>
<li> Contracts</li>
</ul>
<p>Now people can see when you do a project, there are more that you can do to eliminate the waste, empower the team in order to response customers&#8217; requirement faster, increase the efficiency of the project. It is not really easy to apply all these principles in one day however bear in mind and give it a try. There would not be too long to see your own project better and better!</p>
]]></content:encoded>
			<wfw:commentRss>http://ossme.com/2008/01/27/introduction-of-lean-project-management/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Handle non-functional requirement in agile project</title>
		<link>http://ossme.com/2008/01/10/handle-non-functional-requirement-in-agile-project/</link>
		<comments>http://ossme.com/2008/01/10/handle-non-functional-requirement-in-agile-project/#comments</comments>
		<pubDate>Thu, 10 Jan 2008 16:17:41 +0000</pubDate>
		<dc:creator>xiaoming</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://ossme.com/2008/01/10/handle-non-functional-requirement-in-agile-project/</guid>
		<description><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/01/10/handle-non-functional-requirement-in-agile-project/&t=Handle non-functional requirement in agile project&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><p>I was recently asked by a customer of how to manage non-functional requirement in agile project. After discussing with <a href="http://gigix.thoughtworkers.org/" title="Jeff Xiong's blog" target="_blank">Jeff Xiong</a>, we figured out an idea.</p>
<p>Based on Jeff&#8217;s opinion, any question in agile project could be analyzed in this way:</p>
<ol>
<li>Clarify your target;</li>
<li>Brainstorming;</li>
<li> Find options;</li>
<li>Analysis these options from different angles;</li>
<li>Make a guideline;</li>
<li>Create verification method/frequency;</li>
<li>Separate them into small units and track.</li>
</ol>
<p>As we know non-functional requirement varies from one by one. Basically there are two types of them.</p>
<ul>
<li>Can be regard as functional requirement(such as usability, localization and etc)</li>
<li> Can not be regard as functional requirement (such as performance, design requirement, integration requirement and etc)</li>
</ul>
<p>For those can be regard as functional one, YES, treat them as functional requirement and describe them as stories.</p>
<p>For the others, write a non-functional requirement story for it. An story card template was list below.</p>
<p><img src="http://ossme.com/IMG/Non-functional%20requirement.bmp" title="non-functional requirement" alt="non-functional requirement" align="middle" height="412" width="608" /></p>
<p>There are six basic rules you should think of before you make a non-functional requirement card.</p>
<ul>
<li>Who wants it</li>
<li>What they want to achieve</li>
<li>Why it&#8217;s valuable</li>
<li>Relative priority</li>
<li>How you would be confident that it&#8217;s been done or how to verify</li>
<li>Could it be a “function”?</li>
</ul>
<p>After you have a clear idea of the questions that I list above, you will be ready to develop an non-functional story card.</p>
<p>Bear in mind, verification method/frequency is the core of this card. Guideline indicate the way of complete the story successfully.</p>
<p>See it is manageable and traceable.</p>
]]></description>
			<content:encoded><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/01/10/handle-non-functional-requirement-in-agile-project/&t=Handle non-functional requirement in agile project&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><p>I was recently asked by a customer of how to manage non-functional requirement in agile project. After discussing with <a href="http://gigix.thoughtworkers.org/" title="Jeff Xiong's blog" target="_blank">Jeff Xiong</a>, we figured out an idea.</p>
<p>Based on Jeff&#8217;s opinion, any question in agile project could be analyzed in this way:</p>
<ol>
<li>Clarify your target;</li>
<li>Brainstorming;</li>
<li> Find options;</li>
<li>Analysis these options from different angles;</li>
<li>Make a guideline;</li>
<li>Create verification method/frequency;</li>
<li>Separate them into small units and track.</li>
</ol>
<p>As we know non-functional requirement varies from one by one. Basically there are two types of them.</p>
<ul>
<li>Can be regard as functional requirement(such as usability, localization and etc)</li>
<li> Can not be regard as functional requirement (such as performance, design requirement, integration requirement and etc)</li>
</ul>
<p>For those can be regard as functional one, YES, treat them as functional requirement and describe them as stories.</p>
<p>For the others, write a non-functional requirement story for it. An story card template was list below.</p>
<p><img src="http://ossme.com/IMG/Non-functional%20requirement.bmp" title="non-functional requirement" alt="non-functional requirement" align="middle" height="412" width="608" /></p>
<p>There are six basic rules you should think of before you make a non-functional requirement card.</p>
<ul>
<li>Who wants it</li>
<li>What they want to achieve</li>
<li>Why it&#8217;s valuable</li>
<li>Relative priority</li>
<li>How you would be confident that it&#8217;s been done or how to verify</li>
<li>Could it be a “function”?</li>
</ul>
<p>After you have a clear idea of the questions that I list above, you will be ready to develop an non-functional story card.</p>
<p>Bear in mind, verification method/frequency is the core of this card. Guideline indicate the way of complete the story successfully.</p>
<p>See it is manageable and traceable.</p>
]]></content:encoded>
			<wfw:commentRss>http://ossme.com/2008/01/10/handle-non-functional-requirement-in-agile-project/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Revolution: from CMM5 to Agile</title>
		<link>http://ossme.com/2008/01/09/revolution-from-cmm5-to-agile/</link>
		<comments>http://ossme.com/2008/01/09/revolution-from-cmm5-to-agile/#comments</comments>
		<pubDate>Wed, 09 Jan 2008 15:06:22 +0000</pubDate>
		<dc:creator>xiaoming</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://ossme.com/2008/01/09/revolution-from-cmm5-to-agile/</guid>
		<description><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/01/09/revolution-from-cmm5-to-agile/&t=Revolution: from CMM5 to Agile&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><p>I recently worked for a client who has been in the stage of CMM5.  After long painful struggling of heavy documents and poor quality of production they decide to give Agile a try. Their plan is to start at the point of upgrading their major network management system.  Off the top of theirs heads is to refactor the code, add tests (unit tests, system tests), and optimize the software development process.</p>
<p>Things did not start as they expected. Problems came into the project team as flood. Some of the problems are</p>
<ul>
<li>How to do TDD?</li>
<li>How to refactor Java or C++ code?</li>
<li>How to write unit tests?</li>
<li>How to automatically do GUI test and system test?</li>
<li>How to apply common Agile software development process under their CMM infrastructure?</li>
<li>How to make the agile process keep going on and on and lower the risk of rolling back?</li>
<li>etc.</li>
</ul>
<p>They don&#8217;t know the answers of those questions and unfortunately they have a extremely complex software development process which depends on documents output very much.  Basically, it constructs under a typical IPD process. The team that I am working with has almost zero knowledge or experience of Agile.</p>
<p>How to  bring such a team which follows a complicated process for a quite long time into the agile world? There might be three things that you could do in order to make it happen.</p>
<p><strong>Firstly, IDEAS!</strong></p>
<p>Brainstorming, ice-break, stand up meeting, retrospective, testing everything and etc. Fill the team with all good ideas and practices of agile as feeding the Beijing duck(If you know the story, Beijing duck was forced feed each each meal).  While, those good practices and ideas are not the core of Agile. During the each session of training, coaching or Q&amp;A, the core message that we delivered is &#8220;Value driven spirit&#8221; and Lean project management methodology.</p>
<p>Team build is also the major task in this stage. When I came in the office at the first time, I saw a silent team. There was no group discussion, everyone works on his own and a few communication.  Let&#8217;s burn them up, agile games were introduced one by one at the beginning of each training or meeting. Then, I encouraged a couple of senior people to coach those junior guys. Prize and appreciation were sent out every a couple hours in order to encourage the whole team to THINK, COMMUNICATE and TALK. It was ready to go forward to next step, when the trust was established in the end of this stage.</p>
<p><strong>Secondly, Process improvement.</strong></p>
<p>The client is using IPD process to manage their software development process. Have a look at the typical waterfall process below.</p>
<p><img src="http://ossme.com/IMG/IPD_process.bmp" title="IPD process" alt="IPD process" align="middle" height="273" width="629" /></p>
<p>You can see huge amount of design description, requirement description, and software description, HLD, LLD documents were written during the whole process. At each point, those documents must be delivered due to the concept of CMM. Meanwhile the quality of the software was not well verified because of less monitoring or feedback during the whole process.</p>
<p>Based on their current process, we figured out a improved process which is attached below</p>
<p><img src="http://ossme.com/IMG/IPD_Improvement.bmp" title="IPD process" alt="IPD process" align="middle" height="256" width="590" /></p>
<p>From the diagram, we can see, the design requirement document (DR) was written in the format of release level stories which were broken down into iteration level stories. These iteration level stories forms Design Specification (DS). The advantage of this change is that we merged DS, SRS and other documents which overlapped a lot into iteration level stories. They could be developed in each iteration. We saved much effort of developing those documents instead that we focused on the quality of the software.</p>
<p>Another shining point of this improvement is that developers/testers do not have to wait for the delivery of these design documents before start coding or testing. On contrast, they get the first set of stories from SE(System engineer) and started coding right after those stories were created. Earlier developer started coding, Earlier the product would be delivered. See the time that we saved on the diagram <img src='http://ossme.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>That has not been all. Step three, do at least four iterations!</strong></p>
<p>People who is doing CMM always have doubts of Agile and its practices. It is supposed to happen and it is really OK. Let&#8217;s roll out based on the hard work that we had done. After three to four iterations, people who have doubts saw something new, continuous integration environment, automatic testing tool, deep code refactoring, 100% unit test coverage, TDD, system test automatically, more communication, pair switching, design discussion, and etc. All these activities turned vividly. The project team was happy and relax when they were pairing and coding. Less stress make them think more. Think how to do things in a different way; how to make this test more efficient, how to refactor this piece of code in a effective way&#8230;&#8230;. Many good things happened in the project. The quality of the product was improved because the coverage of the UT, ST, regression test and smoke test. Team work more efficiently because continuous integration tool, automatic GUI testing tool and etc.</p>
<p>Before we launched the project, we would not believe that a CMM5 organization could convert to agile so successfully. However all this happened pace by pace following the ideas of &#8220;value driven and lean&#8221;.</p>
<p>For me, another successful project as a PM <img src='http://ossme.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></description>
			<content:encoded><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2008/01/09/revolution-from-cmm5-to-agile/&t=Revolution: from CMM5 to Agile&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><p>I recently worked for a client who has been in the stage of CMM5.  After long painful struggling of heavy documents and poor quality of production they decide to give Agile a try. Their plan is to start at the point of upgrading their major network management system.  Off the top of theirs heads is to refactor the code, add tests (unit tests, system tests), and optimize the software development process.</p>
<p>Things did not start as they expected. Problems came into the project team as flood. Some of the problems are</p>
<ul>
<li>How to do TDD?</li>
<li>How to refactor Java or C++ code?</li>
<li>How to write unit tests?</li>
<li>How to automatically do GUI test and system test?</li>
<li>How to apply common Agile software development process under their CMM infrastructure?</li>
<li>How to make the agile process keep going on and on and lower the risk of rolling back?</li>
<li>etc.</li>
</ul>
<p>They don&#8217;t know the answers of those questions and unfortunately they have a extremely complex software development process which depends on documents output very much.  Basically, it constructs under a typical IPD process. The team that I am working with has almost zero knowledge or experience of Agile.</p>
<p>How to  bring such a team which follows a complicated process for a quite long time into the agile world? There might be three things that you could do in order to make it happen.</p>
<p><strong>Firstly, IDEAS!</strong></p>
<p>Brainstorming, ice-break, stand up meeting, retrospective, testing everything and etc. Fill the team with all good ideas and practices of agile as feeding the Beijing duck(If you know the story, Beijing duck was forced feed each each meal).  While, those good practices and ideas are not the core of Agile. During the each session of training, coaching or Q&amp;A, the core message that we delivered is &#8220;Value driven spirit&#8221; and Lean project management methodology.</p>
<p>Team build is also the major task in this stage. When I came in the office at the first time, I saw a silent team. There was no group discussion, everyone works on his own and a few communication.  Let&#8217;s burn them up, agile games were introduced one by one at the beginning of each training or meeting. Then, I encouraged a couple of senior people to coach those junior guys. Prize and appreciation were sent out every a couple hours in order to encourage the whole team to THINK, COMMUNICATE and TALK. It was ready to go forward to next step, when the trust was established in the end of this stage.</p>
<p><strong>Secondly, Process improvement.</strong></p>
<p>The client is using IPD process to manage their software development process. Have a look at the typical waterfall process below.</p>
<p><img src="http://ossme.com/IMG/IPD_process.bmp" title="IPD process" alt="IPD process" align="middle" height="273" width="629" /></p>
<p>You can see huge amount of design description, requirement description, and software description, HLD, LLD documents were written during the whole process. At each point, those documents must be delivered due to the concept of CMM. Meanwhile the quality of the software was not well verified because of less monitoring or feedback during the whole process.</p>
<p>Based on their current process, we figured out a improved process which is attached below</p>
<p><img src="http://ossme.com/IMG/IPD_Improvement.bmp" title="IPD process" alt="IPD process" align="middle" height="256" width="590" /></p>
<p>From the diagram, we can see, the design requirement document (DR) was written in the format of release level stories which were broken down into iteration level stories. These iteration level stories forms Design Specification (DS). The advantage of this change is that we merged DS, SRS and other documents which overlapped a lot into iteration level stories. They could be developed in each iteration. We saved much effort of developing those documents instead that we focused on the quality of the software.</p>
<p>Another shining point of this improvement is that developers/testers do not have to wait for the delivery of these design documents before start coding or testing. On contrast, they get the first set of stories from SE(System engineer) and started coding right after those stories were created. Earlier developer started coding, Earlier the product would be delivered. See the time that we saved on the diagram <img src='http://ossme.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>That has not been all. Step three, do at least four iterations!</strong></p>
<p>People who is doing CMM always have doubts of Agile and its practices. It is supposed to happen and it is really OK. Let&#8217;s roll out based on the hard work that we had done. After three to four iterations, people who have doubts saw something new, continuous integration environment, automatic testing tool, deep code refactoring, 100% unit test coverage, TDD, system test automatically, more communication, pair switching, design discussion, and etc. All these activities turned vividly. The project team was happy and relax when they were pairing and coding. Less stress make them think more. Think how to do things in a different way; how to make this test more efficient, how to refactor this piece of code in a effective way&#8230;&#8230;. Many good things happened in the project. The quality of the product was improved because the coverage of the UT, ST, regression test and smoke test. Team work more efficiently because continuous integration tool, automatic GUI testing tool and etc.</p>
<p>Before we launched the project, we would not believe that a CMM5 organization could convert to agile so successfully. However all this happened pace by pace following the ideas of &#8220;value driven and lean&#8221;.</p>
<p>For me, another successful project as a PM <img src='http://ossme.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://ossme.com/2008/01/09/revolution-from-cmm5-to-agile/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Project risk management and Agile</title>
		<link>http://ossme.com/2007/10/16/project-risk-management-and-agile/</link>
		<comments>http://ossme.com/2007/10/16/project-risk-management-and-agile/#comments</comments>
		<pubDate>Tue, 16 Oct 2007 11:17:12 +0000</pubDate>
		<dc:creator>xiaoming</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://ossme.com/2007/10/16/project-risk-management-and-agile/</guid>
		<description><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2007/10/16/project-risk-management-and-agile/&t=Project risk management and Agile&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><h3>Project risk management</h3>
<p>In terms of project management theory, risk management in a project can be defined into three main activities:</p>
<ul>
<li>Risk assessment and analysis</li>
<li>Risk reduction and monitoring</li>
<li>Risk management process and methodology</li>
</ul>
<p>It might be difficult to understand the boring theory. Let me give a real example to talk through how these activities happen in a project.</p>
<p>Imagine, you and your partner plan to have dinner in a fancy restaurant on the Fifth Revenue for your three years anniversary. Basically, you guys need go through the following steps in order to make your wife/husband happy.</p>
<ol>
<li>Find the number of the restaurant</li>
<li>Call the number and book the table</li>
<li>travel to the restaurant</li>
<li>Order</li>
<li>Eat, drink, sweet talk, eye contact, and etc&#8230;. wait, drink more</li>
<li> Pay</li>
</ol>
<p>In the above steps, if everything is going well, brilliant! However, as you know anything could go wrong in real life, you would not know beforehand. Such as &#8220;the number is wrong&#8221;, &#8220;No table available&#8221;, &#8220;No texi, or huge traffic prevent u getting there&#8221;, &#8220;the restaurant forgets booking your table&#8221;,  &#8220;Your wife/husband is not happy with the dishes&#8221;, &#8220;They do not accept credit card or your credit card does not work&#8221; and etc. There are many of them. On contrast, they might not happen if you are lucky. You might discover more risks than I list out. So generally, a brainstorming is absolutely necessary on this stage. Just remember, the brainstorming starts earlier than your anniversary and go through the whole process.</p>
<p>Yes, first thing we need do is to assess and analyse these potential risks and their threats so that you can decide which one you need pay more attention and which not.  Let&#8217;s make a matrix for these risks.</p>
<table border="1">
<tr>
<th>Risk description</th>
<th>Status</th>
<th>Impact*likelihood</th>
<th>Date</th>
</tr>
<tr>
<td>the number is wrong</td>
<td>Undefined</td>
<td>unknown</td>
<td>15Oct2007</td>
</tr>
<tr>
<td>No table available</td>
<td>defined</td>
<td>Small</td>
<td>15Oct2007</td>
</tr>
<tr>
<td>the restaurant forget booking your table</td>
<td>identified</td>
<td>medium</td>
<td>15Oct2007</td>
</tr>
<tr>
<td>Your wife/husband is not happy with the dishes</td>
<td>identified</td>
<td>critical</td>
<td>15Oct2007</td>
</tr>
</table>
<p>You can easily figure out why &#8220;Your wife/husband is not happy with the dishes&#8221; is critical for this &#8220;project&#8221;. Because it might cause a big fight and ruin your &#8220;perfect plan&#8221;. The impact*likelihood of &#8220;No table available&#8221; is small because it is not some special occasion or holidays. Generally it is not that difficult to figure out based on brainstorming, assessment and analysis.</p>
<p>During the analysis, you can prioritize  the risks by &#8220;Impact*likelihood&#8221; to determine which risk should be pay more attention and focused on.</p>
<p>So, when we know these risks and their threats, impact and likelihood, how do you manage them in order to reduce the impact to the lowest level? There are four ways to manage risks. They are</p>
<ul>
<li>Mitigation</li>
<li>Transference</li>
<li>Acceptance</li>
<li>Avoidance</li>
</ul>
<p>In most of the circumstance, we acceptance those risks with small &#8220;impact*likelihood&#8221; and try to avoid or transfer some risks which can be. For the rest, you might not find a way to get rid of them, so mitigation is the only thing that you can do.</p>
<p>For the risks specified in the matrix above,  we can add columns &#8220;Strategy&#8221;, &#8220;action&#8221; and &#8220;Owner&#8221;. The duration of the action would be nice to have.</p>
<table border="1">
<tr>
<th>Risk description</th>
<th>Date</th>
<th>Status</th>
<th>Impact<br />
*likelihood</th>
<th>Strategy</th>
<th>&#8212;-Action&#8212;-</th>
<th>Owner</th>
<th>Others</th>
</tr>
<tr>
<td>the number is wrong</td>
<td>15Oct2007</td>
<td>Transferred</td>
<td>small</td>
<td>Transfer</td>
<td>Find the number on a popular online restaurant service</td>
<td>Me</td>
<td>N/A</td>
</tr>
<tr>
<td>No table available</td>
<td>15Oct2007</td>
<td>Transferred</td>
<td>Small</td>
<td>Transfer</td>
<td>Go to the nice drink place besides the restaurant, and wait for the table to be ready</td>
<td>Me</td>
<td>N/A</td>
</tr>
<tr>
<td>the restaurant forget booking your table</td>
<td>15Oct2007</td>
<td>Migrated</td>
<td>small</td>
<td>Migrate</td>
<td>Call the restaurant twice to ensure that the table is booked</td>
<td>Me</td>
<td>N/A</td>
</tr>
<tr>
<td>Your wife/husband is not happy with the dishes</td>
<td>15Oct2007</td>
<td>Migrated</td>
<td>critical</td>
<td>Migrate</td>
<td>Ask around or search online to select those nice food</td>
<td>Me</td>
<td>It really depend on my wife&#8217;s mood</td>
</tr>
</table>
<p>Next thing that you need do is monitoring the risks and guarantee that all the known risks are under control.</p>
<h3>Agile project risk management</h3>
<p>Even in agile projects, risk could be much less against waterfall model. There are still going to be risks for a project management team do deal with. So how and when to do it? Who should responsible for the risk management in an agile project?</p>
<ul>
<li>During the inception phase, much brainstorming will be done, so why not identify, assess and analyse some potential risks?</li>
<li>During daily stand up, why not the team give a brief update of risk matrix and new risks that you can think of?</li>
<li>Any time during the day, when an idea pop up your mind, why not have a discussion with the team members? If it is a risk, record it into the matrix.</li>
<li>PMT, as everyone in the team is responsible for risk management</li>
<li>PM, as project manager is responsible for maintain the matrix and facilitate weekly risk  update meeting.</li>
</ul>
<p>There are more that we can do for agile project risk management.</p>
<p>Based on our experience, where could risk come from and how it look like could be forecast and pre-prepared. However do not pre-prepare too much. Because every project is different, it might have all different risks across different projects.</p>
<p>There is no short cut to do risk management,  just keep an eye on and make sure everything is followed up by someone.</p>
<p>Interestingly, by using lean project management, it could help to identify the risk priority but it does not mean that we could ignore the risk management by focusing on the bottle neck.</p>
]]></description>
			<content:encoded><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2007/10/16/project-risk-management-and-agile/&t=Project risk management and Agile&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><h3>Project risk management</h3>
<p>In terms of project management theory, risk management in a project can be defined into three main activities:</p>
<ul>
<li>Risk assessment and analysis</li>
<li>Risk reduction and monitoring</li>
<li>Risk management process and methodology</li>
</ul>
<p>It might be difficult to understand the boring theory. Let me give a real example to talk through how these activities happen in a project.</p>
<p>Imagine, you and your partner plan to have dinner in a fancy restaurant on the Fifth Revenue for your three years anniversary. Basically, you guys need go through the following steps in order to make your wife/husband happy.</p>
<ol>
<li>Find the number of the restaurant</li>
<li>Call the number and book the table</li>
<li>travel to the restaurant</li>
<li>Order</li>
<li>Eat, drink, sweet talk, eye contact, and etc&#8230;. wait, drink more</li>
<li> Pay</li>
</ol>
<p>In the above steps, if everything is going well, brilliant! However, as you know anything could go wrong in real life, you would not know beforehand. Such as &#8220;the number is wrong&#8221;, &#8220;No table available&#8221;, &#8220;No texi, or huge traffic prevent u getting there&#8221;, &#8220;the restaurant forgets booking your table&#8221;,  &#8220;Your wife/husband is not happy with the dishes&#8221;, &#8220;They do not accept credit card or your credit card does not work&#8221; and etc. There are many of them. On contrast, they might not happen if you are lucky. You might discover more risks than I list out. So generally, a brainstorming is absolutely necessary on this stage. Just remember, the brainstorming starts earlier than your anniversary and go through the whole process.</p>
<p>Yes, first thing we need do is to assess and analyse these potential risks and their threats so that you can decide which one you need pay more attention and which not.  Let&#8217;s make a matrix for these risks.</p>
<table border="1">
<tr>
<th>Risk description</th>
<th>Status</th>
<th>Impact*likelihood</th>
<th>Date</th>
</tr>
<tr>
<td>the number is wrong</td>
<td>Undefined</td>
<td>unknown</td>
<td>15Oct2007</td>
</tr>
<tr>
<td>No table available</td>
<td>defined</td>
<td>Small</td>
<td>15Oct2007</td>
</tr>
<tr>
<td>the restaurant forget booking your table</td>
<td>identified</td>
<td>medium</td>
<td>15Oct2007</td>
</tr>
<tr>
<td>Your wife/husband is not happy with the dishes</td>
<td>identified</td>
<td>critical</td>
<td>15Oct2007</td>
</tr>
</table>
<p>You can easily figure out why &#8220;Your wife/husband is not happy with the dishes&#8221; is critical for this &#8220;project&#8221;. Because it might cause a big fight and ruin your &#8220;perfect plan&#8221;. The impact*likelihood of &#8220;No table available&#8221; is small because it is not some special occasion or holidays. Generally it is not that difficult to figure out based on brainstorming, assessment and analysis.</p>
<p>During the analysis, you can prioritize  the risks by &#8220;Impact*likelihood&#8221; to determine which risk should be pay more attention and focused on.</p>
<p>So, when we know these risks and their threats, impact and likelihood, how do you manage them in order to reduce the impact to the lowest level? There are four ways to manage risks. They are</p>
<ul>
<li>Mitigation</li>
<li>Transference</li>
<li>Acceptance</li>
<li>Avoidance</li>
</ul>
<p>In most of the circumstance, we acceptance those risks with small &#8220;impact*likelihood&#8221; and try to avoid or transfer some risks which can be. For the rest, you might not find a way to get rid of them, so mitigation is the only thing that you can do.</p>
<p>For the risks specified in the matrix above,  we can add columns &#8220;Strategy&#8221;, &#8220;action&#8221; and &#8220;Owner&#8221;. The duration of the action would be nice to have.</p>
<table border="1">
<tr>
<th>Risk description</th>
<th>Date</th>
<th>Status</th>
<th>Impact<br />
*likelihood</th>
<th>Strategy</th>
<th>&#8212;-Action&#8212;-</th>
<th>Owner</th>
<th>Others</th>
</tr>
<tr>
<td>the number is wrong</td>
<td>15Oct2007</td>
<td>Transferred</td>
<td>small</td>
<td>Transfer</td>
<td>Find the number on a popular online restaurant service</td>
<td>Me</td>
<td>N/A</td>
</tr>
<tr>
<td>No table available</td>
<td>15Oct2007</td>
<td>Transferred</td>
<td>Small</td>
<td>Transfer</td>
<td>Go to the nice drink place besides the restaurant, and wait for the table to be ready</td>
<td>Me</td>
<td>N/A</td>
</tr>
<tr>
<td>the restaurant forget booking your table</td>
<td>15Oct2007</td>
<td>Migrated</td>
<td>small</td>
<td>Migrate</td>
<td>Call the restaurant twice to ensure that the table is booked</td>
<td>Me</td>
<td>N/A</td>
</tr>
<tr>
<td>Your wife/husband is not happy with the dishes</td>
<td>15Oct2007</td>
<td>Migrated</td>
<td>critical</td>
<td>Migrate</td>
<td>Ask around or search online to select those nice food</td>
<td>Me</td>
<td>It really depend on my wife&#8217;s mood</td>
</tr>
</table>
<p>Next thing that you need do is monitoring the risks and guarantee that all the known risks are under control.</p>
<h3>Agile project risk management</h3>
<p>Even in agile projects, risk could be much less against waterfall model. There are still going to be risks for a project management team do deal with. So how and when to do it? Who should responsible for the risk management in an agile project?</p>
<ul>
<li>During the inception phase, much brainstorming will be done, so why not identify, assess and analyse some potential risks?</li>
<li>During daily stand up, why not the team give a brief update of risk matrix and new risks that you can think of?</li>
<li>Any time during the day, when an idea pop up your mind, why not have a discussion with the team members? If it is a risk, record it into the matrix.</li>
<li>PMT, as everyone in the team is responsible for risk management</li>
<li>PM, as project manager is responsible for maintain the matrix and facilitate weekly risk  update meeting.</li>
</ul>
<p>There are more that we can do for agile project risk management.</p>
<p>Based on our experience, where could risk come from and how it look like could be forecast and pre-prepared. However do not pre-prepare too much. Because every project is different, it might have all different risks across different projects.</p>
<p>There is no short cut to do risk management,  just keep an eye on and make sure everything is followed up by someone.</p>
<p>Interestingly, by using lean project management, it could help to identify the risk priority but it does not mean that we could ignore the risk management by focusing on the bottle neck.</p>
]]></content:encoded>
			<wfw:commentRss>http://ossme.com/2007/10/16/project-risk-management-and-agile/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Between TDD and Java code comments</title>
		<link>http://ossme.com/2007/10/02/between-tdd-and-java-code-comments/</link>
		<comments>http://ossme.com/2007/10/02/between-tdd-and-java-code-comments/#comments</comments>
		<pubDate>Wed, 03 Oct 2007 03:42:57 +0000</pubDate>
		<dc:creator>xiaoming</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://ossme.com/2007/10/02/between-tdd-and-java-code-comments/</guid>
		<description><![CDATA[<div class="diggthisplugin" style="float: right; width: 42px; padding-right: 10px; margin-left: 10px; margin-bottom: 0px;"><iframe src="http://digg.com/tools/diggthis.php?u=http://ossme.com/2007/10/02/between-tdd-and-java-code-comments/&t=Between TDD and Java code comments&k=#FFFFFF" scrolling="no" style="border: none; height: 80px; width: 52px;"></iframe>
		</div><p>The last day before China National holiday, I got the chance to learn <a href="http://www.answers.com/topic/test-driven-development" target="new">TDD</a> from Hu Kai who is a main contributor to <a href="http://cruisecontrol.sourceforge.net/">CruiseControl</a> and <a href="http://studios.thoughtworks.com/cruisecontrol">CruiseControlEnterprise</a>.</p>
<p>Basically, we made up an example for practicing. A good example for TDD exercises is &#8220;develop a calculator&#8221;.</p>
<ul>
<li>First thing, we did was write a JUnit test for calculator project, based on requirement<br />
<blockquote><p><strong>As a user, I want the calculator to have absolute value function, so that I can carry complex calculations.</strong></p></blockquote>
<p>with one of the three acceptance criteria.</li>
<li>Then run the test. When we saw the test failed, we know that it was time to develop some functions to make the test successfully.</li>
<li>After we accomplish the the code part, then re-run the test. This time test passed <img src='http://ossme.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li>It is not done yet. Add one more test case, run test. Failed, then improve the code.</li>
<li>When we added the last two test cases, test would not fail so it meant that our function was achieved based on the requirement.</li>
<li>Next step refactoring code. Done. The code looked neat and pretty</li>
</ul>
<p>But it looked something missing&#8230;&#8230; Ah! Comments! Yes, I remembered that the first thing my teacher taught me in Java programming was &#8220;Don&#8217;t forget writing down your comments, otherwise people would not understand them.&#8221;</p>
<p><em><strong>Hu kai, why did not write some comments in your code?</strong></em>&#8212; Xiaoming</p>
<p><em><strong>You don&#8217;t have to because all the tests and code are self-explaining and highly comprehensive.</strong></em>&#8212; Hu Kai</p>
<p>Then people in the room had a discussion when should we have comments in Java code with Agile practice. My idea was that for those legacy system, if there were no comments or documents, how could people understood them? Different opinion was to write as high-level self-explaining code as possible. For example, make the names of classes, functions human-readable. I would buy their ideas except in some cases, comments are necessary</p>
<ul>
<li>Interfaces, libraries. Yes these abstract information need comments to help programmers to understand how to use them. We might call it &#8220;User guide&#8221; rather than comments.</li>
<li>Complex algorithm. It would be very difficult for programmer to understand without spending much time on it. So it&#8217;d better to have comments for the brief explanation of this section of code.</li>
</ul>
<p>Meanwhile, functions should be as simple as possible so you don&#8217;t have to write comments for complicated ones. Basically breaking down complex functions into simple ones would be a good idea.</p>
<p>All in all, when we initiative to learn something, it always came to the end with more knowledge and experience in your pockets. What a brilliant enthusiasm of learning!</p>
<p>Unfortunately, in most of the university classes and labs, students have not got chances to do useful exercises like this. I highly recommend doing more in our universities classes or labs.<br />

<p align="center">~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.</p>
<p>
  According to Lingling&#8217;s question, let me give a real example. Firstly list the three acceptance criteria.</p>
<blockquote><p>Given a positive integer A ,When I calculate it with abs function, then I get the same number A.</p></blockquote>
<blockquote><p>Given a negative integer &#8220;-B&#8221; ,When I calculate it with abs function, then I get a positive number &#8220;B&#8221;.</p></blockquote>
<blockquote><p>Given number &#8220;zero&#8221; ,When I calculate it with abs function, then I get zero.</p></blockquote>
<p>Let&#8217;s write the first test case: My idea is to show the logic so it would not be the real code</p>
<p><code>Public boolean testAPositiveNumberShouldReturnPositiveNumberWithSameValue(4){<br />
if(object.abs(4)=4){<br />
return true;}<br />
else{<br />
return false;<br />
}<br />
}</code></p>
<p>When we have this test case for acceptance criteria one, and run the test. Obviously, the test failed because we do not have the function abs yet. So let&#8217;s try to write some code to make the test pass</p>
<p><code>Public int abs(a){<br />
if(a&gt;0){<br />
return a;<br />
}<br />
}<br />
</code></p>
<p>Build the code, once you run the calculator tests, it will pass because the method provide the function of test &#8220;testAPositiveNumberShouldReturnPositiveNumberWithSameValue&#8221;</p>
<p>Then we add another test case based on Acceptance Criteria two</p>
<p><code>Public boolean testANegativeNumberShouldReturnPositiveNumberWithSameValue(-4){<br />
if(object.abs(-4)=4){<br />
return true;}<br />
else{<br />
return false;}<br />
}</code></p>
<p>When you run the test, you can imagine that the test failed.</p>
<p>It is time for you to write some code to fix the fail test. Can you do it? OK let me do it for you:-)</p>
<p><code>Public int abs(a){<br />
if(a&gt;0){<br />
return a;<br />
}<br />
else{<br />
return -a;<br />
}<br />
}<br />
</code></p>
<p>Build, run test, Yeh!!!! Test passed!!! Even when u try the third test case, it passed either. It means that you don&#8217;t have to write more code about it. This is the beauty of TDD</p>
<p>Next step code refactoring. You may use Math.abs() to replace that piece of code</p>
<p>So, let&#8217;s answer your question one by one:</p>
<ul>
<li>Is eac