<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>niksilver.com &#187; Planning</title>
	<atom:link href="http://niksilver.com/category/planning/feed/" rel="self" type="application/rss+xml" />
	<link>http://niksilver.com</link>
	<description>Mostly about the management of software development</description>
	<lastBuildDate>Wed, 01 Feb 2012 20:37:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='niksilver.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/929dd549b4d099719f34e472d1f7a25a?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>niksilver.com &#187; Planning</title>
		<link>http://niksilver.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://niksilver.com/osd.xml" title="niksilver.com" />
	<atom:link rel='hub' href='http://niksilver.com/?pushpress=hub'/>
		<item>
		<title>Specs fill communication gaps</title>
		<link>http://niksilver.com/2011/10/13/specs-fill-communication-gaps/</link>
		<comments>http://niksilver.com/2011/10/13/specs-fill-communication-gaps/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 22:02:12 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Planning]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=2175</guid>
		<description><![CDATA[You may very well not need a spec for your software project. I had a recent conversation with a friend in a very small (3-4 person) company, building their first online product, and he said his sole developer was going off to write a spec. This raised alarm bells with me, as I saw it &#8230; <a href="http://niksilver.com/2011/10/13/specs-fill-communication-gaps/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=2175&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="www.flickr.com/photos/karenhorton/3298605016/"><img class="alignright size-full wp-image-2176" title="Postage stamp - Photo by Karen Horton" src="http://niksilver.files.wordpress.com/2011/10/postage-stamp.jpg?w=750" alt=""   /></a>You may very well not need a spec for your software project. I had a recent conversation with a friend in a very small (3-4 person) company, building their first online product, and he said his sole developer was going off to write a spec. This raised alarm bells with me, as I saw it as a tactic for procrastination.</p>
<p>Specs are useful for filling a communication gap. That gap may be one of team distance (the BA to the vast army of developers, too many to speak to all at once), or time distance (we&#8217;ll write this down now, because we may forget it in 3 months&#8217; time when we start the work), or organisational distance (we&#8217;re going to give this to you, third party company, because this is precisely what we want you to build for us). There will be other examples.</p>
<p>But if those gaps don&#8217;t exist then you probably don&#8217;t need a spec. In particular, if you have four people in the company, and you don&#8217;t yet have any software, and are still validating your product idea, then a spec isn&#8217;t going to be useful. There, the best thing is to write the smallest thing you can, try it out, and repeat.</p>
<p>None of which is to say that all documents are bad. Far from it. It&#8217;s a good idea to write down a strategy (lest you forget it in the heat of the moment), an architecture (which you should aim for but may want to adjust), and some principles of various kinds (UX, engineering, product, etc).</p>
<p>But a spec is too often a document we could do without.</p>
<br />Filed under: <a href='http://niksilver.com/category/agile/'>Agile</a>, <a href='http://niksilver.com/category/planning/'>Planning</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/niksilver.wordpress.com/2175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/niksilver.wordpress.com/2175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/niksilver.wordpress.com/2175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/niksilver.wordpress.com/2175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/niksilver.wordpress.com/2175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/niksilver.wordpress.com/2175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/niksilver.wordpress.com/2175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/niksilver.wordpress.com/2175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/niksilver.wordpress.com/2175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/niksilver.wordpress.com/2175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/niksilver.wordpress.com/2175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/niksilver.wordpress.com/2175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/niksilver.wordpress.com/2175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/niksilver.wordpress.com/2175/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=2175&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2011/10/13/specs-fill-communication-gaps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://niksilver.files.wordpress.com/2011/10/postage-stamp-featured.jpg?w=150" />
		<media:content url="http://niksilver.files.wordpress.com/2011/10/postage-stamp-featured.jpg?w=150" medium="image">
			<media:title type="html">Postage stamp detail - Photo by Karen Horton</media:title>
		</media:content>

		<media:content url="http://0.gravatar.com/avatar/ed5f211191ad95ff564f9972490f40b1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">niksilver</media:title>
		</media:content>

		<media:content url="http://niksilver.files.wordpress.com/2011/10/postage-stamp.jpg" medium="image">
			<media:title type="html">Postage stamp - Photo by Karen Horton</media:title>
		</media:content>
	</item>
		<item>
		<title>Migrating systems (such as Delicious)</title>
		<link>http://niksilver.com/2011/09/29/migrating-delicious/</link>
		<comments>http://niksilver.com/2011/09/29/migrating-delicious/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 09:26:10 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Planning]]></category>
		<category><![CDATA[Software design]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=1433</guid>
		<description><![CDATA[A few words on rewriting and migrating systems, based on experience. This is because the painful rejuvination of Delicious under Avos is very much at the front of my mind right now &#8212; I&#8217;m both a user caught in the backwash, and also an industry professional who&#8217;s dealt with these things before. While Chad and &#8230; <a href="http://niksilver.com/2011/09/29/migrating-delicious/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=1433&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-1434" title="URL-based indirection layer" src="http://niksilver.files.wordpress.com/2011/09/migration-architecture-1.jpg?w=750" alt="URL-based indirection layer"   />A few words on rewriting and migrating systems, based on experience. This is because <a href="http://gigaom.com/2011/09/28/oh-delicious-where-did-it-all-go-so-wrong/">the painful rejuvination of Delicious</a> under Avos is very much at the front of my mind right now &#8212; I&#8217;m both a user caught in the backwash, and also an industry professional who&#8217;s dealt with these things before. While Chad and Steve&#8217;s best known experience is building something new (i.e. YouTube) my experience is more with taking first-generation systems and transforming them into next-generation systems (the parallel with Delicious).</p>
<p>There are a few pertinent lessons:</p>
<ol>
<li>Roll out slowly</li>
<li>Let systems co-exist</li>
<li>Always have a rollback plan</li>
</ol>
<p><strong>1. Roll out slowly</strong></p>
<p>I&#8217;ve <a href="http://niksilver.com/2006/05/12/big-bangs-and-telegraphcouks-redesign/">written before about the almost-inevitable pain of big bang launches</a>, following Telegraph.co.uk&#8217;s update in 2007. Those lessons are true still. The only way to avoid that pain while still having a big bang launch is with a vast amount of additional resources (cost and time), which are rarely worth the value of what you&#8217;re gaining.</p>
<p>An approach with more likely success is to roll out piecemeal, replacing one user feature, or one system component, at a time. This is not sexy for engineers, who typically want greenfield projects and new technology, but nor is it sexy working 18 hour days to fix a torrent of bugs under a hail of angry user feedback.</p>
<p>This approach means breaking up the system into discrete components and replacing those. If the system doesn&#8217;t have such discrete components then the first job is to create them, going through the code and making logical fences. No this isn&#8217;t sexy, but let&#8217;s repeat: neither is working 18 hour days.</p>
<p><strong>2. Let systems co-exist</strong></p>
<p>It&#8217;s a computer science joke that every known software problem can be solved by adding an extra layer of indirection. However, sometimes that&#8217;s also a practical solution. This allows you to build an old and a new system side by side, and funnel specific users/activity/processes/etc to either one. As you build up the capabilities of the new system you can funnel more and more activity to it.</p>
<p><strong><img class="alignright size-full wp-image-1435" title="Internal API for indirection" src="http://niksilver.files.wordpress.com/2011/09/migration-architecture-2.jpg?w=750" alt="Internal API for indirection"   /></strong>Two architecture cast studies:</p>
<p>In the first (Architecture 1, above) we needed to replace a proprietary application server with one over which we had much more control. Critically, the new application server needed to be able to execute the same scripts, of which there were thousands.</p>
<p>Our first-release replacement app server had only the most basic capability, and so could only execute a tiny fraction of the scripts. So we put in a layer of indirection which filtered requests to either the old or the new server. As we enhanced the capability of the of new application server we filtered more and more requests to it, until we were finally able to switch off the old one.</p>
<p>In the second (Architecture 2) we needed to migrate our user data to a new, more flexible database (MongoDB), despite some of the application code being rather old and tied closely to the legacy database. <a href="http://www.slideshare.net/tackers/why-we-chose-mongodb-for-guardiancouk">The solution was to introduce an internal API</a>, ensure all code used that API instead of direct database access, and then add the new database under that. The two systems co-existed for a long time as their capabilities were brought together and tested for consistency.</p>
<p><strong>3. Always have a rollback plan</strong></p>
<p>Once we have a step-by-step approach to moving from one system to another we have to recognise that some steps may not work flawlessly. In this case we have to be able to switch back, because fixing a problem in situ may take too long. This is something that can be built into the indirection layer&#8217;s config system, or into the release mechanism (allowing easy rereleaes of the previous version), or be switchable in the application&#8217;s own config  (<a href="http://code.flickr.com/blog/2009/12/02/flipping-out/">see Flickr&#8217;s approach</a> as one example).</p>
<p><strong>It&#8217;s still difficult</strong></p>
<p>None of this is easy, of course, but it&#8217;s the kind of thing were the effort is in the up-front planning and the initial (possibly time-consuming) prep to tidy up the old system, all for the sake of a smoother rollout. Launches are exciting, but they can be exciting in the intended way at the same time as going boringly to plan.</p>
<p>Meanwhile the folks at Delicious are <a href="http://deliciousengineering.blogspot.com/">slowly restoring many lost features</a>, and I wish them well, because we&#8217;ll all win if they do.</p>
<br />Filed under: <a href='http://niksilver.com/category/planning/'>Planning</a>, <a href='http://niksilver.com/category/software-design/'>Software design</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/niksilver.wordpress.com/1433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/niksilver.wordpress.com/1433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/niksilver.wordpress.com/1433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/niksilver.wordpress.com/1433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/niksilver.wordpress.com/1433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/niksilver.wordpress.com/1433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/niksilver.wordpress.com/1433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/niksilver.wordpress.com/1433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/niksilver.wordpress.com/1433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/niksilver.wordpress.com/1433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/niksilver.wordpress.com/1433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/niksilver.wordpress.com/1433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/niksilver.wordpress.com/1433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/niksilver.wordpress.com/1433/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=1433&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2011/09/29/migrating-delicious/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://niksilver.files.wordpress.com/2011/09/migration-architecture-1.jpg?w=100" />
		<media:content url="http://niksilver.files.wordpress.com/2011/09/migration-architecture-1.jpg?w=100" medium="image">
			<media:title type="html">URL-based indirection layer</media:title>
		</media:content>

		<media:content url="http://0.gravatar.com/avatar/ed5f211191ad95ff564f9972490f40b1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">niksilver</media:title>
		</media:content>

		<media:content url="http://niksilver.files.wordpress.com/2011/09/migration-architecture-1.jpg" medium="image">
			<media:title type="html">URL-based indirection layer</media:title>
		</media:content>

		<media:content url="http://niksilver.files.wordpress.com/2011/09/migration-architecture-2.jpg" medium="image">
			<media:title type="html">Internal API for indirection</media:title>
		</media:content>
	</item>
		<item>
		<title>Meaningful estimation</title>
		<link>http://niksilver.com/2011/09/23/meaningful-estimation/</link>
		<comments>http://niksilver.com/2011/09/23/meaningful-estimation/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 07:30:44 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Planning]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=1415</guid>
		<description><![CDATA[Is it possible to estimate a software project well if it&#8217;s over, say, a month in duration? Or can you only give meaningful estimates to work that&#8217;s less than a week? And is it right to say No to any requests for estimates of work of substantial size? These are questions that arose most recently &#8230; <a href="http://niksilver.com/2011/09/23/meaningful-estimation/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=1415&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Is it possible to estimate a software project well if it&#8217;s over, say, a month in duration? Or can you only give meaningful estimates to work that&#8217;s less than a week? And is it right to say No to any requests for estimates of work of substantial size?</p>
<p><a href="http://www.flickr.com/photos/revdancatt/6147776274/"><img class="alignright size-full wp-image-1420" title="Launch button - Photo by Rev Dan Catt" src="http://niksilver.files.wordpress.com/2011/09/us-launch-button.jpg?w=750" alt="Launch button - Photo by Rev Dan Catt"   /></a>These are questions that arose most recently in <a href="http://blog.robbowley.net/2011/09/21/estimation-is-at-the-root-of-most-software-project-failures/">a post by Rob Bowley</a>. It&#8217;s well worth a read, with lots of good references, and there&#8217;s a terrific discussion underneath. My own answer to these questions is that any estimate can be useless or misused (even those of an hour), and any estimate must be placed in a context to be meaningful.</p>
<p><strong>Estimation considered harmful</strong></p>
<p>Rob makes a lot of good points. Here are some I agree with:</p>
<ul>
<li>Misuse of estimates is the root of many, if not most, failed software projects being considered a failure.</li>
<li>Almost all of us are really bad at estimating in these situations.</li>
<li>For most organisations the definition of tech success is &#8220;on time and on budget&#8221;</li>
<li>When asked for long range estimates it&#8217;s irresponsible to just say No and walk away.</li>
</ul>
<p>And here&#8217;s what I disagree with:</p>
<blockquote><p>&#8230;we should start being brave and just saying no to requests to provide estimates on anything more than 1 or 2 months (at most) work. [...] What’s the least worst situation to be in? Having an uncomfortable situation with your boss now or when – based on your estimates – the project’s half a million over budget and 6 months late? [...] My advice to anyone who’s put in the situation of providing long range estimates is to be brave and simply say it’s not something we can do, and then do your best to explain why.</p></blockquote>
<p><strong>Being meaningful</strong></p>
<p>Just saying No isn&#8217;t helpful &#8212; even with an explanation. The worst that can happen isn&#8217;t bringing forward an inevitably-uncomfortable situation with your boss. The worst that can (reasonably) happen is that your boss systematically turns to others who are more on his or her wavelength, and you get seen as a fist-waving problem employee who is consistently sidelined.</p>
<p>To me, the truth is in <a href="http://storify.com/pigsaw/estimation-problems-with-rob-bowley">this Twitter exchange</a> I had with Rob, and <a href="https://twitter.com/rachelcdavies">Rachel Davies</a>, while he was writing the piece:</p>
<p>[<a href="http://storify.com/pigsaw/estimation-problems-with-rob-bowley" target="blank">View the story "Estimation problems, with Rob Bowley" on Storify]</a></p>
<p>The key text is when Rob says that discussing project duration is perfectly valid only if you can say anything meaningful about it. What&#8217;s meaningful varies. Even saying something will take one hour may not be sufficiently meaningful in some situations:</p>
<blockquote><p><strong>Chief:</strong> Can you write a script that shuts down all the launch servers?</p>
<p><strong>Technician:</strong> Sure. I estimate that will take an hour. [Thinks: I'll start it after lunch.]</p>
<p><strong>Chief:</strong> Thank goodness. Because apparently someone&#8217;s hacked them, and they&#8217;ve been reconfigured to launch a nuclear strike against Italy in [looks at watch] 1 hour and 2 minutes. But I&#8217;m reassured now we&#8217;ll be okay.</p></blockquote>
<p>If that 1 hour estimate is out by just 3 minutes then there are very bad consequences. Suddenly it looks as though the estimate didn&#8217;t provide the right meaning to the chief.</p>
<p>In the comments on Rob&#8217;s piece, <a href="http://pauldyson.wordpress.com/">Paul Dyson</a> gives two detailed examples of where long range estimates were presented in a meaningful manner. Each was a situation where figures were not presented as standalone numbers, but part of a larger response that made up a business solution: we believe this investment will achieve this outcome, and we will track success continually in a dialogue with you.</p>
<p>Presenting standalone numbers in response to specific questions divorced from the larger context is responding to the wrong question. Having a meaningful dialogue with your peers is more productive.</p>
<p>In my time at the Guardian we built our <a href="http://www.guardian.co.uk/open-platform/what-is-the-microapp-framework">micro-apps framework</a> with specific intention to support a specific project: our discussion platform. There was a time and budgetary estimate, but the end goal of delivering the discussion platform was what counted.</p>
<p><a href="http://www.guardiannews.com/">Guardian in America</a> has a specific budget, too. It <a href="http://www.guardian.co.uk/help/insideguardian/2011/sep/14/guardian-us-launch-homepage">launched recently with a new home page</a> focused on a US audience. That&#8217;s far from all that will be delivered, but you can be sure the project&#8217;s early goals are being met with that early delivery, and there is a feedback loop which comes from using this for real. One day the budget will be used up, but before then the priority of individual features will have changed in the light of real-world experience. That in turn means the priority of the project will be on delivering business objectives, not on sticking to a narrow view of on-time-on-budget.</p>
<p>Making estimates part of the bigger picture, to give them appropriate meaning, is what creates success.</p>
<br />Filed under: <a href='http://niksilver.com/category/planning/'>Planning</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/niksilver.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/niksilver.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/niksilver.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/niksilver.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/niksilver.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/niksilver.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/niksilver.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/niksilver.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/niksilver.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/niksilver.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/niksilver.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/niksilver.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/niksilver.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/niksilver.wordpress.com/1415/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=1415&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2011/09/23/meaningful-estimation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:thumbnail url="http://niksilver.files.wordpress.com/2011/09/us-launch-button-featured.jpg?w=150" />
		<media:content url="http://niksilver.files.wordpress.com/2011/09/us-launch-button-featured.jpg?w=150" medium="image">
			<media:title type="html">us-launch-button-featured</media:title>
		</media:content>

		<media:content url="http://0.gravatar.com/avatar/ed5f211191ad95ff564f9972490f40b1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">niksilver</media:title>
		</media:content>

		<media:content url="http://niksilver.files.wordpress.com/2011/09/us-launch-button.jpg" medium="image">
			<media:title type="html">Launch button - Photo by Rev Dan Catt</media:title>
		</media:content>
	</item>
		<item>
		<title>Dealing with uncomfortable ranges</title>
		<link>http://niksilver.com/2011/01/10/uncomfortable-ranges/</link>
		<comments>http://niksilver.com/2011/01/10/uncomfortable-ranges/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 09:00:10 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Governance]]></category>
		<category><![CDATA[Planning]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=923</guid>
		<description><![CDATA[Lots of questions went unanswered in my last piece on putting ranges of projections into project proposals and I want to follow up on one of them here: What if our range of values isn&#8217;t something we&#8217;re happy with? In my previous example our project had a revenue projection of £150k to £500k. But suppose &#8230; <a href="http://niksilver.com/2011/01/10/uncomfortable-ranges/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=923&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Lots of questions went unanswered in my last piece on <a href="http://niksilver.com/2011/01/04/better-proposal-figures/">putting ranges of projections into project proposals</a> and I want to follow up on one of them here: What if our range of values isn&#8217;t something we&#8217;re happy with?</p>
<p>In my previous example our project had a revenue projection of £150k to £500k. But suppose the project was expected to cost £200k. Then that range encompasses both profit and loss. What can we do?</p>
<p><a href="http://www.flickr.com/photos/paradisecircus/2202277035/"><img class="alignright size-full wp-image-932" title="Uncomfortable bounds" src="http://niksilver.files.wordpress.com/2011/01/uncomfortable-ranges1.jpg?w=750" alt="Uncomfortable bounds"   /></a>Here are some suggestions:</p>
<p><strong>1. Collect more data</strong></p>
<p>We may be very confident of our potential revenue, but perhaps we could be more confident. More research data should change our perception of what might occur, and so narrow the range of expectations. This might include customer research or research into other companies&#8217; experiences.</p>
<p>Of course our findings may just serve to confuse the issue: we may collect six examples of other companies&#8217; experiences only to find they differ wildly. In such cases we should be more discerning about how we see the data. For example it would be a good idea to learn more about each example and see which are closest to our own proposal.</p>
<p><strong>2. Break down the problem</strong></p>
<p>Our revenue projections (or other measurement) are likely to be a factor of several other elements. If we can break down the problem we can perhaps analyse those elements more easily. With more confidence over simpler measures we ought to be able to make tighter estimations of the whole.</p>
<p>For example, revenue may be seen as a factor of market size, typical customer spend, product visibility and ability of the product to meet customers&#8217; needs. There may be market data readily available on market size and customer spend; we should be in a position to gauge product visibility if that&#8217;s a result of our own marketing; and focus groups or similar may be able to help us understand how the product is seen to meet customers&#8217; needs.</p>
<p><strong>3. Move the breakeven point</strong></p>
<p>If we&#8217;re worried that we may generate £150k to £500k from a product or project that costs us £200k then maybe we should seek to reduce the costs. Of course if we reduce functionality or quality then there is likely to be some detrimental effect to the revenue. But we may be able to find high cost/low value items which change the game sufficiently.</p>
<p><strong>4. Change the factors that influence the range</strong></p>
<p>It may be that we can reduce uncertainty by actually influencing some of the critical elements. If it transpires that customers don&#8217;t see the product as meeting their needs sufficiently then we should change that. That may be by changing the product, or by improving our marketing.</p>
<p>Or we may find it&#8217;s useful to do the opposite of our previous suggestion of reducing cost: increasing quality (and adding a bit of cost) may pay extra dividends by increasing take-up. This kind of thing can be seen in places like the Apple App Store. I am at least twice as likely (probably four to five times more likely) to buy an app rated 4.5 stars than if it was 3.5 stars. Yet the difference in production cost to get to that level would have been far less than two-fold.</p>
<p>I&#8217;m sure there are more ways to respond to an insufficiently compelling range of possibilities in a project proposal. Overall, though, all these actions have the same beneficial effect I pointed to before: the relevant issues are surfaced so that they can be addressed appropriately and we increase the likelihood of our project&#8217;s success. And they are much more likely to be surfaced an addressed if we also surface that fact there is a range of outcomes, rather than project a single outcome.</p>
<br />Filed under: <a href='http://niksilver.com/category/governance/'>Governance</a>, <a href='http://niksilver.com/category/planning/'>Planning</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/niksilver.wordpress.com/923/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/niksilver.wordpress.com/923/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/niksilver.wordpress.com/923/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/niksilver.wordpress.com/923/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/niksilver.wordpress.com/923/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/niksilver.wordpress.com/923/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/niksilver.wordpress.com/923/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/niksilver.wordpress.com/923/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/niksilver.wordpress.com/923/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/niksilver.wordpress.com/923/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/niksilver.wordpress.com/923/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/niksilver.wordpress.com/923/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/niksilver.wordpress.com/923/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/niksilver.wordpress.com/923/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=923&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2011/01/10/uncomfortable-ranges/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ed5f211191ad95ff564f9972490f40b1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">niksilver</media:title>
		</media:content>

		<media:content url="http://niksilver.files.wordpress.com/2011/01/uncomfortable-ranges1.jpg" medium="image">
			<media:title type="html">Uncomfortable bounds</media:title>
		</media:content>
	</item>
		<item>
		<title>Better figures in project proposals</title>
		<link>http://niksilver.com/2011/01/04/better-proposal-figures/</link>
		<comments>http://niksilver.com/2011/01/04/better-proposal-figures/#comments</comments>
		<pubDate>Tue, 04 Jan 2011 09:00:04 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Governance]]></category>
		<category><![CDATA[Planning]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=914</guid>
		<description><![CDATA[Reading Doug Hubbard&#8217;s excellent How to Measure Anything I got thinking about the proposals I read and write, the problems they face, and how to fix them. A typical proposal (I&#8217;m thinking mainly of internal projects) will make a claim like &#8220;This project will add 500,000 unique users in the first year&#8221; or &#8220;This will &#8230; <a href="http://niksilver.com/2011/01/04/better-proposal-figures/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=914&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Reading Doug Hubbard&#8217;s excellent <a href="http://howtomeasureanything.com/">How to Measure Anything</a> I got thinking about the proposals I read and write, the problems they face, and how to fix them.</p>
<p><a href="http://www.flickr.com/photos/genbug/3211632108/"><img class="alignright size-full wp-image-920" title="Some things are best not stated just as single numbers" src="http://niksilver.files.wordpress.com/2011/01/tape-measure2.jpg?w=750" alt="Some things are best not stated just as single numbers"   /></a>A typical proposal (I&#8217;m thinking mainly of internal projects) will make a claim like &#8220;This project will add 500,000 unique users in the first year&#8221; or &#8220;This will bring in £400,000 of new revenue by October&#8221; or &#8220;This will save £250,000 next financial year&#8221;. I know because I&#8217;ve written some of them. In choosing what number to use you don&#8217;t want to put in anything too low or the project won&#8217;t look worthwhile, so you tend to put in something that&#8217;s a little generous (but not implausibly so) and assume that all the contributing factors will work out for the best &#8212; the marketing, the timing, the user take-up, and so on. Depending on the audience you&#8217;re presenting it to you might even have some evidence for your projection.</p>
<p>The problem is, of course, that it won&#8217;t happen like that. Some things will work out well, some not so well. Everyone knows that, and if you&#8217;re facing a sceptical inquisitor then you&#8217;re just setting yourself up with less credibility before you start. Thinking back on the last such proposal I wrote I can imagine a conversation with a fantasy inquisitor that might have gone like this&#8230;</p>
<p style="padding-left:30px;"><strong>Fantasy inquisitor:</strong> You say this will bring in £400,000 before October.</p>
<p style="padding-left:30px;"><strong>Me:</strong> That&#8217;s right.</p>
<p style="padding-left:30px;"><strong>FI:</strong> Can you guarantee that? Can you guarantee  £400,000 of new revenue?</p>
<p style="padding-left:30px;"><strong>Me:</strong> [fearing liability, and wondering which members of my family might get taken away if it doesn't happen]: No, of course I can&#8217;t absolutely guarantee it.</p>
<p style="padding-left:30px;"><strong>FI:</strong> So what are you saying about the £400,000 if you can&#8217;t guarantee it?</p>
<p>What indeed? The truth is that will be the revenue if things generally go well. We might make even more. But realistically we might make less. Being honest with ourselves and our audience will help everyone. Let&#8217;s return to the scene&#8230;</p>
<p style="padding-left:30px;"><strong>FI:</strong> [repeating for the sake of the drama] So what are you saying about the £400,000 if you can&#8217;t guarantee it?</p>
<p style="padding-left:30px;"><strong>Me:</strong> I&#8217;m confident we&#8217;ll make that.</p>
<p style="padding-left:30px;"><strong>FI:</strong> How confident?</p>
<p style="padding-left:30px;"><strong>Me:</strong> Really quite confident.</p>
<p style="padding-left:30px;"><strong>FI:</strong> So you&#8217;re &#8220;really quite&#8221; confident it will make at least £400,000. And I suppose it could make us as much as&#8230; what? £800,000?</p>
<p style="padding-left:30px;"><strong>Me:</strong> Er, no I don&#8217;t think it will go that well. Maybe £500,000.</p>
<p style="padding-left:30px;"><strong>FI:</strong> So you&#8217;re confident it could make as much as £500,000. And you can be confident it won&#8217;t generate a penny less than £400,000, can you?</p>
<p style="padding-left:30px;"><strong>Me:</strong> Well, it certainly could make less, I suppose, if not everything went to plan.</p>
<p style="padding-left:30px;"><strong>FI:</strong> Would you be surprised if it didn&#8217;t make us anything at all?</p>
<p style="padding-left:30px;"><strong>Me:</strong> Yes, I would. Even being realistically pessimistic it really should make at least £150,000.</p>
<p style="padding-left:30px;"><strong>FI:</strong> Okay, so you&#8217;re very confident we&#8217;re looking at making £150,000 to £500,000 with this?</p>
<p style="padding-left:30px;"><strong>Me:</strong> Yes, I&#8217;m very confident of £150,000 to £500,000 of new revenue.</p>
<p>So our single (and therefore implausible-sounding) figure becomes much more realistic when we change it into a range, even if it goes down at one end. It also goes up at the other end.</p>
<p>I think this goes a long way in dealing with a sceptical audience becaues it is more realistic. For the same reason we should be more confident when we talk about it, too.</p>
<p>I&#8217;ll add two final notes. First, there&#8217;s an important question that needs to be asked, which I&#8217;ve omitted: What is your evidence for this? This may be calculations based on observations, historical data from similar projects in the past, market research, etc. Either way, it&#8217;s important to know that the figure(s) in question aren&#8217;t entirely random.</p>
<p>Second, the statisticians in the audience will point out that &#8220;very confident&#8221; is almost meaningless when we could say <a href="http://en.wikipedia.org/wiki/Confidence_interval">&#8220;90% confident&#8221; or attach some other actual number</a>. I certainly appreciate that, and mostly concur. But for me a significant, easy, and meaningful step forward is to move from single figures to more realistic ranges. And this should promote more honest and confident dialogue.</p>
<br />Filed under: <a href='http://niksilver.com/category/governance/'>Governance</a>, <a href='http://niksilver.com/category/planning/'>Planning</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/niksilver.wordpress.com/914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/niksilver.wordpress.com/914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/niksilver.wordpress.com/914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/niksilver.wordpress.com/914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/niksilver.wordpress.com/914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/niksilver.wordpress.com/914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/niksilver.wordpress.com/914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/niksilver.wordpress.com/914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/niksilver.wordpress.com/914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/niksilver.wordpress.com/914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/niksilver.wordpress.com/914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/niksilver.wordpress.com/914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/niksilver.wordpress.com/914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/niksilver.wordpress.com/914/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=914&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2011/01/04/better-proposal-figures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ed5f211191ad95ff564f9972490f40b1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">niksilver</media:title>
		</media:content>

		<media:content url="http://niksilver.files.wordpress.com/2011/01/tape-measure2.jpg" medium="image">
			<media:title type="html">Some things are best not stated just as single numbers</media:title>
		</media:content>
	</item>
		<item>
		<title>The Eigenharp, openness, and launching something (really) new</title>
		<link>http://niksilver.com/2009/10/07/the-eigenharp-openness-and-launching-something-really-new/</link>
		<comments>http://niksilver.com/2009/10/07/the-eigenharp-openness-and-launching-something-really-new/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 22:21:28 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Planning]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=585</guid>
		<description><![CDATA[Today I attended the launch of something weird and wonderful: a new musical instrument, the Eigenharp. And although this is a hardware device the event, and the run up to it, brought to mind the launch of our own Open Platform six months ago. By seeing some commonalities between the two it gave me a &#8230; <a href="http://niksilver.com/2009/10/07/the-eigenharp-openness-and-launching-something-really-new/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=585&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/pigsaw/3990391407/in/set-72157622537697462"><img class="alignright" title="Eigenharp buttons and lights up close" src="http://farm3.static.flickr.com/2561/3990391407_2f5e9be01f_d.jpg" alt="" width="500" height="333" /></a>Today I <a href="http://www.flickr.com/photos/pigsaw/sets/72157622537697462/">attended the launch</a> of something weird and wonderful: a new musical instrument, the <a href="http://eigenlabs.com/alpha/">Eigenharp</a>. And although this is a hardware device the event, and the run up to it, brought to mind the launch of our own <a href="http://www.guardian.co.uk/open-platform">Open Platform</a> six months ago. By seeing some commonalities between the two it gave me a whole new respect for the people who do marketing and PR, because it reminded me how much stuff needs to be planned. Common phases I saw are: (1) the controlled buzz, (2) openness at launch, and (3) the follow-through. But first a few words about the two products&#8230;</p>
<p><strong>The Eigenharp and the Open Platform</strong></p>
<p>The Eigenharp is a new kind of device. It&#8217;s a musical instrument with several patents already filed, and incorporates 132 keys with three-colour LEDs and a breath pipe. The keys operate in three dimensions (so you can exploit, say, pressure, pitch bend and filter effects with one finger) and are sensitive to within one micron. So while it&#8217;s compatible with MIDI, that&#8217;s an incredibly out-of-date protocol compared to what you could do with it.</p>
<p>The Open Platform has been well-documented here and elsewhere: a full content API directly into the Guardian&#8217;s content database, plus a store of raw data on which our journalists base some of their stories.</p>
<p>Although they are clearly two different kinds of beasts a remarkable similarity struck me in that they are both not just new products, but <em>really</em> new products. There is no clearly defined place for them in either of their markets, and no predictable success path for either one. The success of each is dependent entirely on other people&#8217;s innovation. The Eigenharp&#8217;s success is dependent on musicians taking their creativity into new directions &#8212; no-one to date has written music for an Eigenharp. The Open Platform&#8217;s success is dependent on developers doing innovative things with the new data they have access to.</p>
<p>So how do you launch a product that&#8217;s <em>really </em>new? The similar steps I can see are&#8230;</p>
<p><strong><a href="http://www.flickr.com/photos/pigsaw/3990393187/in/set-72157622537697462"><img class="alignleft" title="A view from the breath pipe" src="http://farm3.static.flickr.com/2514/3990393187_0c1be9337f_m_d.jpg" alt="" width="160" height="240" /></a>1. The controlled buzz</strong></p>
<p><a href="http://eigenlabs.com">Eigenlabs</a> (the creators of the Eigenharp) and the Guardian (creators of the Open Platform) managed to seed a few select people with their product &#8212; musicians and developers respectively &#8212; and some small details leaked out. This clearly did a couple of things.</p>
<p>First, it helps you get the product right. I know from my conversations around the Open Platform that what might seem a good idea to one or two people close to the product can provoke strong negative reactions when you float it past an informed outsider. When you&#8217;re inside the company you can easily think too much and lose the big picture, so it&#8217;s good to get an informed but independent view before you go public.</p>
<p>Second,  <a href="http://www.engadget.com/2009/09/11/video-mysterious-eigenharp-offers-blinkenlight-sitar-looks-chi/">creating a buzz</a> protects you from a bit of unforeseen negative reaction &#8212; if people are excited about your product and want it to succeed they will forgive some minor mistakes. You can see Eigenlabs achieved this with this low-fi video of <a href="http://www.youtube.com/watch?v=zcVqJh0qEMc">two guys playing the James Bond/Moby theme</a> on YouTube. Eigenlabs didn&#8217;t create this themselves, but they let &#8220;close friends&#8221; do it, and you can see the reaction in the comments underneath: &#8220;What the hell!! This is awesome&#8221;, &#8220;where can I buy one of these?&#8221;, &#8220;dear god this is epic&#8221; and so on.</p>
<p>The benefits of this are <a href="http://www.pcmag.com/article2/0,2817,2352751,00.asp">well explained by Lance Ulanoff at PCMag.com</a>. Here he compares the lacklustre launch of the Motorola Cliq with the hype from the January 2009 announcement (six months before the launch) of the Palm Pre:</p>
<p><span id="intellitxt"> </span></p>
<blockquote><p>Speaking of Palm, it has a good bit in common with Motorola right now. The Pre (and now Pixi) is its hail-Mary pass. If the new phone and WebOS platform fail, Palm will be done. Back in January, however,<!-- start ziffarticle //--> <a href="http://www.pcmag.com/article2/0,2817,2338482,00.asp">Palm ran the best product rollout event</a><!-- end ziffarticle //--> I have ever attended. It perfectly conveyed the company&#8217;s excitement and all that is good about the <!-- start ziffarticle //--><a href="http://www.pcmag.com/article2/0,2817,2338899,00.asp">Pre</a><!-- end ziffarticle //-->. I remember tweeting the event with mounting excitement. Today, I tweeted the Motorola event with mounting confusion.</p>
<p>What Palm did in January was give the Pre a good hard shove off the shore. Those waves of excitement produced a good six months of positive press. Eventually, Palm and the Pre hit some rough waters—a shipping delay, the slow delivery of the SDK and tiny list of apps that has yet to grow. Still, that first day set the tone.</p></blockquote>
<p>Then after the buzz is&#8230;</p>
<p><strong><a href="http://www.flickr.com/photos/pigsaw/3991138894/in/set-72157622537697462"><img class="alignleft" title="A select crowd gathers" src="http://farm4.static.flickr.com/3506/3991138894_313a90d946_m_d.jpg" alt="" width="240" height="160" /></a>2. Openness at launch</strong></p>
<p>There&#8217;s much that doesn&#8217;t need to be said about the launch event, but one thing that struck me about both the <a href="http://www.sonicstate.com/news/2009/10/06/eigenharp-officially-relased-first-look-video/">launch of the Eigenharp</a> and the <a href="http://www.guardian.co.uk/open-platform/blog/launch-presentation-kings-place-london">launch of the Open Platform</a> was a common ethos: the honesty and openness of the presenters, and the openness of the products.</p>
<p>At both events the &#8220;real users&#8221; (musicians/developers) were on-stage demonstrating their early adoption of the product and open to questions from the audience. These are the kinds of people who most marketing and PR people would lock in cupboards at a press event for fear they arrive without the regulation press-on smile and go off-message. But when a product&#8217;s success relies on innovation and creativity from its real users then it&#8217;s important that intended audience hears an authentic voice.</p>
<p>Also, there is an openness about both products. Aside from the very concept of opening up content and data, the Open Platform gives a lot of latitude to developers, <a href="http://www.badidea.co.uk/2009/03/guardians-open-platform-interface-looking-a-lot-better-than-the-new-york-times/">including (unusually) commercial use</a>. Meanwhile Eigenlabs are open-sourcing their software. Again, because each product&#8217;s success relies on people taking it in unexpected directions it&#8217;s important for there to be as many opportunities as possible for that to happen. Otherwise its success is stifled.</p>
<p>And then finally there&#8217;s&#8230;</p>
<p><strong>3. The follow-through</strong></p>
<p>Well, it&#8217;s early days for both products. The Open Platform API is still in beta, but you can see some developments now, such as the launch last week of the <a href="http://www.guardian.co.uk/open-platform/apps">Applications Gallery</a>. It&#8217;s even earlier for the Eigenharp. Company founder John Lambert was asked what well-known musicians he&#8217;d like to see using his creation and he said that a number of high profile people do have the instrument but that he cannot name any names yet. Clearly some really interesting things are going to happen some time soon.</p>
<p>If a product really does depend on the creativity of others then you can&#8217;t &#8212; and mustn&#8217;t &#8212; be too controlling of what those people do with it. (When I spoke to him John seemed slightly apprehensive about the quality of some of the things people might produce around the Eigenharp; I bet Matt McAlister didn&#8217;t anticipate <a href="http://www.guardian.co.uk/open-platform/dataviz-swear-word-tracker">a swearword tracker</a> coming out of the Open Platform.) But if you can&#8217;t control what others do, you can at least show some examples of what might be achieved, and that&#8217;s what the follow-through is doing with each of these products.</p>
<p><strong>1-2-3, easy as A-B-C</strong></p>
<p>Now if any marketing people have stumbled across this blog post I wouldn&#8217;t be surprised if they were horrified by the naivety of these observations &#8212; all of this might just be first grade A-B-C of marketing for them. But I find this fascinating. As a tech person it&#8217;s very easy for me to focus on my own role and not spend much time wondering what challenges are faced by my colleagues in other departments. Here are two products whose paths to success are unusually dependent on the unknown and whose stories will be well worth watching. By looking at the communication that&#8217;s gone on around them the significance of other people&#8217;s role becomes much more apparent. Technology success is about much more than successful technology.</p>
<br />Posted in Planning, Technology  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/niksilver.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/niksilver.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/niksilver.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/niksilver.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/niksilver.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/niksilver.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/niksilver.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/niksilver.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/niksilver.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/niksilver.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/niksilver.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/niksilver.wordpress.com/585/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/niksilver.wordpress.com/585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/niksilver.wordpress.com/585/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=585&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2009/10/07/the-eigenharp-openness-and-launching-something-really-new/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ed5f211191ad95ff564f9972490f40b1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">niksilver</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2561/3990391407_2f5e9be01f_d.jpg" medium="image">
			<media:title type="html">Eigenharp buttons and lights up close</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2514/3990393187_0c1be9337f_m_d.jpg" medium="image">
			<media:title type="html">A view from the breath pipe</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3506/3991138894_313a90d946_m_d.jpg" medium="image">
			<media:title type="html">A select crowd gathers</media:title>
		</media:content>
	</item>
		<item>
		<title>An ABC of R2: M is for milestones</title>
		<link>http://niksilver.com/2008/12/04/an-abc-of-r2-m-is-for-milestones/</link>
		<comments>http://niksilver.com/2008/12/04/an-abc-of-r2-m-is-for-milestones/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 09:30:06 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Guardian.co.uk]]></category>
		<category><![CDATA[Planning]]></category>

		<guid isPermaLink="false">http://niksilver.com/?p=213</guid>
		<description><![CDATA[&#8230;which are important even on an Agile project. Many people who read just a little about Agile development think there are no fixed commitments. It&#8217;s true that there is constant reprioritisation of work, but that generally operates at the task level, and there is still a need to set goals and stick to them. After &#8230; <a href="http://niksilver.com/2008/12/04/an-abc-of-r2-m-is-for-milestones/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=213&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-217" title="r2-alphabet-m" src="http://niksilver.files.wordpress.com/2008/11/r2-alphabet-m.jpg?w=750" alt=""   />&#8230;which are important even on an Agile project.</p>
<p>Many people who read just a little about Agile development think there are no fixed commitments. It&#8217;s true that there is constant reprioritisation of work, but that generally operates at the task level, and there is still a need to set goals and stick to them. After all, how else can you give the people who sign the cheques reassurance that you&#8217;ll deliver what they want?</p>
<p>So when we planned R2 we also set milestones marking when we would make the major launches of each section. Each milestone was stated very simply at the high level: launch the homepage, launch the Environment section, etc. These were the targets we put before our senior stakeholders, and they were what we were accountable for.</p>
<p>At a lower level we planned for each launch to include specific features: the Culture launch would include a special component to list the critics; the Sports launch would include a component showing the latest betting odds from Blue Square; and so on. It was these lower level details which were always up for reprioritisation. As long as we could deliver sufficient features to allow the launch of each section we could fairly be said to be hitting that milestone and satisfying our senior stakeholders.</p>
<br />Posted in Guardian.co.uk, Planning  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/niksilver.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/niksilver.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/niksilver.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/niksilver.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/niksilver.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/niksilver.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/niksilver.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/niksilver.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/niksilver.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/niksilver.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/niksilver.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/niksilver.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/niksilver.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/niksilver.wordpress.com/213/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=213&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2008/12/04/an-abc-of-r2-m-is-for-milestones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ed5f211191ad95ff564f9972490f40b1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">niksilver</media:title>
		</media:content>

		<media:content url="http://niksilver.files.wordpress.com/2008/11/r2-alphabet-m.jpg" medium="image">
			<media:title type="html">r2-alphabet-m</media:title>
		</media:content>
	</item>
		<item>
		<title>Guardian.co.uk: Steps to a smooth launch</title>
		<link>http://niksilver.com/2008/02/11/guardiancouk-steps-to-a-smooth-launch/</link>
		<comments>http://niksilver.com/2008/02/11/guardiancouk-steps-to-a-smooth-launch/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 09:59:57 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Guardian.co.uk]]></category>
		<category><![CDATA[Planning]]></category>

		<guid isPermaLink="false">http://niksilver.com/2008/02/11/guardiancouk-steps-to-a-smooth-launch/</guid>
		<description><![CDATA[At the weekend the Guardian website went through one of the most significant transformations in its history: we moved our news, politics and Observer content into the new design and new content management system, and we simultaneously launched a lot of new functionality, both internal and external. There&#8217;s an introduction and discussion on the more &#8230; <a href="http://niksilver.com/2008/02/11/guardiancouk-steps-to-a-smooth-launch/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=85&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>At the weekend the <a href="http://www.guardian.co.uk/">Guardian website</a> went through one of the most significant transformations in its history: we moved our news, politics and Observer content into the new design and new content management system, and we simultaneously launched a lot of new functionality, both internal and external.</p>
<p>There&#8217;s <a href="http://blogs.guardian.co.uk/inside/2008/02/changes_to_the_guardian_websit.html">an introduction and discussion</a> on the more public-facing aspects of this, kicked off by <a href="http://www.guardian.co.uk/profile/emilybell">Emily Bell</a>. For my part, I want to talk briefly about one of the most remarkable behind-the-scenes aspects of it: how we got the weekend launch to go so incredibly smoothly.</p>
<p>The secret is that the weekend&#8217;s work was only the final step after a great many before it, all of which were safely out of the way before the weekend&#8230;</p>
<p align="left"><strong><img align="right" alt="Guardian.co.uk global navigation bar" src="http://niksilver.files.wordpress.com/2008/02/global-nav2.jpg?w=750" /></strong><strong>1. Software release</strong></p>
<p>The actual software was released some weeks ago, in early January. This means that by the time of the launch it had been in use for some time, almost all the lines of code having been executed several hundred (and in some cases thousand) times already, in the production environment.</p>
<p>Even that January release was only an enhancement of previous releases which have been going out fairly quietly over the previous few months. The latest one included new internal tools, and updates to tools, to support some of the new features that are visible today.</p>
<p><strong><img align="left" alt="Guardian and Observer archive navigation" src="http://niksilver.files.wordpress.com/2008/02/guardian-and-observer-archive2.jpg?w=750" />2. Building the pages</strong></p>
<p>Meanwhile editors, subeditors and production staff have had to learn to use those tools. They&#8217;ve been using them to migrate a lot of the older content into the new-format pages. You might think that could be done by machine, but that&#8217;s not the case. Since we&#8217;re also changing our information architecture &#8212; adding a lot of semantic structure where previously there was only presentational information &#8212; it takes an informed human being to know how to convert an older page into its newer format. A real person is needed to understand what a piece of content is really about, and what it isn&#8217;t about but merely mentions in passing. We also need people to look at the new keyword pages (for example, the one on <a href="http://www.guardian.co.uk/uk/immigration">immigration and asylum</a>, or the page on <a href="http://www.guardian.co.uk/world/kosovo">Kosovo</a>), which are populated mostly automatically, and for them to highlight the most important content: the most important content won&#8217;t necessarily be the newest.</p>
<p>This work had been going on for many weeks before the weekend launch. The January software release brought in some tools refinements to help them tidy up final loose ends (and no doubt some more tidying will happen over the next couple of weeks).</p>
<p>You can see from this that it&#8217;s about much more than mere software. The software enables people to do the editorial work, and the editorial work has been going on for some considerable time. Everything they&#8217;ve done has also been tested and previewed, which allows them to see what our external users would see were it to go live. Again, this exercises the software fully, but only within the internal network, before it&#8217;s exposed to the outside world.</p>
<p><strong>3. Rehearsals</strong></p>
<p>The work for the weekend launch is mainly running a lot of database scripts to make various new URLs live and decommission old ones. The reason this is such a huge launch is that there&#8217;s over ten years&#8217; worth of news content to expose, as well as new functionality and designs.</p>
<p>We couldn&#8217;t trust the scripts to work first time (of course), so we spent a lot of time copying the production content into a safe environment, and rehearsing the process there, with real data. We needed to be sure not just it would work, but also how long it would take (considering any hardware differences), and change the scripts and process accordingly.</p>
<p><strong><img align="right" alt="Guardian.co.uk favicon" src="http://niksilver.files.wordpress.com/2008/02/guardian-favicon2.jpg?w=750" /></strong><strong>4. Launch</strong></p>
<p>Finally, after all the rehearsals, the real deal. The work to run the database scripts and raise the curtain on various features ran over Saturday and Sunday, but it was calm enough and organised enough that the team needed to work only slightly extended working days.</p>
<p>So the big launch was a culmination of a huge amount of effort, and the weekend work was after an awful lot of practice. There were a couple of sticky moments, but nothing the team couldn&#8217;t recover from in a few minutes. As one of the developers remarked towards the end of Sunday: &#8220;The fact that today&#8217;s been really tedious is a good thing.&#8221;</p>
<p>What we can see now includes</p>
<ul>
<li>New navigation at the top of most pages;</li>
<li><a href="http://www.guardian.co.uk/uk">UK</a> and <a href="http://www.guardian.co.uk/world">world news</a> sections;</li>
<li>A new layout for <a href="http://observer.guardian.co.uk/">the Observer homepage</a>;</li>
<li>A new <a href="http://www.guardian.co.uk/politics">politics site</a>;</li>
<li>An <a href="http://www.guardian.co.uk/audio">audio homepage</a>&#8230;</li>
<li>&#8230;with each piece of <a href="http://www.guardian.co.uk/news/audio/2008/feb/08/newsdesk.podcast">audio content identified as an individual resource with its own URL</a>;</li>
<li>An <a href="http://www.guardian.co.uk/index/subjects/a">A-Z index of subjects</a>&#8230;</li>
<li>&#8230;and <a href="http://www.guardian.co.uk/index/contributors/a">contributors</a>;</li>
<li>More meaningful related <a href="http://www.guardian.co.uk/world/2008/feb/10/uselections2008.usa1">links down the side of articles</a>;</li>
<li>An &#8220;article history&#8221; link for every article in the new format, in the name of transparency;</li>
<li>Page-by-page and section-by-section navigation around <a href="http://www.guardian.co.uk/theguardian">the latest edition of the Guardian</a> and <a href="http://www.guardian.co.uk/theobserver">Observer</a>;</li>
<li>Lots of new layouts for editors to choose from, like <a href="http://www.guardian.co.uk/world/september11">this</a> and <a href="http://www.guardian.co.uk/world/china">this</a> and <a href="http://www.guardian.co.uk/politics/police">this</a>;</li>
<li>And a new favicon.</li>
</ul>
<p><strong>What&#8217;s next&#8230;</strong></p>
<p>We&#8217;ll be ironing out a few things over the next few days, but everything&#8217;s gone to plan for now. And then, as Emily says, there&#8217;s still sport, arts, life and style, and education to do.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/niksilver.wordpress.com/85/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/niksilver.wordpress.com/85/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/niksilver.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/niksilver.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/niksilver.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/niksilver.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/niksilver.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/niksilver.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/niksilver.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/niksilver.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/niksilver.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/niksilver.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/niksilver.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/niksilver.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/niksilver.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/niksilver.wordpress.com/85/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=85&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2008/02/11/guardiancouk-steps-to-a-smooth-launch/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ed5f211191ad95ff564f9972490f40b1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">niksilver</media:title>
		</media:content>

		<media:content url="http://niksilver.files.wordpress.com/2008/02/global-nav2.jpg" medium="image">
			<media:title type="html">Guardian.co.uk global navigation bar</media:title>
		</media:content>

		<media:content url="http://niksilver.files.wordpress.com/2008/02/guardian-and-observer-archive2.jpg" medium="image">
			<media:title type="html">Guardian and Observer archive navigation</media:title>
		</media:content>

		<media:content url="http://niksilver.files.wordpress.com/2008/02/guardian-favicon2.jpg" medium="image">
			<media:title type="html">Guardian.co.uk favicon</media:title>
		</media:content>
	</item>
		<item>
		<title>The Times Online&#8217;s redesign, and a word about performance testing</title>
		<link>http://niksilver.com/2007/02/05/the-times-onlines-redesign-and-a-word-about-performance-testing/</link>
		<comments>http://niksilver.com/2007/02/05/the-times-onlines-redesign-and-a-word-about-performance-testing/#comments</comments>
		<pubDate>Mon, 05 Feb 2007 22:05:22 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Planning]]></category>

		<guid isPermaLink="false">http://niksilver.com/2007/02/05/the-times-onlines-redesign-and-a-word-about-performance-testing/</guid>
		<description><![CDATA[Late last night (UK time) the Times Online launched their new design, and jolly nice it is, too. It&#8217;s clean and spacious, and there&#8217;s an interview with the designers who are very excited about the introduction of lime green into the logo. Personally, I like the columnists&#8217; pictures beside their pull-quotes. That&#8217;s a nice touch. &#8230; <a href="http://niksilver.com/2007/02/05/the-times-onlines-redesign-and-a-word-about-performance-testing/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=35&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Late last night (UK time) the <a href="http://www.timesonline.co.uk">Times Online</a> launched their new design, and jolly nice it is, too. It&#8217;s clean and spacious, and there&#8217;s <a href="http://www.timesonline.co.uk/tol/comment/debate/feedback/article1184076.ece">an interview with the designers</a> who are very excited about the introduction of lime green into the logo. Personally, I like the columnists&#8217; pictures beside their pull-quotes. That&#8217;s a nice touch. You can also read about it from <a href="http://timesonline.co.uk/tol/comment/debate/feedback/article1184088.ece">the Editor in Chief, Anne Spackman</a>.</p>
<p>However, not everyone at the website will have been downing champagne as the moment the new site went live, because in the first few hours it was clearly having some performance issues. We&#8217;ve all had those problems some time in our careers (it&#8217;s what employers call &#8220;experience&#8221;), and it&#8217;s never pleasant. As I write it looks as though the Times Online might be getting back to normal, and no doubt by the time you read this the problems will all be ancient history. So while we give their techies some breathing space to get on with their jobs, here are three reasons why making performant software is not as easy as non-techies might think&#8230;</p>
<p><strong>1. Software design</strong></p>
<p>A lot of scalability solutions just have to be built in from the start. But you can&#8217;t do that unless you know what the bottlenecks are going to be. And you won&#8217;t know what the bottlenecks are going to be until you&#8217;ve built the software and tested it. So the best you can do from the start is make some good judgements and decide how you&#8217;d like to scale up the system if needed.</p>
<p>Broadly speaking you can talk of &#8220;horizontal scaling&#8221; and &#8220;vertical scaling&#8221;. The latter is when you can scale by keeping the same boxes but beefing them up &#8212; giving them more memory/CPU/etc. The former is where you can scale by keeping the same boxes end-to-end, but add more alongside them. Applications are usually designed for one or the other (deliberately or not) and it&#8217;s good to know which before you start.</p>
<p>Vertical scaling seems like an obvious solution generally, but if you&#8217;re at the limit of what your hardware will allow then you&#8217;re at the limit of your scalability. Meanwhile <a href="http://www.joelonsoftware.com/items/2006/08/01.html">a lot has been made</a> of <a href="http://labs.google.com/papers/mapreduce.html">Google&#8217;s MapReduce algorithm</a> which explicitly allowed parallelisation for the places it was applied &#8212; it allowed horizontal scaling, adding more machines. That&#8217;s very smart, but they&#8217;ll have needed to apply that up-front &#8212; retrofitting it would be very difficult.</p>
<p>You can also talk about scaling on a more logical level. For example, sometimes an application would do well to split into two distinct parts (keeping its data store separate from its logic, say) but if that was never considered when the application was built then it will be too late once the thing has been build &#8212; there will be too many inter-dependencies to untangle.</p>
<p>That can even happen on a smaller scale. It&#8217;s a cliche that every programming problem can be solved with one more level of indirection, but you can&#8217;t build in arbitrary levels of indirection at every available point &#8220;just in case&#8221;. At Guardian Unlimited we make good use of <a href="http://www.springframework.org/">the Spring framework</a> and its system of <a href="http://www.martinfowler.com/articles/injection.html">Inversion of Control</a>. It gives us more flexibility over our application layering, and one of our developers recently demonstrated to me a very elegant solution to one particular scaling problem using minimally-invasive code precisely because we&#8217;d adopted that IoC strategy &#8212; effectively another level of indirection. Unfortunately we can&#8217;t expect such opportunities every time.</p>
<p><img align="right" alt="How to scale down your production environment" title="How to scale down your production environment" src="http://niksilver.files.wordpress.com/2007/02/scaled-down-production-environment3.jpg?w=750" /><strong>2. Devising the tests</strong></p>
<p>Before performance testing, you&#8217;ve got to know what you&#8217;re actually testing. Saying &#8220;the performance of site&#8221; is too broad. There&#8217;s likely to be a world of difference between:</p>
<ul>
<li>Testing the code that pulls an article out of the database;</li>
<li>Testing the same code for 10,000 different articles in two minutes;</li>
<li>Testing 10,000 requests to the application server;</li>
<li>Testing 10,000 requests to the application server via the web server;</li>
<li>Testing the delivery of a page which includes many inter-linked components.</li>
</ul>
<p>Even testing one thing is not enough. It&#8217;s no good testing the front page of the website and then testing an article page, because in reality requests come simultaneously to the front page and many article pages. It&#8217;s all very well testing whether they can work smoothly alone &#8212; it&#8217;s whether they work together in practice that counts. This is integration testing. And in practice many, many combinations of things happen together in an integrated system. You&#8217;ve got to make a call on what will give the best indicators in the time available.</p>
<p>Let me give two examples of integration testing from Guardian Unlimited. Kevin Gould&#8217;s <a href="http://travel.guardian.co.uk/article/2007/feb/03/saturday.budget.restaurants">article on eating in Barcelona</a> is very easy to extract from the database &#8212; ask for the ID and get the content. But have a look down the side of the page and you&#8217;ll see a little slot that shows the tags associated with the article. In this case it&#8217;s about budget travel, Barcelona, and so on. That information is relatively expensive to generate. It involves cross referencing data about the article with data about our tags. So testing the article is fine, but only if we test it with the tags (and all the other things on the page) will we get half an idea about the performance in practice.</p>
<p>A second example takes us further in this direction. Sometimes you&#8217;ve got to test different operations together. When we were testing one version of the page generation sub-system internally we discovered that it slowed down considerably when journalists tried to launch their content. There was an interaction between reading from the database, updating the cache, and changing the content within the database. This problem was caught and resolved before anything went live, but we wouldn&#8217;t have found that if we hadn&#8217;t spent time dry-running the system with real people doing real work, and allowing time for corrections.</p>
<p><strong>3. Scaling down the production environment</strong></p>
<p>Once you&#8217;ve devised the tests, you&#8217;ll want to run them. Since performance testing is all about having adequate resources (CPU, memory, bandwidth, etc) then you really should run your tests in an exact replica of the production environment, because that&#8217;s the only environment which can show you how those resources work together. However, this is obviously going to be very expensive, and for all but the most cash-rich of organisations prohibitively so.</p>
<p>So you&#8217;ll want to make a scaled down version of the production environment. But that has its problems. Suppose your production environment has four web servers with two CPUs and six application servers with 2GB of RAM each. What&#8217;s the best way to cut that down? Cutting it down by a half might be okay, but if that&#8217;s still too costly then cutting it further is tricky. One and half application servers? Two application servers with different amounts of RAM or CPU?</p>
<p>None of these options will be a real &#8220;system in miniature&#8221;, so you&#8217;re going to have to compromise somewhere. It&#8217;s a very difficult game to play, and a lot of the time you&#8217;ve got to play to probabilities and judgement calls.</p>
<p><strong>And that&#8217;s only part of it</strong></p>
<p>So next time you fume at one of your favourite websites going slow, by all means delve deep into your dictionary of expletives, but do also bear in mind that producing a performant system is not as easy as you might think. Not only does it encompass all the judgement calls and hard thinking above (and usually judgement calls under pressure), but it also includes a whole lot of really low-level knowledge both from software developers and systems administrators. And then, finally, be thankful you&#8217;re not the one who has to fix it. To those people we are truly grateful.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/niksilver.wordpress.com/35/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/niksilver.wordpress.com/35/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/niksilver.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/niksilver.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/niksilver.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/niksilver.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/niksilver.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/niksilver.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/niksilver.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/niksilver.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/niksilver.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/niksilver.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/niksilver.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/niksilver.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/niksilver.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/niksilver.wordpress.com/35/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=35&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2007/02/05/the-times-onlines-redesign-and-a-word-about-performance-testing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ed5f211191ad95ff564f9972490f40b1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">niksilver</media:title>
		</media:content>

		<media:content url="http://niksilver.files.wordpress.com/2007/02/scaled-down-production-environment3.jpg" medium="image">
			<media:title type="html">How to scale down your production environment</media:title>
		</media:content>
	</item>
		<item>
		<title>Measuring development is useful, up to a point</title>
		<link>http://niksilver.com/2006/11/10/measuring-development-is-useful-up-to-a-point/</link>
		<comments>http://niksilver.com/2006/11/10/measuring-development-is-useful-up-to-a-point/#comments</comments>
		<pubDate>Fri, 10 Nov 2006 11:49:49 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Planning]]></category>

		<guid isPermaLink="false">http://niksilver.com/2006/11/10/measuring-development-is-useful-up-to-a-point/</guid>
		<description><![CDATA[There&#8217;s a post from Joel O&#8217;Software regarding measuring performance and productivity. He&#8217;s saying some good stuff about how these metrics don&#8217;t work, but I&#8217;d like to balance it with a few further words in favour of metrics generally. Individual productivity metrics don&#8217;t work, but some metrics are still useful, including team metrics which you might &#8230; <a href="http://niksilver.com/2006/11/10/measuring-development-is-useful-up-to-a-point/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=28&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a post from <a href="http://www.joelonsoftware.com/items/2006/11/10b.html">Joel O&#8217;Software regarding measuring performance</a> and productivity. He&#8217;s saying some good stuff about how these metrics don&#8217;t work, but I&#8217;d like to balance it with a few further words in favour of metrics generally. Individual productivity metrics don&#8217;t work, but some metrics are still useful, including team metrics which you might class as productivity-related.</p>
<ul>
<li>Individual productivity metrics don&#8217;t work.</li>
<li>Productivity-like metrics are still useful&#8230;</li>
<li>&#8230;but they don&#8217;t tell the whole story</li>
</ul>
<p><strong>Individual productivity metrics don&#8217;t work</strong></p>
<p>Joel O&#8217;S states that if you incentivise people by any system, there are always opportunities to game that system. My own experience here is in a previous company where we incentivised developers by how much client-billable time they clocked up. Unfortunately it meant that the developers flatly refused to do any work on our internal systems. We developed internal account codes to deal with that, but it just meant that our incentivisation scheme was broken as a result. <a href="http://www.joelonsoftware.com/news/20020715.html">Joel has other examples</a>, and <a href="http://www.martinfowler.com/bliki/CannotMeasureProductivity.html">Martin Fowler discusses the topic similarly</a>.</p>
<p><strong>Productivity-like metrics are still useful&#8230;</strong></p>
<p>Agile development people measure something called <a href="http://www.versionone.net/Resources/Velocity.asp">&#8220;velocity&#8221;</a>. It measures the amount of work delivered in an iteration, and as such might be called a measurement of productivity. But there are a couple of crucial differences to measuring things such as lines of code, or function points:</p>
<ul>
<li>Velocity is a measurement of the team, not an individual.</li>
<li>It&#8217;s used for future capacity planning, not rewarding past progress.</li>
</ul>
<p>Velocity can also be used in combination with looking at future deadlines to produce <a href="http://www.xprogramming.com/xpmag/BigVisibleCharts.htm#N190">burndown charts</a> and so allow you to make tactical adjustments accordingly. Furthermore, a dip in any of these numbers can highlight that something&#8217;s going a bit wrong and some action needs to be taken. But that tells you something about the process, not the individuals.</p>
<p>The kick-off point for <a href="http://www.joelonsoftware.com/items/2006/11/10b.html">Joel&#8217;s most recent essay</a> on the subject is a buzzword-ridden (and just clunkily-worded) cold-call e-mail from a consultant:</p>
<blockquote><p>Our team is conducting a benchmarking effort to gather an outside-in view on development performance metrics and best practice approaches to issues of process and organization from companies involved in a variety of software development (and systems integration).</p></blockquote>
<p>It&#8217;s a trifle unfair to criticise the consultant for looking at performance metrics, but one has to be careful about what they&#8217;re going to be used for.</p>
<p><strong>&#8230;but they don&#8217;t tell the whole story</strong></p>
<p>A confession. We track one particular metric here in the development team at Guardian Unlimited. And a few days ago we recorded our worst ever figure for this metric since we started measuring it. You could say we had our least productive month ever. You could. But were my management peers in GU unhappy? Was there retribution? No, there was not. In fact there was much popping of champagne corks here, because we all understand that progress isn&#8217;t measured by single numbers alone. The celebrations were due to the fact that, with great effort from writers, subs, commercial staff, sponsors, strategists and other technologists we had just launched</p>
<ul>
<li>a refreshed and reorganised <a href="http://arts.guardian.co.uk/">Arts site</a>,</li>
<li>a brand new <a href="http://blogs.guardian.co.uk/arts/">Arts blog</a>,</li>
<li>our first ever <a href="http://music.guardian.co.uk/">dedicated Music site</a></li>
<li>with its own <a href="http://blogs.guardian.co.uk/music/">Music blog</a>,</li>
<li>and an exclusive <a href="http://music.guardian.co.uk/video/page/0,,1937830,00.html">video</a>,</li>
<li>and we still made time to help our colleagues over at <a href="http://www.guardian.co.uk/guardianweekly/">Guardian Weekly</a> launch the new <a href="http://www.guardianabroad.co.uk/">Guardian Abroad site</a>.</li>
</ul>
<p>A bad month then? Not by a long shot. The numbers do tell us something. They tell me there was a lot of unexpected last-minute running around, and I&#8217;ve no doubt we can do things better the next time. It&#8217;s something I&#8217;ve got to address. But let&#8217;s not flog ourselves too much over it &#8212; success is about more than just numbers.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/niksilver.wordpress.com/28/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/niksilver.wordpress.com/28/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/niksilver.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/niksilver.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/niksilver.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/niksilver.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/niksilver.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/niksilver.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/niksilver.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/niksilver.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/niksilver.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/niksilver.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/niksilver.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/niksilver.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/niksilver.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/niksilver.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=niksilver.com&amp;blog=205744&amp;post=28&amp;subd=niksilver&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://niksilver.com/2006/11/10/measuring-development-is-useful-up-to-a-point/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ed5f211191ad95ff564f9972490f40b1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">niksilver</media:title>
		</media:content>
	</item>
	</channel>
</rss>
