<?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>FatLemon &#187; Productivity</title>
	<atom:link href="http://www.fatlemon.co.uk/tag/productivity/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fatlemon.co.uk</link>
	<description>Contemplations on software development and human factors, by Andrew Freemantle</description>
	<lastBuildDate>Sun, 29 Jan 2012 13:45:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>SSD, Visual Studio and improving developer productivity</title>
		<link>http://www.fatlemon.co.uk/2010/02/ssd-visual-studio-and-improving-developer-productivity/</link>
		<comments>http://www.fatlemon.co.uk/2010/02/ssd-visual-studio-and-improving-developer-productivity/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 16:00:28 +0000</pubDate>
		<dc:creator>Andrew Freemantle</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[SSD]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.fatlemon.co.uk/?p=49</guid>
		<description><![CDATA[After reading lots of reviews, articles and watching a few youtube videos comparing Solid State Drives to Hard Disk Drives, I was unsure that&#8217;d see a beneficial improvement in my day-to-day developer tools of Visual Studio, such as building and spinning up desktop and web applications. I was unsure because there is a consensus of [...]]]></description>
			<content:encoded><![CDATA[<p>After <a title="Windows SSD Performance - www.tomshardware.com" href="http://www.tomshardware.com/reviews/windows-ssd-performance,2518.html">reading</a> <a title="Why cheap SSD sucks for Visual Studio - www.exdream.com" href="http://www.exdream.com/Blog/post/2009/02/25/Why-cheap-SSD-sucks-for-Visual-Studio.aspx" target="_blank">lots</a> <a title="Corsair X64 SSD Customer Reviews - www.overclockers.co.uk" href="http://www.overclockers.co.uk/showproduct.php?prodid=HD-004-CS&amp;tool=3&amp;groupid=1657&amp;catid=1660&amp;subcat=1668" target="_blank">of</a> <a title="Corsair P128 SSD Customer Reviews - www.eBuyer.com" href="http://www.ebuyer.com/product/167203/show_product_reviews" target="_blank">reviews</a>, <a title="SSD and Programming question - www.stackoverflow.com" href="http://stackoverflow.com/questions/499889/ssd-and-programming" target="_blank">articles</a> and watching a <a title="SSD vs 7200rpm HDD - www.youtube.com" href="http://www.youtube.com/watch?v=Dt6VbOY3xE0" target="_blank">few</a> <a title="MacBook HDD vs SSD boot time - www.youtube.com" href="http://www.youtube.com/watch?v=LCBfsfzHPeY" target="_blank">youtube</a> <a title="HDD vs SSD, Windows Vista tests - www.youtube.com" href="http://www.youtube.com/watch?v=Pf_QS3mZsyU" target="_blank">videos</a> comparing Solid State Drives to Hard Disk Drives, I was unsure that&#8217;d see a beneficial improvement in my day-to-day developer tools of Visual Studio, such as building and spinning up desktop and web applications.<strong> </strong></p>
<p>I was unsure because there is a <a title="SSD Disadvantages - www.wikipedia.org" href="http://en.wikipedia.org/wiki/Solid-state_drive#Disadvantages" target="_blank">consensus of small writes to SSDs aren&#8217;t as breathtaking</a> as the reads and writes of larger files:</p>
<blockquote><p>SATA-based SSDs generally exhibit much slower write speeds. As erase  blocks on flash-based SSDs generally are quite large (e.g. 0.5 &#8211; 1  megabyte), they are far slower than conventional disks during small writes (<em>write  amplification</em> effect) and can suffer from write fragmentation.</p>
<p>- Wikipedia</p></blockquote>
<p>But these things are fast at everything else, and while mulling over the idea of upgrading for a few months, I started to notice my usage patterns of switching between lots of different supporting applications. <strong>Given that&#8217;d I&#8217;d get improvements elsewhere if not in Visual Studio, I decided to try it out for myself.</strong></p>
<p>The SSD I chose is the Corsair CMFSSD-64D1, otherwise known as the <a title="Corsair Extreme Series X64 - www.amazon.co.uk" href="http://www.amazon.co.uk/gp/product/B002HQ2JXG?ie=UTF8&amp;tag=fatl-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B002HQ2JXG" target="_blank">Corsair Extreme Series X64</a>:</p>
<p><img class="alignnone size-medium wp-image-57" title="Corsair Extreme X64 Solid State Disk" src="http://www.fatlemon.co.uk/wp-content/uploads/corsair-x64-300x267.png" alt="" width="300" height="267" /></p>
<p>Here are the timings I took with the original Samsung 80GB 7,200rpm drive, and the timings from the <a title="Corsair Extreme Series X64 - www.amazon.co.uk" href="http://www.amazon.co.uk/gp/product/B002HQ2JXG?ie=UTF8&amp;tag=fatl-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B002HQ2JXG" target="_blank">Corsair Extreme X64</a>:<br />
(all timings are in seconds, so lower numbers are better)</p>
<table class="hdd-vs-ssd">
<thead>
<tr>
<td></td>
<td>boot</p>
<div class="table-subheading">from cold to login prompt</div>
</td>
<td>logging in</p>
<div class="table-subheading">pressing enter to ready*</div>
</td>
<td>starting outlook</p>
<div class="table-subheading">to &#8216;All folders up to date&#8217;</div>
</td>
<td>loading VS2008</p>
<div class="table-subheading">to news feed loads</div>
</td>
<td>loading solution</p>
<div class="table-subheading">8 project web solution</div>
</td>
<td>rebuild solution</p>
<div class="table-subheading">until build status says &#8216;build complete&#8217;</div>
</td>
</tr>
</thead>
<tbody>
<tr class="hdd">
<td>Samsung HDD</td>
<td>42.3</td>
<td>190.8</td>
<td>14.7</td>
<td>25.2</td>
<td>72.0</td>
<td>79.0</td>
</tr>
<tr class="ssd">
<td>Corsair X64 SSD</td>
<td>32.6</td>
<td>75.8</td>
<td>5.5</td>
<td>7.9</td>
<td>19.1</td>
<td>52.5</td>
</tr>
</tbody>
<tfoot>
<tr>
<td></td>
<td>22.8%</td>
<td>60.3%</td>
<td>63.0%</td>
<td>68.4%</td>
<td>73.5%</td>
<td>33.5%</td>
</tr>
</tfoot>
</table>
<h2>Conclusion</h2>
<p><strong>Overall, the SSD performs 53.6% faster &#8211; that means my machine is twice as responsive as it was.<br />
</strong></p>
<p>However, the most important savings to me are loading, and building solutions &#8211; I&#8217;ve only been running the SSD for a couple of days, but already I have shaken the reflexive pause I felt before closing or restarting Visual Studio, or opening up different solutions.</p>
<p>Granted, building or compiling decent sized projects in Visual Studio on an SSD is not as impressively fast as spinning up applications (Outlook, Paint.Net or Dreamweaver for example), or the improvement in general system responsiveness.</p>
<p>I now get 3 complete builds for 2..  <strong>put simply, it&#8217;s almost fast enough to remove the build waiting tax</strong>. It&#8217;s fast enough that <a title="&quot;long compile time leads to distraction&quot; - answer on www.stackoverflow.com" href="http://stackoverflow.com/questions/499889/ssd-and-programming/499959#499959" target="_blank">I don&#8217;t lose my train of thought and context switch to something else</a> &#8211; which makes me more productive.</p>
<h2>Method</h2>
<p>Timings were taken manually with a stop-watch, and averaged over 3 data points on different days.</p>
<p>* The Windows logging in timings include a start-up anti-virus scan.</p>
<p>System Specification and software versions:</p>
<ul>
<li>Intel Pentium 4 HT, 3.0 GHz</li>
<li>3 GB RAM</li>
<li>Windows XP 32bit (HDD timings), Windows 7 32bit (SSD timings)**</li>
<li>Outlook 2007</li>
<li>Visual Studio 2008 Team System Developer Edition</li>
<li>The 8 project web solution is the <a title="Invoice Management Software - Scan Notify Approve and Pay (SNAP) - www.snapsystems.co.uk" href="http://www.snapsystems.co.uk/" target="_blank">fantastic invoice management software called SNAP</a>, written in C# .Net 3.5</li>
</ul>
<p>** yes, I&#8217;d have loved to have done an apples-to-apples comparison by copying the exact same Windows XP installation over to the SSD, and I was all set to do so, except the Samsung HDD had a series of faults around the ~36GB mark that resulted in an XP installation that would only boot into Safe Mode.</p>
<p>I had taken the timings the week before I found this out, and with a clean SSD it seemed crazy not to take the opportunity to upgrade to Windows 7.  I suspect that had I stayed on Windows XP, the speed improvements would have been more impressive.</p>
<p>Fortuitously, the Corsair SSD arrived the same morning that the Samsung HDD exhibited the fault. (I know what you&#8217;re thinking, and no, it definitely wasn&#8217;t sabotage.. the SSD was on order for 2 weeks prior, and wasn&#8217;t due to arrive for another 3 days)</p>
<p>The Solid State Drive upgrade is a definite improvement, and I don&#8217;t think I&#8217;ll be buying Hard Disk Drives any more  <img src='http://www.fatlemon.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.fatlemon.co.uk/2010/02/ssd-visual-studio-and-improving-developer-productivity/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why are software developers so bad at estimating time?</title>
		<link>http://www.fatlemon.co.uk/2009/01/why-are-software-developers-so-bad-at-estimating-time/</link>
		<comments>http://www.fatlemon.co.uk/2009/01/why-are-software-developers-so-bad-at-estimating-time/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 15:00:26 +0000</pubDate>
		<dc:creator>Andrew Freemantle</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Estimating]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://www.fatlemon.co.uk/?p=23</guid>
		<description><![CDATA[In order to answer this question, we need to understand the term &#8220;flow&#8221;. From Peopleware: During single-minded work time, people are ideally in a state that psychologists call flow. Flow is a condition of deep, nearly meditative involvement. In this state, there is a gentle sense of euphoria, and one is largely unaware of the [...]]]></description>
			<content:encoded><![CDATA[<p>In order to answer this question, we need to understand the term &#8220;flow&#8221;. From <a title="Peopleware: Productive People and Teams - Amazon.co.uk" href="http://www.amazon.co.uk/gp/product/0932633439?ie=UTF8&amp;tag=fatl-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=0932633439">Peopleware</a>:</p>
<blockquote><p>During single-minded work time, people are ideally in a state that psychologists call <em>flow</em>. Flow is a condition of deep, nearly meditative involvement. In this state, there is a gentle sense of euphoria, and one is largely unaware of the passage of time: &#8220;I began to work. I looked up, and three hours had passed.&#8221;  There is no consciousness of effort; the work just seems to, well, flow. You&#8217;ve been in this state often, so we don&#8217;t have to describe it to you.</p>
<p>Not all work roles require that you attain a state of flow in order to be productive, but for anyone involved in engineering, design, development, writing, or like tasks, flow is a must. These are high-momentum tasks. It&#8217;s only when you&#8217;re in flow that the work goes well.</p></blockquote>
<p>To paraphrase, &#8220;It&#8217;s only when you&#8217;re in flow that you&#8217;re at your most productive&#8221;.</p>
<p>The quotation is taken from chapter 10, page 65. I know that because after reading those short paragraphs, I realised something that made me stop and put the book down..</p>
<p><strong>When a software developer thinks up an estimated time to complete a development task &#8211; they&#8217;re thinking solely in &#8220;flow&#8221; time.</strong></p>
<p>That realisation is profound.</p>
<p>Sure, more experienced software developers will <em>then</em> add time to this based on their experience before giving their answer, but their first thought is based on <em>flow-time</em>, which is their best-case, uninterrupted development time.</p>
<p><strong>Why is this?</strong></p>
<p>I think it&#8217;s a combination of 2 things;</p>
<ol>
<li>The question itself.. &#8220;how long would it take you to do / fix / add / change x?&#8221;.<br />
A developers starting point is their experience of development to date, and that development is at it&#8217;s most productive in flow-time. So they&#8217;re going to answer you based on them being in productive flow-time. However, this means they&#8217;re starting their estimate based on an unaware assumption that they&#8217;re quoting flow-time.<br />
For example, if a developer responds with &#8220;it&#8217;ll take me half a day&#8221;, what they&#8217;re really saying is &#8220;with a half-day of flow-time, I can do / fix /add / change x&#8221;.</li>
<li>If you didn&#8217;t already know, <a title="Defeating optimism - CodingHorror.com" href="http://www.codinghorror.com/blog/archives/000284.html">developers are optimistic</a>. They&#8217;re optimistic about how much they can get done, and they&#8217;re optimistic about how much flow-time they&#8217;re going to have.</li>
</ol>
<p><strong>So what is the answer?!</strong></p>
<p>To quote more from <a title="Peopleware: Productive People and Teams - Amazon.co.uk" href="http://www.amazon.co.uk/gp/product/0932633439?ie=UTF8&amp;tag=fatl-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=0932633439">Peopleware</a>:</p>
<blockquote><p>Chances are, your company&#8217;s present time accounting system is based on a conventional model. It assumes that work accomplished is proportional to the number of hours put in. When workers fill out their time sheets in this scheme, they make no distinction between doing meaningful work and hours of pure frustration. So they&#8217;re reporting body time rather than brain time.</p>
<p>&#8230;</p>
<p>The phenomena of flow and immersion give us a more realistic way to model how time is applied to a development task. What matters is not the amount of time you&#8217;re <em>present</em>, but the amount of time that you&#8217;re <em>working at full potential</em>. An hour in flow really accomplishes something, but ten six-minute work periods sandwiched between eleven interruptions won&#8217;t accomplish anything.</p></blockquote>
<p>The answer, then, is to take the developers estimate with a pinch of salt (the more &#8216;seasoned&#8217; the developer, the less salt required), remember that their estimate <strong>is an <a title="Estimate (noun): an approximate judgment or calculation - dictionary.com" href="http://dictionary.reference.com/browse/estimate"><em>estimate</em></a></strong>, and use it with <a title="Evidence Based Scheduling - JoelOnSoftware.com" href="http://www.joelonsoftware.com/items/2007/10/26.html">evidence based scheduling</a> (if you aren&#8217;t already).</p>
<p>The next question you may be asking of course, is how do I reduce the difference between the estimate and the actual &#8211; the &#8216;slip&#8217;.</p>
<p>That&#8217;s a topic for another day. I&#8217;ll let you know when I&#8217;ve finished <a title="Peopleware: Productive People and Teams - Amazon.co.uk" href="http://www.amazon.co.uk/gp/product/0932633439?ie=UTF8&amp;tag=fatl-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=0932633439">Peopleware</a>, or you can grab a copy for yourself  <img src='http://www.fatlemon.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.fatlemon.co.uk/2009/01/why-are-software-developers-so-bad-at-estimating-time/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

