<?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>Steve Klinkner&#039;s blog &#187; Software</title>
	<atom:link href="http://plateofshrimp.com/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://plateofshrimp.com</link>
	<description>plateofshrimp.com</description>
	<lastBuildDate>Mon, 25 Apr 2016 16:29:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Thrashing The Delivery Truck</title>
		<link>http://plateofshrimp.com/2012/01/thrashing-the-delivery-truck/</link>
		<comments>http://plateofshrimp.com/2012/01/thrashing-the-delivery-truck/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 17:55:48 +0000</pubDate>
		<dc:creator>stevek</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://plateofshrimp.com/2012/01/thrashing-the-delivery-truck/</guid>
		<description><![CDATA[I’ve previously compared software estimation to variations in the time required to drive to work. Dispatching delivery trucks is my mental model for comparison to changes in project direction.&#160; This can help others to understand the impact when changes happen &#8230; <a href="http://plateofshrimp.com/2012/01/thrashing-the-delivery-truck/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p align="left"><a href="http://plateofshrimp.com/wp-content/uploads/2012/01/truck2.jpg"><img style="background-image: none; border-right-width: 0px; margin: 0px 0px 20px 20px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Random Truck Walk" border="0" alt="Random Truck Walk" align="right" src="http://plateofshrimp.com/wp-content/uploads/2012/01/truck2_thumb.jpg" width="184" height="173"></a></p>
<p align="left">I’ve previously compared software estimation to variations in the time required to <a href="http://www.plateofshrimp.com/2011/09/scoping-for-90/">drive to work</a>.</p>
<p>Dispatching delivery trucks is my mental model for comparison to changes in project direction.&nbsp; This can help others to understand the impact when changes happen too frequently.</p>
<h2>A Random Walk</h2>
<p>Using an example from the <a href="http://maps.google.com/maps?q=San+Francisco+Bay+Area,+CA&amp;hl=en&amp;sll=38.581572,-121.4944&amp;sspn=0.207996,0.267105&amp;oq=san+fran&amp;vpsrc=0&amp;hnear=San+Francisco,+California&amp;t=h&amp;z=12">Bay Area</a>, suppose I have a delivery truck stationed in <a href="http://maps.google.com/maps?q=san+francisco,+ca&amp;hl=en&amp;sll=37.0625,-95.677068&amp;sspn=53.345014,68.378906&amp;vpsrc=0&amp;hnear=San+Francisco,+California&amp;t=h&amp;z=12">San Francisco</a>.</p>
<p><a href="http://plateofshrimp.com/wp-content/uploads/2012/01/driving.jpg"><img style="background-image: none; border-right-width: 0px; margin: 0px 20px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="driving" border="0" alt="driving" align="left" src="http://plateofshrimp.com/wp-content/uploads/2012/01/driving_thumb.jpg" width="184" height="155"></a>I call up the driver and ask him to make a delivery in <a href="http://maps.google.com/maps?q=Sacramento,+CA&amp;hl=en&amp;sll=37.77493,-122.419416&amp;sspn=0.210311,0.267105&amp;oq=sacra&amp;vpsrc=0&amp;hnear=Sacramento,+California&amp;t=h&amp;z=12">Sacramento</a>.&nbsp; For reference, <a href="http://maps.google.com/">Google</a> tells me it takes an hour and a half or so to drive from San Francisco to Sacramento.</p>
<p>Suppose that, 30 minutes into the trip, I call my driver and tell him to make the delivery to <a href="http://maps.google.com/maps?q=san+jose,+ca&amp;hl=en&amp;sll=37.962146,-122.345526&amp;sspn=0.052445,0.066776&amp;vpsrc=0&amp;hnear=San+Jose,+Santa+Clara,+California&amp;t=h&amp;z=11">San Jose</a> instead.&nbsp; He’d likely be near <a href="http://maps.google.com/maps?q=san+pablo,+ca&amp;hl=en&amp;sll=37.865885,-122.35636&amp;sspn=0.210052,0.267105&amp;vpsrc=0&amp;hnear=San+Pablo,+Contra+Costa,+California&amp;t=h&amp;z=14">San Pablo</a>, only a third of the way to Sacramento.&nbsp; </p>
<p>The driver dutifully turns around, and starts the one hour trip to San Jose.</p>
<p align="left">After another half an hour, I call him up and instruct him to drive to <a href="http://maps.google.com/maps?q=tracy,+ca&amp;hl=en&amp;sll=37.84364,-122.242215&amp;sspn=0.420232,0.53421&amp;vpsrc=0&amp;hnear=Tracy,+San+Joaquin,+California&amp;t=h&amp;z=13">Tracy</a>.&nbsp; From somewhere near <a href="http://maps.google.com/maps?q=san+leandro,+ca&amp;hl=en&amp;sll=37.716725,-121.790645&amp;sspn=0.841904,1.06842&amp;vpsrc=0&amp;hnear=San+Leandro,+Alameda,+California&amp;t=h&amp;z=13">San Leandro</a> (and short of reaching San Jose) he would start the one hour drive to Tracy.</p>
<p align="left">And so on.</p>
<h2 align="left">What Did You Accomplish Today?</h2>
<p align="left">After a day of this, I recall my driver back to the home office and inquire</p>
<blockquote><p align="left">“How did it go?&nbsp; How many deliveries did you make today?”</p>
</blockquote>
<p>Exasperated, my driver informs me that, in spite of driving hundreds of miles, he failed to complete a single delivery.</p>
<p>(As a manager, I then express shock and outrage, and we proceed to have a conversation in which perhaps I learn the error of my ways.)</p>
<h2>Thrashing</h2>
<p>In computer science <a href="http://en.wikipedia.org/wiki/Thrashing_%28computer_science%29">thrashing</a> refers to situations in which the resources of a computer are largely (or wholly) consumed by forms of overhead, with the result of severely reduced productive output.</p>
<p>The concept can apply to other activities, including projects.&nbsp; Changes in direction (whether literal or figurative), can happen too frequently with the result that productivity is impacted (and in the worst case, entirely eliminated).</p>
<p>Make sure the driver has a chance to drop off the package.</p>
]]></content:encoded>
			<wfw:commentRss>http://plateofshrimp.com/2012/01/thrashing-the-delivery-truck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scoping for 90%</title>
		<link>http://plateofshrimp.com/2011/09/scoping-for-90/</link>
		<comments>http://plateofshrimp.com/2011/09/scoping-for-90/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 05:30:32 +0000</pubDate>
		<dc:creator>stevek</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Zynga]]></category>

		<guid isPermaLink="false">http://plateofshrimp.com/2011/09/scoping-for-90/</guid>
		<description><![CDATA[I’ve been working at Zynga since early 2010.&#160; One of the challenges of running an online game (like Café World, on which I’ve spent most of my time) involves releasing new features on a regular, predictable cadence. As a result, &#8230; <a href="http://plateofshrimp.com/2011/09/scoping-for-90/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://plateofshrimp.com/wp-content/uploads/2011/09/90-percent.png"><img style="border-right-width: 0px; margin: 0px 0px 20px 20px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="90 percent" border="0" alt="90 percent" align="right" src="http://plateofshrimp.com/wp-content/uploads/2011/09/90-percent_thumb.png" width="184" height="123"></a>I’ve been working at <a href="http://www.zynga.com/">Zynga</a> since early 2010.&nbsp; </p>
<p>One of the challenges of running an online game (like <a href="http://apps.facebook.com/cafeworld/">Café World</a>, on which I’ve spent most of my time) involves releasing new features on a regular, predictable cadence.</p>
<p>As a result, our team has devoted resources to collecting metrics on feature development and release timing.&nbsp; We use that data as a feedback mechanism to adjust our scoping and scheduling guidelines.</p>
<p>The approach outlined below describes a process for constructing schedules with relatively high confidence.&nbsp; It also gives a statistical foundation for justifying “padding” which might otherwise raise the eyebrows of skeptical managers.&nbsp; </p>
<h2>Driving to Work</h2>
<p><a href="http://plateofshrimp.com/wp-content/uploads/2011/09/driving-to-work.png"><img style="background-image: none; border-right-width: 0px; margin: 0px 20px 20px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="driving-to-work" border="0" alt="driving-to-work" align="left" src="http://plateofshrimp.com/wp-content/uploads/2011/09/driving-to-work_thumb.png" width="184" height="141"></a>To the left is a <a href="http://en.wikipedia.org/wiki/Histogram">histogram</a> of the time required to drive 18 miles to work, over many dozens of trips.&nbsp; The data is not perfect, but roughly models a route that I drove frequently – a mix of highway and local roads.</p>
<p>Most days, the trip took about the same amount of time, around 30 minutes.&nbsp; </p>
<p>An occasional traffic accident would hold things up, maybe requiring 45 minutes.&nbsp; Sometimes bad weather would slow things down; an accident and bad weather together would be even worse – requiring perhaps an hour.</p>
<p>Rarely, with unusually clear traffic and cooperative traffic lights, I could race home in only 20 minutes.&nbsp; But never faster.</p>
<h2>Schedules Are Subjective</h2>
<p>If you asked me <em>“Steve, how long does it take you to drive to work?”</em> I could sensibly answer</p>
<blockquote><p>“About 25-35 minutes”</p>
</blockquote>
<p>reflecting the average, and most common trip times.&nbsp; And about half the time, I’d be right.</p>
<p><a href="http://plateofshrimp.com/wp-content/uploads/2011/09/traffic.jpg"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 20px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="traffic" border="0" alt="Traffic" align="right" src="http://plateofshrimp.com/wp-content/uploads/2011/09/traffic_thumb.jpg" width="184" height="105"></a>However if I had a 9am meeting with the CEO, you could be certain that I would leave at 8am or earlier, in order to have a nearly 100% chance of being there on time.&nbsp; </p>
<p>If you wanted to pin me down to something certain, my answer would be something closer to </p>
<blockquote><p>“An hour or less”</p>
</blockquote>
<p>When the stakes are high, a schedule with 50% confidence just doesn’t cut it.</p>
<h2>Variability In Driving</h2>
<p>Relative to software development, driving to work is a technically non-complicated task (apologies to all you professional drivers out there).</p>
<p>Driving to work is easily understood, and easily repeatable.&nbsp; In my example, the route is executed each time by the same person, in the same way.&nbsp; Only the environmental conditions vary, yet they substantially impact the actual execution.</p>
<p>In spite of the many constants, we observe a remarkable <strong>3:1 variation in performance</strong> (20 to 60 minutes).&nbsp; </p>
<p>That is fairly surprising for this non-complicated task.</p>
<h2>Tossing Coins</h2>
<p><a href="http://plateofshrimp.com/wp-content/uploads/2011/09/coin-tosses.png"><img style="background-image: none; border-right-width: 0px; margin: 0px 20px 20px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="coin-tosses" border="0" alt="coin-tosses" align="left" src="http://plateofshrimp.com/wp-content/uploads/2011/09/coin-tosses_thumb.png" width="184" height="137"></a>Imagine you are constructing a schedule comprised of 10 tasks which must be executed in sequence.&nbsp; Each has an independent 50% chance of requiring 1 day to execute, and a 50% chance to require 2 days to execute.</p>
<p>Clearly the project will require 10 to 20 days to complete, but what would be a safe estimate?&nbsp; Would the midpoint of 15 days be a reasonable schedule commitment?</p>
<p><a href="http://plateofshrimp.com/wp-content/uploads/2011/09/coins-annotated.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 20px 20px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="coins-annotated" border="0" alt="coins-annotated" align="right" src="http://plateofshrimp.com/wp-content/uploads/2011/09/coins-annotated_thumb.png" width="184" height="116"></a>This admittedly simplistic example can be modeled as a series of <a href="http://en.wikipedia.org/wiki/Coin_toss">coin tosses</a>, with a probability distribution as shown in the figures above and to the right.</p>
<p>Because the distribution is symmetric, there is only a 50-50 chance that the tasks will be completed in 15 or fewer days.&nbsp; </p>
<p>Scheduling for 15 days is not a winning strategy for a high-confidence commitment.</p>
<p>In the figure to the above right, the same distribution is shown with the rightmost bins annotated with the likelihood that the completion time will be fewer than the indicated number of days.</p>
<p align="left"><a href="http://plateofshrimp.com/wp-content/uploads/2011/09/coin-tosses-90.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 20px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="coin-tosses-90" border="0" alt="coin-tosses-90" align="right" src="http://plateofshrimp.com/wp-content/uploads/2011/09/coin-tosses-90_thumb.png" width="184" height="137"></a>We can use this information to construct a schedule with relatively high confidence.</p>
<p align="left">The figure to the right shows a bounding box around 90% of the schedule possibilities.&nbsp; </p>
<p align="left">A schedule estimate between 17 and 18 days will be too short only 1 in 10 times.</p>
<h2>Statistical Variation is the Norm</h2>
<p>Even if our estimates are perfect (and they are not), environmental factors intrude.&nbsp; The network or VPN can be down, source code control can be broken, or the build might not work.&nbsp; A colleague may have gifted you with an unusually complicated <a href="http://en.wikipedia.org/wiki/Merge_%28revision_control%29">branch merge</a>.</p>
<p>These things happen all the time, yet we often pretend they do not.&nbsp; Software estimation, even when done well, is a highly <a href="http://en.wikipedia.org/wiki/Stochastic">stochastic</a> process.</p>
<h2>Scoping for 90%</h2>
<p>
<p>I encourage our teams to scope and schedule for a 90% on time rate, since the consequences of schedule misses are fairly severe.</p>
<p>When iterating over a large number of feature iterations of similar size and complexity, it is possible to accumulate statistical evidence to help drive this process in a compelling manner.</p>
<p>For tasks which are highly novel, unusually complicated, or having strong external dependencies, variances are naturally much higher and statistical categorization can remain elusive.</p>
<p>But it’s always worth tracking the original estimates, the actual execution, and their historical variations.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://plateofshrimp.com/2011/09/scoping-for-90/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Quadratic Songs and Books</title>
		<link>http://plateofshrimp.com/2011/08/quadratic-songs-and-books/</link>
		<comments>http://plateofshrimp.com/2011/08/quadratic-songs-and-books/#comments</comments>
		<pubDate>Sat, 27 Aug 2011 05:52:30 +0000</pubDate>
		<dc:creator>stevek</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://plateofshrimp.com/2011/08/quadratic-songs-and-books/</guid>
		<description><![CDATA[My son is 2 1/2 years old, and loves stories.&#160; His favorite book at the moment is A Fly Went By. In the book, a boy sits lazily by the lake and observes a fly passing.&#160; The fly in turn &#8230; <a href="http://plateofshrimp.com/2011/08/quadratic-songs-and-books/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p align="left"><a href="http://plateofshrimp.com/wp-content/uploads/2011/08/quad-balls.png"><img style="background-image: none; border-right-width: 0px; margin: 0px 0px 30px 30px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="quad-balls" border="0" alt="quad-balls" align="right" src="http://plateofshrimp.com/wp-content/uploads/2011/08/quad-balls_thumb.png" width="184" height="184"></a>My son is 2 1/2 years old, and loves stories.&nbsp; His favorite book at the moment is <a href="http://www.amazon.com/Fly-Went-Mike-McClintock/dp/0394800036">A Fly Went By</a>.</p>
<p align="left">In the book, a boy sits lazily by the lake and observes a fly passing.&nbsp; The fly in turn is pursued by a frog, who is in turn chased by a cat, and so on.</p>
<p align="left">Each animal introduced is pursued by yet another, and a pattern emerges in the story.&nbsp; For each new animal</p>
<ul>
<li>
<div align="left">The animal is introduced</div>
<li>
<div align="left">All the prior animals are again enumerated </div>
</li>
</ul>
<p align="left">In this manner, following the introduction of the dog, the story goes:</p>
<blockquote><p>The fly ran away in fear of the frog<br />who ran from the cat, who ran from the dog …</p>
</blockquote>
<h2 align="left">Cumulative Stories</h2>
<p align="left">This style in song form is called <a href="http://en.wikipedia.org/wiki/Cumulative_song">cumulative</a>, and other examples include the familiar<a href="http://en.wikipedia.org/wiki/The_Twelve_Days_of_Christmas_%28song%29"> Twelve Days of Christmas</a>, for which on day three we have</p>
<blockquote><p>On the third day of Christmas, my true love gave to me&#8230;<br />3 French Hens<br />2 Turtle Doves<br />And a Partridge in a Pear Tree. </p>
</blockquote>
<p>Yet another similar example is the song <a href="http://en.wikipedia.org/wiki/There_Was_an_Old_Lady_Who_Swallowed_a_Fly">There Was And Old Lady Who Swallowed a Fly</a>.&nbsp; After swallowing a bird, spider and fly, the song goes</p>
<blockquote><p>There was an old lady who swallowed a bird.<br />How absurd to swallow a bird.<br />She swallowed the bird to catch the spider,<br />that wiggled and wiggled and tickled inside her.<br />She swallowed the spider to catch the fly.<br />I don&#8217;t know why she swallowed the fly.<br />I guess she&#8217;ll die. </p>
</blockquote>
<p>Each has a similar pattern.</p>
<h2 align="left">Quadratic Behavior</h2>
<p align="left">With some amusement one evening while reading <a href="http://www.amazon.com/Fly-Went-Mike-McClintock/dp/0394800036">A Fly Went By</a>, I realized that this style exhibits <a href="http://en.wikipedia.org/wiki/Quadratic">quadratic</a> behavior.&nbsp; That is, the length of the song/story increases with the <a href="http://en.wikipedia.org/wiki/Square_%28algebra%29">square</a> of the number of actors/stanzas.&nbsp; </p>
<p align="left">This is evident due to the number of actors/stanzas enumerated in each of the N segments in sequence:</p>
<blockquote><p>1<br />2<br />3<br />&#8230;<br />N</p>
</blockquote>
<p align="left">Arranged with an equivalent number of objects (dots, for example) on each line, the sequence forms a half-triangle pattern, as pictured at the top of this article.</p>
<p align="left">If you accumulate all the sizes of all the segments, we have the numerical series</p>
<blockquote><p align="left">1 + 2 + 3 + … + N&nbsp; =&nbsp; N (N+1) / 2</p>
</blockquote>
<p align="left">which, for large N, is dominated by the term N<sup>2</sup>.&nbsp; In computer science, an accumulation like this is frequently an indication of non-ideal algorithm design.</p>
<h2 align="left">What’s The Bottom Line?</h2>
<p align="left">In summary, if you double the number of actors / stanzas, the resulting book / song will be not twice, but <u>four</u> times as long.&nbsp; “24 days of Christmas” would be an excruciating <em><strong>4 times</strong></em> as tedious to listen to, relative to the (already tedious) 12 days.</p>
<p align="left">It isn’t very surprising, then, that these songs and books generally tend to call it quits after 8-12 segments.</p>
<p>In the future, my interview questions may include children’s books.</p>
]]></content:encoded>
			<wfw:commentRss>http://plateofshrimp.com/2011/08/quadratic-songs-and-books/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joel On Software</title>
		<link>http://plateofshrimp.com/2011/05/joel-on-software/</link>
		<comments>http://plateofshrimp.com/2011/05/joel-on-software/#comments</comments>
		<pubDate>Fri, 06 May 2011 17:45:08 +0000</pubDate>
		<dc:creator>stevek</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://plateofshrimp.com/2011/05/joel-on-software/</guid>
		<description><![CDATA[After a bit of a delay, I’ve got another book to recommend. Joel Spolsky has kept a popular blog in the past decade, archived on his web site and in several books including Joel On Software. Joel borrows ideas from &#8230; <a href="http://plateofshrimp.com/2011/05/joel-on-software/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://plateofshrimp.com/wp-content/uploads/2011/05/joel-on.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 20px 20px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="joel-on" border="0" alt="joel-on" align="right" src="http://plateofshrimp.com/wp-content/uploads/2011/05/joel-on_thumb.jpg" width="122" height="184"></a></p>
<p>After a bit of a delay, I’ve got <a href="http://plateofshrimp.com/2011/02/three-good-books/">another book to recommend</a>.</p>
<p>Joel Spolsky has kept a <a href="http://www.joelonsoftware.com/">popular blog</a> in the past decade, archived on his web site and in several books including <a href="http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898/ref=sr_1_1?ie=UTF8&amp;qid=1295925619&amp;sr=8-1">Joel On Software</a>.</p>
<p>Joel borrows ideas from sources like <a href="http://plateofshrimp.com/2011/02/peopleware/">Peopleware</a> and <a href="http://plateofshrimp.com/2011/03/the-mythical-man-month/">Mythical Man Month</a>, as well as his experiences developing software for several companies including his own.&nbsp; He’s a thought-provoking and entertaining writer, making him an easy and worthwhile read.</p>
<h2>A Few Sections</h2>
<p>I have a few sections to recommend, if you’re short on time</p>
<ul>
<li>Guerilla Interviewing
<li>Painless Functional Specifications
<li>Painless Software Schedules
<li>Get Crash Reports From Users – Automatically!
<li>Human Task Switches Considered Harmful
<li>Getting Things Done When You’re Only A Grunt</li>
</ul>
<p>But the book is sprinkled with gems.</p>
<h2>Summary</h2>
<p>A few caveats.&nbsp; I don’t always agree with Joel, but generally find his writing worth reading.&nbsp; As with the <a href="http://plateofshrimp.com/2011/02/three-good-books/">other books I’ve mentioned</a>, there is some dated material (ten years later, <a href="http://en.wikipedia.org/wiki/Dot-com_bubble">dot com</a> references are sounding somewhat quaint to me).&nbsp; Last, there’s quite a bit of material focused on Microsoft technologies – a reflection of Joel’s background.</p>
<p>Highly recommended.</p>
]]></content:encoded>
			<wfw:commentRss>http://plateofshrimp.com/2011/05/joel-on-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Mythical Man Month</title>
		<link>http://plateofshrimp.com/2011/03/the-mythical-man-month/</link>
		<comments>http://plateofshrimp.com/2011/03/the-mythical-man-month/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 16:53:27 +0000</pubDate>
		<dc:creator>stevek</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://plateofshrimp.com/2011/03/the-mythical-man-month/</guid>
		<description><![CDATA[The Mythical Man Month is another of my favorite books on software and team productivity (this wikipedia page briefly covers the key ideas). The Mythical Man Month is a classic book which has profoundly affected thinking about software development processes.&#160; &#8230; <a href="http://plateofshrimp.com/2011/03/the-mythical-man-month/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://plateofshrimp.com/wp-content/uploads/2011/03/mythical.jpg"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 20px 20px; display: inline; border-top: 0px; border-right: 0px" title="Mythical Man Month" border="0" alt="Mythical Man Month" align="right" src="http://plateofshrimp.com/wp-content/uploads/2011/03/mythical_thumb.jpg" width="124" height="186"></a> The <a href="http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=sr_1_1?ie=UTF8&amp;qid=1297786440&amp;sr=8-1">Mythical Man Month</a> is another of <a href="http://plateofshrimp.com/2011/02/three-good-books/">my favorite books</a> on software and team productivity (this <a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month">wikipedia page</a> briefly covers the key ideas).</p>
<p>The Mythical Man Month is a classic book which has profoundly affected thinking about software development processes.&nbsp; Written by <a href="http://en.wikipedia.org/wiki/Fred_Brooks">Fred Brooks</a>, it is based on his management of the IBM <a href="http://en.wikipedia.org/wiki/System/360">System 360</a> series of computers.&nbsp; This was a <em>large</em> software project (<u>hundreds</u> of developers), and some of his observations are most applicable to projects which are large, or of long duration.</p>
<h2>The Mythical Month</h2>
<p>The <em>mythical man month</em> is one of the key concepts in the book: progress on a software project will not scale linearly with the staff count, and may in some cases may have an inverse relation (adding people to a late project can cause it to fall further behind).</p>
<p>Brooks doesn’t simply toss this out as a hypothesis; he backs it up with analysis and examples.</p>
<h2>Task Partitioning</h2>
<p>Some of the ideas he introduces are gems for their concise and memorable nature.&nbsp; Regarding the impact of intercommunication on the mythical man month:</p>
<blockquote><p>Men and months are only interchangeable commodities only when a task can be partitioned among many workers <u>with no communication between them</u>. This is true of reaping wheat or picking cotton; it is not even approximately true of systems programming.</p>
</blockquote>
<p>and this classic observation on the sequential nature of certain tasks:</p>
<blockquote><p>When a task cannot be partitioned because of sequential constraints, the application of more effort has no effect on the schedule.&nbsp; The bearing of a child takes nine months, no matter how many women are assigned.</p>
</blockquote>
<h2>Runny Omelets</h2>
<p>One of my favorites is this analogy on the sense of urgency being independent of the actual time required:</p>
<blockquote><p>Observe that for the programmer, as for the chef, the urgency of the patron may govern the scheduled completion of the task, but it cannot govern the actual completion.&nbsp; An omelet, promised in two minutes, may appear to be progressing nicely.&nbsp; But when it has not set in two minutes, the customer has two choices – wait or eat it raw […]</p>
<p>The cook has another choice; he can turn up the heat.&nbsp; The result is often an omelet that nothing can save – burned in one part, raw in another.</p>
</blockquote>
<p>(That is, don’t be surprised by the result if you don’t know much about cooking and impose unreasonable demands on the chef.)</p>
<h2>Summary</h2>
<p>Some caveats.&nbsp; The book has a relative focus on observations from large software projects.&nbsp; Some of the core ideas may not apply directly to your Web-2.0-rapid-prototyping-team-of-3-people.&nbsp; The technological references are, of course, often dated – the book was originally published in the in mid-1970s.&nbsp; The book has an academic feel to it (heavier on deep analysis than lightweight advice).</p>
<p>However the essentials remain relevant three decades later, and I highly recommend the book.</p>
]]></content:encoded>
			<wfw:commentRss>http://plateofshrimp.com/2011/03/the-mythical-man-month/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Peopleware</title>
		<link>http://plateofshrimp.com/2011/02/peopleware/</link>
		<comments>http://plateofshrimp.com/2011/02/peopleware/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 16:11:48 +0000</pubDate>
		<dc:creator>stevek</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Zynga]]></category>

		<guid isPermaLink="false">http://plateofshrimp.com/2011/02/peopleware/</guid>
		<description><![CDATA[I recently wrote about several of my favorite books on software and team productivity. Peopleware is a classic book on team building, productive and “jelled” teams, individual and team productivity, and work place environment. It is thought-provoking and should be &#8230; <a href="http://plateofshrimp.com/2011/02/peopleware/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://plateofshrimp.com/wp-content/uploads/2011/02/51MlUgcSICL.jpg"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 20px 20px; display: inline; border-top: 0px; border-right: 0px" title="Peopleware" border="0" alt="Peopleware" align="right" src="http://plateofshrimp.com/wp-content/uploads/2011/02/51MlUgcSICL_thumb.jpg" width="124" height="184"></a> I recently wrote about <a href="http://plateofshrimp.com/2011/02/three-good-books/">several of my favorite books</a> on software and team productivity.</p>
<p><a href="http://www.amazon.com/Peopleware-Productive-Projects-Teams-Second/dp/0932633439/ref=sr_1_1?ie=UTF8&amp;qid=1297786254&amp;sr=8-1">Peopleware</a> is a classic book on team building, productive and “jelled” teams, individual and team productivity, and work place environment. It is thought-provoking and should be must-read material for anyone who ends up working in software development.</p>
<p>A few topics/chapters are particularly memorable to me</p>
<ul>
<li><strong>Quality If Time Permits</strong> &#8211; knowledge workers want to produce high quality products; management and silly deadlines conspire to defeat this.
<li><strong>Hiring a Juggler</strong> – you wouldn’t hire a juggler without asking him to juggle; why would you hire a programmer before asking him to code?
<li><strong>Teamicide</strong> – behaviors to avoid if you want to avoid killing off your team (this chapter also introduces one of my favorites – the concept of the “quality reduced product”)</li>
</ul>
<p>There’s a relatively strong concentration on workplace environment (offices, cubes, windows, interruptions, …), with an emphasis and data to suggest that inefficient workplaces can destroy productivity.&nbsp; Workers and managers don’t always have easy ways to influence these factors, but they’re very much worth pondering.</p>
<p>The book gets some criticism for its focus on negative behaviors to be avoided, rather than establishing positive behaviors to emulate.&nbsp; Portions of&nbsp; the material are also now somewhat dated (references to <a href="http://en.wikipedia.org/wiki/Intercom">intercoms</a> and <a href="http://en.wikipedia.org/wiki/Billy_Joel">1970s pop music</a> come to mind).&nbsp; </p>
<p>However criticizing this book for being dated misses the point; the fundamentals remain valid years later and this remains a classic which has influenced thinking for several decades.</p>
<p>Overall a great read.</p>
]]></content:encoded>
			<wfw:commentRss>http://plateofshrimp.com/2011/02/peopleware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Three Good Books</title>
		<link>http://plateofshrimp.com/2011/02/three-good-books/</link>
		<comments>http://plateofshrimp.com/2011/02/three-good-books/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 17:11:08 +0000</pubDate>
		<dc:creator>stevek</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Zynga]]></category>

		<guid isPermaLink="false">http://plateofshrimp.com/2011/02/three-good-books/</guid>
		<description><![CDATA[I’ve been working on the Cafe World team at Zynga for just over a year now.&#160; It’s a great ride – we have an energetic and talented team who have built a wonderful game. Zynga executes software projects in highly &#8230; <a href="http://plateofshrimp.com/2011/02/three-good-books/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://plateofshrimp.com/wp-content/uploads/2011/02/books.png"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 20px 20px; display: inline; border-top: 0px; border-right: 0px" title="books" border="0" alt="books" align="right" src="http://plateofshrimp.com/wp-content/uploads/2011/02/books_thumb.png" width="124" height="124"></a> I’ve been working on the <a href="http://apps.facebook.com/cafeworld/">Cafe World</a> team at <a href="http://zynga.com">Zynga</a> for just over a year now.&nbsp; It’s a great ride – we have an energetic and talented team who have built a wonderful game.</p>
<p>Zynga executes software projects in highly compressed time frames (features in days or weeks rather than weeks or months), which presents its own unique scheduling challenges.&nbsp; This has forced me to think hard about how to optimize software development while moving at what we affectionately call “Zynga Speed”.</p>
<p>As a result, I’ve been spending a lot of time recently pondering software schedules and project management issues.&nbsp; This has brought me back to some of the books and ideas that influenced me over the years.</p>
<p>I’ll cover these in a little more detail in subsequent posts, but the following are three good sources that stuck with me long after I read them</p>
<ul>
<li><a href="http://www.amazon.com/Peopleware-Productive-Projects-Teams-Second/dp/0932633439/ref=sr_1_1?ie=UTF8&amp;qid=1297786254&amp;sr=8-1">Peopleware: Productive Projects and Teams</a>, Tom DeMarco and Timothy Lister
<li><a href="http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=sr_1_1?ie=UTF8&amp;qid=1297786440&amp;sr=8-1">The Mythical Man-Month: Essays on Software Engineering</a>, Frederick Brooks
<li><a href="http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898/ref=sr_1_1?ie=UTF8&amp;qid=1295925619&amp;sr=8-1">Joel On Software</a>, Joel Spolsky</li>
</ul>
</p>
<p>While some or all of the material in each of these books may not apply to the situation you’re in, each is a thought-provoking and worthwhile read.</p>
<p><em></em>&nbsp;</p>
<p><em>(Thanks for reading – Steve Klinkner)</em></p>
<p>&nbsp;</p>
<p>PS To be fair, the <u>full</u> name of Joel’s book is</p>
<blockquote><p>Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://plateofshrimp.com/2011/02/three-good-books/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
