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

<channel>
	<title>Karmona Pragmatic Blog</title>
	<atom:link href="http://blog.karmona.com/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.karmona.com</link>
	<description>Pragmatic Software Management, Internet Trends, Life and more...</description>
	<lastBuildDate>Wed, 14 Jul 2010 19:40:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Underestimation is Underestimated</title>
		<link>http://blog.karmona.com/index.php/2010/04/19/underestimation-is-underestimated/</link>
		<comments>http://blog.karmona.com/index.php/2010/04/19/underestimation-is-underestimated/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 21:21:50 +0000</pubDate>
		<dc:creator>Moti Karmona &#124; מוטי קרמונה</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Planning]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Psychology]]></category>
		<category><![CDATA[Software Management]]></category>

		<guid isPermaLink="false">http://blog.karmona.com/?p=624</guid>
		<description><![CDATA[
Underestimation is Underestimated (a.k.a. Overestimation is Overestimated)
Sometimes it seems like we have an underestimation gene embedded really deep in our cognition but for some “obvious” reason (e.g. underestimation! :) most manager will rather “fight” overestimation and *not* underestimation.
Disclaimer: I have originally estimated this post will take ~33 min but it took me ~240% more time… [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.karmona.com/wp-content/uploads/2010/04/CyrilNorthcoteParkinson.jpg"><img class="alignleft size-thumbnail wp-image-625" title="Cyril Northcote Parkinson" src="http://blog.karmona.com/wp-content/uploads/2010/04/CyrilNorthcoteParkinson-150x150.jpg" alt="CyrilNorthcoteParkinson 150x150 Underestimation is Underestimated" width="150" height="150" align="left" /></a></p>
<p><strong>Underestimation is Underestimated</strong> (a.k.a. Overestimation is Overestimated)</p>
<p>Sometimes it seems like we have an underestimation gene embedded really deep in our cognition but for some “obvious” reason (e.g. underestimation! :) most manager will rather “fight” overestimation and *<strong>not</strong>* underestimation.</p>
<p>Disclaimer: I have originally estimated this post will take ~33 min but it took me ~240% more time… (this is why I prefer to <a title="Karmona @ Twitter" href="http://twitter.com/karmona" target="_blank">tweet</a> lately ;)</p>
<p>Six annoying facts about our (/homo sapiens) planning or estimation “skills”:</p>
<ul>
<li>We are basically optimistic and have <a title="Herd Instinct" href="http://en.wikipedia.org/wiki/Herd_instinct" target="_blank">strong</a> <a title="Conformity" href="http://en.wikipedia.org/wiki/Conformity_(psychology)" target="_blank">desire</a> to <a title="Milgram Experiment" href="http://en.wikipedia.org/wiki/Milgram_experiment" target="_blank">please </a></li>
<li>We tend to have <a title="Forgetting" href="http://en.wikipedia.org/wiki/Forgetting" target="_blank">incomplete</a> <a title="Rosy Retrospection" href=" http://en.wikipedia.org/wiki/Rosy_retrospection" target="_blank">recall</a> of previous experience</li>
<li>We tend to have <a title="Focusing Effect" href="http://en.wikipedia.org/wiki/Focusing_effect" target="_blank">focus bias</a> when estimating e.g. estimating only the coding phase estimations which is only ~14-37% of the required work</li>
<li>We tend to postpone what we can a.k.a. “<a title="Student Syndrome" href="http://en.wikipedia.org/wiki/Student_syndrome" target="_blank">The Student Syndrome</a>”  (Eliyahu M. Goldratt, Critical Chain)</li>
<li><em>“It always takes longer than you expect, even when you take into account </em><a title="Hofstadter's Law" href="http://en.wikipedia.org/wiki/Hofstadter's_law" target="_blank"><em>Hofstadter&#8217;s Law</em></a><em>”</em> (Douglas Hofstadter, Godel, Escher, Bach: An Eternal Golden Braid)</li>
<li>We tend to underestimate task completion times – a.k.a. <a title="The Planning Fallacy" href="http://en.wikipedia.org/wiki/Planning_fallacy" target="_blank">The planning fallacy</a></li>
</ul>
<p><a href="http://blog.karmona.com/wp-content/uploads/2010/04/Plan-Ahead.jpg"><img class="alignleft size-full wp-image-633" title="Plan Ahead" src="http://blog.karmona.com/wp-content/uploads/2010/04/Plan-Ahead.jpg" alt="Plan Ahead Underestimation is Underestimated" width="578" height="266" /></a></p>
<p><strong>Overestimation is Overestimated</strong></p>
<p><em><span style="color: #808080;">“The developers say that this project will take 6 months… I think there’s some padding in their estimates and some fat that can be squeezed out of them…we also need to instill a sense of urgency in the development team… so I’m going to insist on a 3-month schedule. I don’t really believe the project can be completed in 3 months, but that’s what I’m going to present to the developers. If I’m right, the developers might deliver in 4 or 5 months. Worst case, the developers will deliver in the 6 months they originally estimated”</span></em> (Does this ring *<strong>any</strong>* bell???)</p>
<p>Four reasons on managers tendency to “fight” overestimations:</p>
<ul>
<li>Underestimation (see above :) | <span style="color: #808080;"><em>“The feature estimation seems bloated”</em></span> | <em><span style="color: #808080;">“Isn’t it 20 min work?”</span></em> | <em><span style="color: #808080;">“Just add another index to the %$^&amp;ing table?”</span></em> |<em><span style="color: #808080;"> “It is only one more button…”</span></em></li>
<li>Unreasonable time constraint | <em><span style="color: #808080;">“We need this feature yesterday”</span></em> |<em> &#8220;Nothing is impossible for the man who doesn&#8217;t have to do it himself&#8221;</em> (A. H. Weiler)</li>
<li>True belief that <a title="Parkinson's Law" href="http://en.wikipedia.org/wiki/Parkinson's_Law" target="_blank">Parkinson’s “Law”</a> is really a law &#8211; <em>“Work expands so as to fill the time available for its completion”</em></li>
<li>&#8220;The Student Syndrome”  (see above)</li>
</ul>
<p>So… if feature estimation seems bloated, managers and other project stakeholders fear that Parkinson’s Law and the Student Syndrome would kick in and therefore consciously squeeze the estimates to try to control it (a.k.a. “The Parkinson’s Squeeze”) and when we squeeze where it isn’t needed or was squeezed already, it immediately lead to… UNDERESTIMATION (!!!)</p>
<p><strong><a href="http://blog.karmona.com/wp-content/uploads/2010/04/75988.strip_1.gif"><img class="alignleft size-full wp-image-628" title="Dilbert Project Estimation" src="http://blog.karmona.com/wp-content/uploads/2010/04/75988.strip_1.gif" alt="75988.strip 1 Underestimation is Underestimated" width="640" height="199" /></a></strong></p>
<p><strong>Underestimation is Underestimated</strong></p>
<p>Underestimation creates numerous problems – some obvious, some not so obvious.</p>
<ul>
<li><strong>Reduced effectiveness of project plans &#8211; </strong>Low estimates undermine effective planning by feeding bad assumptions into plans for specific activities. They can cause planning errors in the team size, such as planning to use a team that’s smaller than it should be. They can undermine the ability to coordinate among groups – if the groups aren’t ready when they said they would be, other groups won’t be able to integrate with their work. If the estimation errors caused the plans to be off by only 5% or 10%, those errors wouldn’t cause any significant problems but numerous studies have found that software estimates are often inaccurate by 100% or more (see above). When the planning assumptions are wrong by this magnitude, the average project’s plans are based on assumptions that are so far off that the plans are virtually useless.</li>
<li><strong>Statistically reduced chance of on-time completion &#8211; </strong>Developers typically estimate 20% to 30% lower than their actual effort. Merely using their normal estimates makes the project plans optimistic. Reducing their estimates even further simply reduces the chances of on-time completion even more.<strong> </strong></li>
<li><strong>Poor technical foundation</strong> leads to worse-than-nominal results. A low estimate can cause you to spend too little time on upstream activities such as requirements and design. If you don’t put enough focus on requirements and design, you’ll get to redo your requirements and redo your design later in the project – at greater cost than if you’d done those activities well in the first place. This ultimately makes your project take much longer than it would have taken with an accurate estimate.</li>
<li><strong>Destructive late-project dynamics</strong> make the project worse than nominal Once a project gets into “late” status, project teams engage in numerous activities that they don’t need to engage in during an “on-time” project&#8230; below are some examples when the important characteristic of each of these activities is that they don’t need to occur at all when a project is meeting its goals, these extra activities drain time away from productive work on the project and make it take longer than it would if it were estimated and planned accurately
<ul>
<li>More status meetings with upper management to discuss how to get the project back on track</li>
<li>Frequent re-estimation, late in the project, to determine just when the project will be completed.</li>
<li>Apologizing to key customers for missing delivery dates (including attending meetings with those customers).</li>
<li>Preparing interim releases to support customer demos, trade shows, and so on. If the software were ready on time, the software itself could be used, and no interim release would be necessary.</li>
<li>More discussions about which requirements absolutely must be added because the project has been underway so long.</li>
<li>Fixing problems arising from quick and dirty workarounds that were implemented earlier in response to the schedule pressure.</li>
</ul>
</li>
</ul>
<p><strong><a href="http://blog.karmona.com/wp-content/uploads/2010/04/OverestimationPenalties.jpg"><img class="alignleft size-full wp-image-629" title="Overestimation Penalties" src="http://blog.karmona.com/wp-content/uploads/2010/04/OverestimationPenalties.jpg" alt="OverestimationPenalties Underestimation is Underestimated" width="604" height="253" /></a></strong></p>
<p><strong>Tip of the day</strong><br />
Never intentionally underestimate. The penalty for underestimation is more severe than the penalty for overestimation. Address concerns about overestimation through control, tracking and *<strong>mentoring</strong>* but <span style="text-decoration: underline;">not</span> by bias.</p>
<p>****************************************</p>
<p>More related posts (a.k.a. people who read this post also read these posts)</p>
<ul>
<li><a title="Software Projects Anxiety @ http://blog.karmona.com" href="http://blog.karmona.com/index.php/2007/10/16/software-projects-anxiety/" target="_blank">Software projects anxiety</a></li>
<li><a title="The Stockdale Paradox the Pessimistic Developer Paradigm @ http://blog.karmona.com" href="http://blog.karmona.com/index.php/2007/07/14/the-stockdale-paradox-the-pessimistic-developer-paradigm/" target="_blank">The Stockdale Paradox the Pessimistic Developer paradigm</a></li>
<li><a title="In Broken Images" href="http://blog.karmona.com/index.php/2008/03/20/in-broken-images/" target="_blank">In Broken Images</a></li>
<li><a title="The Dunning Kruger Effect" href="http://blog.karmona.com/index.php/2008/11/15/the-dunning-kruger-effect/" target="_blank">The Dunning Kruger Effect</a></li>
<li><a title="The Cone of Uncertainty in Pastel" href="http://blog.karmona.com/index.php/2010/04/18/the-cone-of-uncertainty-in-pastel/" target="_blank">The Cone of Uncertainty in Pastel</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.karmona.com/index.php/2010/04/19/underestimation-is-underestimated/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The Cone of Uncertainty in Pastel</title>
		<link>http://blog.karmona.com/index.php/2010/04/18/the-cone-of-uncertainty-in-pastel/</link>
		<comments>http://blog.karmona.com/index.php/2010/04/18/the-cone-of-uncertainty-in-pastel/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 18:49:40 +0000</pubDate>
		<dc:creator>Moti Karmona &#124; מוטי קרמונה</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Planning]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software Management]]></category>

		<guid isPermaLink="false">http://blog.karmona.com/?p=614</guid>
		<description><![CDATA[“The further a project progressed, the more accurate the estimates for the remaining effort and time became”
(Barry Boehm, &#8220;Software Engineering Economics“, 1981)
 
NASA also came to the same conclusion that in the beginning of the project life cycle (i.e. before gathering of requirements) estimations have in general an uncertainty of factor 4. This means that the actual duration [...]]]></description>
			<content:encoded><![CDATA[<p><em><a href="http://blog.karmona.com/wp-content/uploads/2010/04/BarryBoehm.jpg"><img class="alignleft size-thumbnail wp-image-618" title="Barry Boehm" src="http://blog.karmona.com/wp-content/uploads/2010/04/BarryBoehm-150x150.jpg" alt="BarryBoehm 150x150 The Cone of Uncertainty in Pastel" width="150" height="150" align="left" /></a>“The further a project progressed, the more accurate the estimates for the remaining effort and time became”</em><br />
(<a title="Barry Boehm" href="http://en.wikipedia.org/wiki/Barry_Boehm" target="_blank">Barry Boehm</a>, &#8220;Software Engineering Economics“, 1981)<br />
<em> </em><br />
NASA also came to the same <a title="Manager's Handbook for Software Development | NASA" href="http://homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-manage.pdf" target="_blank">conclusion</a> that in the beginning of the project life cycle (i.e. before gathering of requirements) estimations have in general an uncertainty of factor 4. This means that the actual duration can be 4 times or 1/4th of the first estimations&#8230;<br />
<em> </em><br />
I felt very free to add my own interpretation of the different point-of-views with cool <strong><span style="color: #ff99cc;">p</span><span style="color: #ffcc99;">a</span><span style="color: #ccffcc;">s</span><span style="color: #99ccff;">t</span><span style="color: #cc99ff;">e</span><span style="color: #ff99cc;">l</span></strong> colors as a sneak-peak cool-<a title="Delver.com - Beta" href="http://www.delver.com" target="_blank">beta</a>-preview of my next post.</p>
<p><a href="http://blog.karmona.com/wp-content/uploads/2010/04/TheConeOfUncertainty.gif"><img class="alignleft size-full wp-image-619" title="The Cone of Uncertainty" src="http://blog.karmona.com/wp-content/uploads/2010/04/TheConeOfUncertainty.gif" alt="TheConeOfUncertainty The Cone of Uncertainty in Pastel" width="665" height="489" /></a></p>
<p>Make sense?<br />
<em> </em></p>
<p><em> </em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.karmona.com/index.php/2010/04/18/the-cone-of-uncertainty-in-pastel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Just upgraded to WordPress 2.9 – Carmen</title>
		<link>http://blog.karmona.com/index.php/2009/12/22/wordpress-29-carmen-upgrade/</link>
		<comments>http://blog.karmona.com/index.php/2009/12/22/wordpress-29-carmen-upgrade/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 14:29:55 +0000</pubDate>
		<dc:creator>Moti Karmona &#124; מוטי קרמונה</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Simplicity]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.karmona.com/?p=595</guid>
		<description><![CDATA[I have just upgraded to WordPress 2.9 &#8211; Carmen (named in honor of the jazz vocalist Carmen McRae) in less than 3 minutes…
WordPress 2.9 Highlights
* Global undo/”trash” feature
* Built-in image editor
* Batch plugin update and compatibility checking
* Easier video embeds
* Over 500 tickets, bugs and enhancements

]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.karmona.com/wp-content/uploads/2009/12/CARMEN_McRAE.jpg"><img class="alignleft size-thumbnail wp-image-596" title="Carmen McRae" src="http://blog.karmona.com/wp-content/uploads/2009/12/CARMEN_McRAE-150x150.jpg" alt="CARMEN McRAE 150x150 Just upgraded to WordPress 2.9 – Carmen" width="150" height="150" align="left" /></a>I have just <a href="http://blog.karmona.com/index.php/2009/06/14/wordpress-28-baker-upgrade/">upgraded</a> to <a href="http://wordpress.org/development/2009/12/wordpress-2-9/">WordPress 2.9</a> &#8211; Carmen (named in honor of the jazz vocalist Carmen McRae) in less than 3 minutes…</p>
<p><strong>WordPress 2.9 Highlights</strong></p>
<p>* Global undo/”trash” feature<br />
* Built-in image editor<br />
* Batch plugin update and compatibility checking<br />
* Easier video embeds<br />
* Over <a href="http://core.trac.wordpress.org/query?status=closed&amp;milestone=2.9">500 tickets, bugs and enhancements</a></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="224" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="flashvars" value="guid=NBZ853Xn&amp;width=400&amp;height=224" /><param name="src" value="http://v.wordpress.com/wp-content/plugins/video/flvplayer.swf?ver=1.11" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="400" height="224" src="http://v.wordpress.com/wp-content/plugins/video/flvplayer.swf?ver=1.11" allowfullscreen="true" flashvars="guid=NBZ853Xn&amp;width=400&amp;height=224"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.karmona.com/index.php/2009/12/22/wordpress-29-carmen-upgrade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Review Movie</title>
		<link>http://blog.karmona.com/index.php/2009/12/13/code-review-movie/</link>
		<comments>http://blog.karmona.com/index.php/2009/12/13/code-review-movie/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 18:17:10 +0000</pubDate>
		<dc:creator>Moti Karmona &#124; מוטי קרמונה</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Mercury]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Software Management]]></category>

		<guid isPermaLink="false">http://blog.karmona.com/?p=585</guid>
		<description><![CDATA[
I have found this &#8220;old&#8221; movie we made back in 2002 during my work at Mercury to &#8220;educate&#8221; new employees on our code review procedure.
p.s. Raz Yalov was nominated for best supporting actor that year ;)
Enjoy&#8230;
************************************************************************
I have also copy-pasted the presentation transcript below&#8230;

The Golden Rules of Code Review

Do a self-review first
Stick to the requirements
If you [...]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/olCVHBPZvwM&amp;hl=en_US&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/olCVHBPZvwM&amp;hl=en_US&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>I have found this &#8220;old&#8221; movie we made back in 2002 during my work at Mercury to &#8220;educate&#8221; new employees on our code review procedure.</p>
<p>p.s. Raz Yalov was nominated for best <strong>supporting </strong>actor that year ;)</p>
<p>Enjoy&#8230;</p>
<p>************************************************************************</p>
<p>I have also copy-pasted the presentation transcript below&#8230;</p>
<ul>
<li><strong>The Golden Rules of Code Review</strong>
<ul>
<li>Do a self-review first</li>
<li>Stick to the requirements</li>
<li>If you need to explain it, document it!</li>
<li>It’s about the code &#8211; not about you!</li>
<li>Unit testing</li>
</ul>
</li>
<li><strong>Do a self-review first</strong>
<ul>
<li>Have you checked all extreme cases?</li>
<li>Is your solution KISS?</li>
<li>Is your code self-explanatory?</li>
<li>Check it as if it was written by someone else</li>
<li>Ask yourself the questions you think you are about to be asked…</li>
</ul>
</li>
<li><strong>Keep It Simple Stupid&#8230;</strong></li>
<li><strong>Stick to the requirements</strong>
<ul>
<li>Make sure all aspects of the requirements are filled</li>
<li>Make sure you have tested both trivial and extreme cases</li>
<li>Document all thoughts and limitations in the code</li>
<li>Reference the requirements documents from your code</li>
<li>I18N – make sure the code supports multilingual capability where needed</li>
</ul>
</li>
<li><strong>Documentation</strong>
<ul>
<li>Document your files and your functions</li>
<li>Give informative comments</li>
<li>Explain the logic behind your decisions</li>
<li>If you did something that is not logical or intuitive, explain why</li>
<li>If you learned historical info while learning the code, document it (be creative :)</li>
<li>Follow a standard documentation format</li>
<li>When possible, use known design patterns and document the design pattern you chose</li>
</ul>
</li>
<li><strong>Unit Testing</strong>
<ul>
<li>Make sure your unit test is part of the change</li>
<li>If you can’t automate the test, check-in a manual procedure to run it</li>
<li>Make sure all aspects of the requirements are covered by the tests</li>
<li>Document all the tests you wanted to do but couldn’t</li>
<li>Test the I18N behavior of your code</li>
</ul>
</li>
<li><strong>The Code Review Life Cycle</strong>
<ul>
<li>“Self-review” your code</li>
<li>Schedule a code review</li>
<li>Schedule enough time for both people involved</li>
<li>When possible, schedule for a time during the morning</li>
<li>Split  the review into a few sessions, if needed</li>
<li>Switch your mind to “listener” mode</li>
<li>Write down all comments</li>
<li>After the code review is done, apply the necessary fixes and schedule a second review if needed</li>
<li>Check-in your changes</li>
</ul>
</li>
<li><strong>Code Review Tips</strong>
<ul>
<li>When you program, remember the last code review</li>
<li>If you disagree with the reviewer, invite a 3rd person to review and decide</li>
<li>In special cases, invite special guests to review your code</li>
<li>When change is small/simple/intuitive, do an &#8220;e-review” by mailing your change to the reviewer(s)</li>
<li>When self-reviewing, fix mistakes on the spot&#8230; :)</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.karmona.com/index.php/2009/12/13/code-review-movie/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>High Level Design Review Check-List</title>
		<link>http://blog.karmona.com/index.php/2009/12/12/high-level-design-review-check-list/</link>
		<comments>http://blog.karmona.com/index.php/2009/12/12/high-level-design-review-check-list/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 17:07:54 +0000</pubDate>
		<dc:creator>Moti Karmona &#124; מוטי קרמונה</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.karmona.com/?p=573</guid>
		<description><![CDATA[This is my recommended check-list for high level design review.
***********************************************************************
*** keep it simple and make sure it answers all the requirements ***
***********************************************************************


Reverify your Requirements

Functional specification, use cases and requirements are clear and publicly documented
Technical Requirements
Performance requirements
Security requirements
Resources (CPU, Memory, Storage, IO) consumptions limits
Audit requirements
Out of scope &#8211; What does the component NOT do?  What NOT support?
Future [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.karmona.com/wp-content/uploads/2009/12/dilbert.jpg"><img class="alignleft size-thumbnail wp-image-574" title="Dilbert in a Meeting" src="http://blog.karmona.com/wp-content/uploads/2009/12/dilbert-150x150.jpg" alt="Dilbert in a Design Review Meeting" width="150" height="150" align="left" /></a>This is my recommended check-list for high level design review.</p>
<p>***********************************************************************<br />
<strong>*** keep it simple and make sure it answers all the requirements ***</strong><br />
***********************************************************************<br />
<br/><br/></p>
<ul>
<li>Reverify your Requirements
<ul>
<li>Functional specification, use cases and requirements are clear and publicly documented</li>
<li>Technical Requirements</li>
<li>Performance requirements</li>
<li>Security requirements</li>
<li>Resources (CPU, Memory, Storage, IO) consumptions limits</li>
<li>Audit requirements</li>
<li>Out of scope &#8211; What does the component NOT do?  What NOT support?</li>
<li>Future extendibility of the component (options for future extension, generic features etc.)</li>
</ul>
</li>
<li>High Level Design
<ul>
<li>Main components involved</li>
<li>Main Data flows</li>
<li>Components and sub-systems and how they relate to the component</li>
<li>Which sub-systems does it communicate with (e.g. Relation Façade)</li>
<li>Communication mechanisms (e.g. HTTP, WCF)</li>
<li>Which subsystems it is dependent on (e.g. Database, Gigaspaces) – What are the requirements?</li>
<li>Which sub-systems depend on it (e.g. App.) – What is the expectation?</li>
</ul>
</li>
<li>Architectural Strategy
<ul>
<li>High availability and load balancing</li>
<li>Error detection, fault and recovery</li>
<li>Logging and statistics gathering</li>
<li>Capacity limitation, planning &amp; resource management:
<ul>
<li>Memory consumption and management policies</li>
<li>CPU usage management</li>
<li>IO requirements</li>
<li>Storage requirement</li>
</ul>
</li>
</ul>
</li>
<li>Technical Assumptions
<ul>
<li>Limitations</li>
<li>Compromises
<ul>
<li>What does this design compromise? (Security, high availability, capacity, performance, quality&#8230;)</li>
<li>What are the engineering tradeoffs of this design, and why was the current design chosen?</li>
</ul>
</li>
<li>Risks and weak points</li>
</ul>
</li>
<li>Operation
<ul>
<li>Backward compatibility</li>
<li>Logging and Monitoring</li>
<li>Administration issues</li>
<li>Deployment issues:
<ul>
<li>How to deploy (e.g. can it be part of the regular release package?)</li>
<li>Required downtime?</li>
<li>Deployment risks?</li>
<li>Rollback capability</li>
</ul>
</li>
</ul>
</li>
<li>Testing strategy
<ul>
<li>What to focus on (80/20)</li>
<li>Functional test plan review</li>
<li>Deployment, environments, and setups</li>
<li>Fault and recovery</li>
<li>Load and capacity planning</li>
</ul>
</li>
<li>Execution plan (phases, timeline, milestones, critical path, dependencies etc.)</li>
</ul>
<p>Please comment if you think I  forgot something&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.karmona.com/index.php/2009/12/12/high-level-design-review-check-list/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Chubby Hubby</title>
		<link>http://blog.karmona.com/index.php/2009/08/10/chubby-hubby/</link>
		<comments>http://blog.karmona.com/index.php/2009/08/10/chubby-hubby/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 05:15:41 +0000</pubDate>
		<dc:creator>Moti Karmona &#124; מוטי קרמונה</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Peopleware]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.karmona.com/?p=556</guid>
		<description><![CDATA[
Recently, I have encountered an interesting paper (2006) about Chubby &#8211; Google&#8217;s (Paxos based) distributed lock service.
I was especially amazed by the observations made on the Google engineering capabilities and mindset inside a &#8220;formal&#8221; research publication.
Although one can easily get into a cynical state of mind reading this paper&#8230; I feel that this &#8220;pragmatic view&#8221; which combines [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.karmona.com/wp-content/uploads/2009/08/chubby_hubby.gif"><img class="alignleft size-full wp-image-557" title="Chubby Hubby" src="http://blog.karmona.com/wp-content/uploads/2009/08/chubby_hubby.gif" alt="Chubby Hubby" width="150" height="180" align="left" /></a></p>
<p>Recently, I have encountered an <a title="The Chubby Lock Service for Loosely-Coupled Distributed Systems" href="http://labs.google.com/papers/chubby.html">interesting paper</a> (2006) about Chubby &#8211; Google&#8217;s (<a title="Paxos Made Simple" href="http://research.microsoft.com/en-us/um/people/lamport/pubs/pubs.html#paxos-simple">Paxos</a> based) distributed lock service.<br />
I was especially amazed by the observations made on the Google engineering capabilities and mindset inside a &#8220;formal&#8221; research publication.</p>
<p>Although one can easily get into a cynical state of mind reading this paper&#8230; I feel that this &#8220;pragmatic view&#8221; which combines a deep architectural and algorithmic know-how with keen understanding of the social factor in software development is exactly the key to create legendary software.</p>
<p>Anyway, very well written &#8211; highly recommended reading…</p>
<p>*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***</p>
<p><em>&#8220;Our developers <span style="color: #ff0000;">sometimes do not plan for high availability in the way one would wish</span>. Often their systems start as prototypes with little load and loose availability guarantees; invariably the code has not been specially structured for use with a consensus protocol. As the service matures and gains clients, availability becomes more important; replication and primary election are then added to an existing design.&#8221;</em></p>
<p><em>&#8220;Developers are often <span style="color: #ff0000;">unable to predict how their services will be used in the future</span>, and how use will grow.  A module written by one team may be reused a year later by another team with disastrous results &#8230; <span style="color: #ff0000;">O</span><span style="color: #ff0000;">ther developers may be less aware of the cost of an RPC</span>.&#8221;</em></p>
<p><em>&#8220;<span style="color: #ff0000;">Despite attempts at education</span>, our developers regularly write loops that retry indefinitely when a file is not present, or poll a file by opening it and closing it repeatedly when one might expect they would open the file just once.&#8221;<br />
</em></p>
<p><em>&#8220;<span style="color: #ff0000;">Developers rarely consider availability. We find that our developers rarely think about failure probabilit<span style="color: #ff0000;">ies</span></span><span style="color: #ff0000;">.</span>&#8220;</em></p>
<p><em>&#8220;<span style="color: #ff0000;">Developers also fail to appreciate the difference between a service being up, and that service being available to their applications.</span>&#8220;</em></p>
<p><em>&#8220;Unfortunately, <span style="color: #ff0000;">many developers chose to crash their applications on receiving [a failover] event</span>, thus decreasing the availability of their systems substantially&#8221;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.karmona.com/index.php/2009/08/10/chubby-hubby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Random Rumbling on Technology Triggers</title>
		<link>http://blog.karmona.com/index.php/2009/08/10/random-rumbling-on-technology-triggers/</link>
		<comments>http://blog.karmona.com/index.php/2009/08/10/random-rumbling-on-technology-triggers/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 18:36:18 +0000</pubDate>
		<dc:creator>Moti Karmona &#124; מוטי קרמונה</dc:creator>
				<category><![CDATA[Conspiracy]]></category>
		<category><![CDATA[Disruptive Technology]]></category>

		<guid isPermaLink="false">http://blog.karmona.com/?p=538</guid>
		<description><![CDATA[&#8220;In the future everything will be augmented reality!&#8221;
I might be getting a little too old, visionless, pragmatic or pessimistic for this but I find it very hard to travel to the promised lala land, Gartner&#8217;s calls &#8220;peak of inflated expectations&#8221;.
When I encounter a new &#8220;Technology Triggers&#8221;, I skip right to the &#8220;Trough of Disillusionment&#8221; without [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.karmona.com/wp-content/uploads/2009/08/monopoly-go-to-jail.jpg"><img class="alignleft size-full wp-image-539" title="Monopoly Go to Jail" src="http://blog.karmona.com/wp-content/uploads/2009/08/monopoly-go-to-jail.jpg" alt="Monopoly Go to Jail" width="202" height="116" align="left" /></a><em>&#8220;In the future everything will be augmented reality!&#8221;</em></p>
<p>I might be getting a little too old, visionless, pragmatic or <a title="The Stockdale Paradox (The Pessimistic Developer Paradigm)" href="http://blog.karmona.com/index.php/2007/07/14/the-stockdale-paradox-the-pessimistic-developer-paradigm/">pessimistic</a> for this but I find it very hard to travel to the promised lala land, Gartner&#8217;s <a title="Gartner Hype Cycle " href="http://www.gartner.com/pages/story.php.id.8795.s.8.jsp">calls</a> &#8220;peak of inflated expectations&#8221;.</p>
<p>When I encounter a new &#8220;Technology Triggers&#8221;, I skip right to the &#8220;Trough of Disillusionment&#8221; without really passing through the promising &#8220;peak&#8221;&#8230;</p>
<p>e.g. <a title="Hype Cycle for Emerging Technologies | Gartner, 2009" href="http://www.gartner.com/DisplayDocument?id=1085912">Hype Cycle for Emerging Technologies</a> | Gartner, 2009 &#8211; Am I missing something here?</p>
<p><a href="http://blog.karmona.com/wp-content/uploads/2009/08/gartner-emerging-technologies-hype-cycle-2009-1.png"><img class="alignleft size-full wp-image-543" title="Hype Cycle for Emerging Technologies | Gartner, 2009" src="http://blog.karmona.com/wp-content/uploads/2009/08/gartner-emerging-technologies-hype-cycle-2009-1.png" alt="Hype Cycle for Emerging Technologies | Gartner, 2009" width="552" height="451" /></a></p>
<p>p.s. I do think Technology Triggers are very good for SEO and I will update you if it will work&#8230; ;)</p>
<p>*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***<br />
<em> Human Augmentation, 3D Flat Panel Displays, Quantum Computing, Context Delivery Architecture, Video Search, Behavioral Economics, Mobile Robots, Surface Computers, Augmented Re4ality, 3D Printing, Internet TV, Wireless Power, Cloud computing, E-Book Readers, Social Software Suites, Micorblogging, Green IT, Video Telepresence, Mesh Networks, Online Video, Home Health Monitoring, Public Virtual Worlds, RFID, Social Network Analysis, Web 2.0, Idea Management, Tablet PC, Wikis, Corporate Blogging, SOA, Location Aware Applications, Speech Recognition etc.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.karmona.com/index.php/2009/08/10/random-rumbling-on-technology-triggers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gemba Kaizen</title>
		<link>http://blog.karmona.com/index.php/2009/06/23/gemba-kaizen/</link>
		<comments>http://blog.karmona.com/index.php/2009/06/23/gemba-kaizen/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 19:11:29 +0000</pubDate>
		<dc:creator>Moti Karmona &#124; מוטי קרמונה</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://blog.karmona.com/?p=495</guid>
		<description><![CDATA[Preview
* Gemba (現場) in Japanese means &#8220;the actual place&#8221; or &#8220;the real place&#8221;
* Kaizen (改善) in Japanese means &#8220;improvement&#8221;
In business, Gemba refers to the place where value is created and the general notion is that the best improvement ideas will come simply from going to the Gemba (&#8216;bottom-up&#8217; vs. &#8216;top-down&#8217;)
The &#8216;Gemba Walk&#8217; is an activity [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.karmona.com/wp-content/uploads/2009/06/kaizen.jpg"><img class="alignleft size-full wp-image-496" title="Kaizen" src="http://blog.karmona.com/wp-content/uploads/2009/06/kaizen.jpg" alt="Kaizen" width="116" height="205" align="left" /></a><strong>Preview</strong></p>
<p>* Gemba (現場) in Japanese means &#8220;the actual place&#8221; or &#8220;the real place&#8221;<br />
* Kaizen (改善) in Japanese means &#8220;improvement&#8221;</p>
<p>In business, Gemba refers to the place where value is created and the general notion is that the best improvement ideas will come simply from going to the Gemba (&#8216;bottom-up&#8217; vs. &#8216;top-down&#8217;)</p>
<p>The &#8216;Gemba Walk&#8217; is an activity that takes management to the front lines to look for waste and opportunities a.k.a. to practice Gemba Kaizen which is similar to the &#8220;western&#8221; concept of MBWA (Management by Walking Around)</p>
<p><strong>My view</strong></p>
<p>As I have posted before <em>&#8220;To master (/control) a software project you must be able to breathe the project – inhale the chaotic butterfly movements around you and exhale with the needed adjustments…&#8221; (<a title="The Software Chaos" href="http://blog.karmona.com/index.php/2008/02/22/the-software-chaos/">The Software Chaos</a> | Feb. 2008)</em></p>
<p>Although we wish it will be different… the best optimizations are &#8220;simply&#8221; very deep into the details and I have found out that a daily practice of &#8216;Gemba Walk&#8217; can be very helpful to your project &#8220;well-being&#8221; (and I must admit that it took me several years to find out that my weird walk actually had a Japanese name/theory ;)</p>
<p><strong>&#8220;less important than a gnat&#8217;s toot in a hurricane&#8221; :)</strong><br />
<a href="http://blog.karmona.com/wp-content/uploads/2009/06/38519.strip.sunday.gif"><img class="alignleft size-full wp-image-497" title="Gemba Walk with Dillbert" src="http://blog.karmona.com/wp-content/uploads/2009/06/38519.strip.sunday.gif" alt="Gemba Walk with Dillbert" width="448" height="201" /></a></p>
<p><strong>Seven tips for an healthy &#8216;Gemba Walk&#8217; / MBWA</strong></p>
<ol>
<li>Visit everyone</li>
<li>Go alone &#8211; Daily standup meetings aren&#8217;t enough</li>
<li>Don&#8217;t bypass middle management e.g. don&#8217;t change priorities, requirements or design</li>
<li>Observe, ask and LISTEN</li>
<li>Be genuine, have fun and strive to catch your engineers doing something right and not something wrong (you are not the &#8220;fun-police&#8221; ;)</li>
<li>Share your dreams and vision</li>
<li>Don&#8217;t &#8220;disturb&#8221; the Gemba – Timing is everything…</li>
</ol>
<p><strong>What next?</strong></p>
<ol>
<li>Correlate the Gemba / &#8216;bottom-up&#8217; observations with your &#8216;top-down&#8217; understanding</li>
<li>Identify waste, risks and opportunities</li>
<li>Kaizen – Improve and optimize accordingly</li>
</ol>
<p><strong>Good Luck!</strong><br />
<br/><br/><br />
________________________________________________<br />
Random News from BBC &#8211; <a title="Gauguin 'cut off Van Gogh's ear'" href="http://news.bbc.co.uk/2/hi/entertainment/arts_and_culture/8033650.stm">Gauguin &#8216;cut off Van Gogh&#8217;s ear&#8217;</a></p>
<p><em>&#8220;Vincent van Gogh did not cut off his own ear but lost it in a fight with fellow artist Paul Gauguin in a row outside a brothel&#8221;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.karmona.com/index.php/2009/06/23/gemba-kaizen/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Scrum and Your Mother-In-Law</title>
		<link>http://blog.karmona.com/index.php/2009/06/22/scrum-and-your-mother-in-law/</link>
		<comments>http://blog.karmona.com/index.php/2009/06/22/scrum-and-your-mother-in-law/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 17:22:09 +0000</pubDate>
		<dc:creator>Moti Karmona &#124; מוטי קרמונה</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Software Management]]></category>

		<guid isPermaLink="false">http://blog.karmona.com/?p=470</guid>
		<description><![CDATA[Ken Schwaber was quoted giving this mind-blowing Scrum / mother-in-law allegory:
 &#8220;imagine that your mother-in-law believed her daughter could do better&#8230; and then imagine that she moved in with you&#8230; that’s what Scrum is like&#8221;
Think about it&#8230;
Assuming we shouldn&#8217;t aim to completely avoid all errors in software development (since this is an inherent part of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.karmona.com/wp-content/uploads/2009/06/flintstone-mother-in-law.jpg"><img class="alignleft size-thumbnail wp-image-478" title="Flintstone Mother-In-Law" src="http://blog.karmona.com/wp-content/uploads/2009/06/flintstone-mother-in-law2-150x150.jpg" alt="Flintstone Mother-In-Law" width="150" height="150" align="left" /></a>Ken Schwaber was quoted giving this mind-blowing Scrum / mother-in-law allegory:</p>
<p><span style="color: #ff0000;"> &#8220;imagine that your mother-in-law believed her daughter could do better&#8230; and then imagine that she moved in with you&#8230; that’s what Scrum is like&#8221;</span></p>
<p>Think about it&#8230;</p>
<p>Assuming we shouldn&#8217;t aim to <span style="text-decoration: underline;">completely</span> avoid <span style="text-decoration: underline;">all</span> errors in software development (since this is an inherent part of any human creation) but rather to spot them as quickly as possible before they become <span style="text-decoration: underline;">real</span> problems.</p>
<p>And&#8230; since <a title="Scrum by Natural Selection" href="http://blog.karmona.com/index.php/2007/07/26/scrum-by-natural-selection/">Scrum</a> is indeed a very good &#8220;tool&#8221; to bring the problems in-your-face without any mercy in a daily manner.</p>
<p>So without even getting into the continuous improvement possibilities with mother-in-laws, I really liked the Mother-In-Law allegory :)</p>
<p>By the way, with great anticipation I have proudly joined the Haiku contest @ the famous <a title="The Ktorium" href="http://www.ktorium.com/blog/2009/06/serving/">Ktorium</a> &#8211; Wish me luck! :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.karmona.com/index.php/2009/06/22/scrum-and-your-mother-in-law/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Just upgraded to WordPress 2.8 – Baker</title>
		<link>http://blog.karmona.com/index.php/2009/06/14/wordpress-28-baker-upgrade/</link>
		<comments>http://blog.karmona.com/index.php/2009/06/14/wordpress-28-baker-upgrade/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 19:33:48 +0000</pubDate>
		<dc:creator>Moti Karmona &#124; מוטי קרמונה</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Simplicity]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.karmona.com/?p=459</guid>
		<description><![CDATA[I have just upgraded to WordPress 2.8 in less than 3 minutes&#8230;
WordPress 2.8 Highlights
* Speed!!!
* Theme Browser and Installer
* Ability to add Custom Headers
* New drag-and-drop widgets admin interface and new Widgets API
* New ways to customize dashboard widgets
* Syntax highlighting and function lookup built into plugin and theme editors
* Configurable Views on Management Pages
* [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.karmona.com/wp-content/uploads/2009/06/chet-baker.jpg"><img class="alignleft size-thumbnail wp-image-464" title="Chet Baker" src="http://blog.karmona.com/wp-content/uploads/2009/06/chet-baker-150x150.jpg" alt="Chet Baker" width="150" height="150" align="left" /></a>I have just <a title="Just upgraded to WordPress 2.7 – Coltrane" href="http://blog.karmona.com/index.php/2008/12/11/wordpress-27-coltrane-upgrade/">upgraded</a> to <a title="WordPress 2.8" href="http://wordpress.org/development/2009/06/wordpress-28/">WordPress 2.8</a> in less than 3 minutes&#8230;</p>
<p><strong>WordPress 2.8 Highlights</strong></p>
<p>* Speed!!!<br />
* Theme Browser and Installer<br />
* Ability to add Custom Headers<br />
* New drag-and-drop widgets admin interface and new Widgets API<br />
* New ways to customize dashboard widgets<br />
* Syntax highlighting and function lookup built into plugin and theme editors<br />
* Configurable Views on Management Pages<br />
* Faster Loading Admin Pages</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.karmona.com/index.php/2009/06/14/wordpress-28-baker-upgrade/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
