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

<channel>
	<title>Digital Dim Sum &#187; philosophy</title>
	<atom:link href="http://www.digitaldimsum.co.uk/category/philosophy/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.digitaldimsum.co.uk</link>
	<description>Bite sized info snacks for the digital generation</description>
	<lastBuildDate>Thu, 03 Feb 2011 22:16:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Don&#8217;t push requirements &#8211; pull information</title>
		<link>http://www.digitaldimsum.co.uk/2008/09/20/dont-push-requirements-pull-information/</link>
		<comments>http://www.digitaldimsum.co.uk/2008/09/20/dont-push-requirements-pull-information/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 00:38:34 +0000</pubDate>
		<dc:creator>jonny</dc:creator>
				<category><![CDATA[build]]></category>
		<category><![CDATA[consulting]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://www.digitaldimsum.co.uk/?p=47</guid>
		<description><![CDATA[<p>I always struggled to see how what <a href="http://dannorth.net/2008/06/learning-to-lean">Lean teaches us</a> about <a title="Richard Durnall on pull systems" href="http://www.richarddurnall.com/?p=15">pull systems</a> can be applied to software development processes. That was until I had an &#8220;Aha!&#8221; moment a little while ago helping a client apply lean and agile principles to their delivery process.</p>
<h3>The big fat lie</h3>
<p>I understand how queuing theory can help identify and reduce bottlenecks in processes and have used <a href="http://epistemologic.com/2007/10/02/lean-software-development-how-to-find-bottlenecks-metrics-that-matter/">finger-charts </a>and <a href="http://www.infoq.com/articles/hiranabe-lean-agile-kanban">kanban-boards</a> to do this for a while, but I still find calling this a &#8220;pull system&#8221; to be slightly disingenuous. All that&#8217;s happening is that more &#8220;stuff&#8221; is being pushed based on a trigger when certain buckets get too low. This reminds me of my annoyance with early technologies on the web that were touted as being &#8220;push&#8221; but were really just &#8220;repetitive-pull&#8221; (but not in a good way). I&#8217;ve never seen a software organization where the developers have said to the business or product people &#8220;we&#8217;ve got nothing to do, can you think up some new projects or features for us please?&#8221;.</p>
<p><!--more--></p>
<p>My objection was always that even though looking at a software delivery process as a pull system was vaguely useful for debugging some process bottlenecks, it was a fundamentally incorrect way of characterizing what was really going on. It&#8217;s just not true that features or stories are <em>pulled </em>down through the <a href="http://studios.thoughtworks.com/2008/4/30/deployment-pipelines-revolutionizing-release-management">analyze-develop-test-build-deploy-not-necessarily-in-that-order</a> <a href="http://www.juliansimpson.org/2007/07/pipeline-of-doom.html">pipeline</a> by the customer or even by a release manager; they are pushed down that pipe by a product or project manager and the pushing often requires a healthy dose of lubricant.</p>
<h3>Pushing string</h3>
<p>My moment of realization came in a discussion about process over-runs in the definition or analysis phase of a project. The team recognized that requirements weren&#8217;t being communicated clearly to the developers and were planning to spend longer on the analysis and definition phase to make the requirement documents longer and clearer. Their diagnosis was correct but their prescription for how to fix the problem would just exacerbate the pain. If people aren&#8217;t finding a document useful the answer isn&#8217;t to make the document longer!</p>
<p>This situation reminded me of the idea of <a href="http://en.wikipedia.org/wiki/Pushing_on_a_string_(phrase)">pushing string</a>. Attempting to push a single-page document is hard (it bends and wobbles), so adding more pages should increase the weight, or &#8220;<a href="http://www.wordspy.com/words/thudfactor.asp">thud-factor</a>&#8220;, of the document making it easier to push &#8230; surely there&#8217;s nothing wrong with this logic!</p>
<h3>Empowered to pull</h3>
<p>The solution I suggested is to invert the process, empower the developers, and get them to <em>pull</em> the information they need. This fits with the general concept of &#8220;people-centered processes&#8221; that attracts me to lean and agile approaches (remember <a href="http://www.richarddurnall.com/?p=45">a bad process will beat a good person every time</a>). If you allow your development teams to take responsibility for the product and features they&#8217;re building they will then pull the information they need at the times they need.</p>
<p>So it may still be a push system for features, but the flow of information is now driven by a pull system. This flip in direction allows all the benefits of just-in-time production and saves the problems associated with maintaining a large inventory. If you write all the details of a feature too far in advance it is <span style="text-decoration: line-through;">certain</span> highly likely that much of that work will be wasted since the details will change or the context will shift. Documents have a shelf-life just like any other organic product and that shelf-life is much shorter than you&#8217;d like to think.</p>
]]></description>
		<wfw:commentRss>http://www.digitaldimsum.co.uk/2008/09/20/dont-push-requirements-pull-information/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Robot rights? My foot!</title>
		<link>http://www.digitaldimsum.co.uk/2008/05/21/robot-rights-my-foot/</link>
		<comments>http://www.digitaldimsum.co.uk/2008/05/21/robot-rights-my-foot/#comments</comments>
		<pubDate>Wed, 21 May 2008 01:21:54 +0000</pubDate>
		<dc:creator>jonny</dc:creator>
				<category><![CDATA[philosophy]]></category>
		<category><![CDATA[robots]]></category>

		<guid isPermaLink="false">http://www.digitaldimsum.co.uk/?p=41</guid>
		<description><![CDATA[<p>San Francisco is a wonderful place &#8211; I ended up having an interesting discussion last night with a self-styled &#8220;geek-at-large&#8221; about robots, ethics and unix while hanging out at <a href="http://www.inveneo.org">a not-for-profit who are improving the world one wi-fi network at a time</a>.</p>
<p>The robot maker&#8217;s argument was that robots don&#8217;t have to be super intelligent to carry out some pretty useful, robotic, tasks. He was suggesting that there&#8217;s a blind-alley in robotic research premised on being able to map and track everything in your environment in order to move and interact effectively. His argument was that instead you just needed to be able to identify a goal to move towards and be able to avoid collisions. That is a much simpler goal than understanding your whole environment.</p>
<p><!--more--><!--more-->This leads to a different attitude to creating robots: have multiple robots, each good at doing one thing and then find a way to co-ordinate them. This is very much the Unix way as opposed to the Windows way.</p>
<p>From a feasibility and an affordability point of view this simplistic approach is much more achievable than the all singing all dancing uber computer often depicted in futuristic films. But his favored (and more philosophical) argument for this simplistic approach was that it would verge on the unethical to build a quasi-sentient being and then just ask it to fold your laundry every day. This is the <a href="http://en.wikipedia.org/wiki/Marvin_the_Paranoid_Android">Marvin-esque</a> argument that the more human-like you make a robot the more you have to start affording it human-like rights.</p>
<p>Despite being interesting this line of argument instinctively felt wrong to most of us. Someone suggested the comparison with dogs, but it soon became clear that we feel animals have some level of rights too, whereas you don&#8217;t expect your computer or phone to complain when you keep asking it to check your email every few minutes. While there is clearly a <strong>quantitative</strong> difference between the rights of a human and a dog, there seems to be a <strong>qualitative</strong> difference between those of an animal and the rights we&#8217;d afford to a robot (however intelligent).</p>
<p>So I interjected and asked the simple question: <em></em></p>
<blockquote><p><em>Does my hand have rights?</em></p></blockquote>
<p>I ask my hand and my feet to do things all day (just like my computer) and I don&#8217;t expect them to complain or tell me they&#8217;re busy. This seemed to clarify the distinction for me that I&#8217;d been struggling to find.</p>
<p>The difference in my mind is that humans and other animals have their own goals that they are responsible for selecting (within some nature and nurture constrained boundaries). Robots (and hands and feet) on the other hand (<span title="All Puns Intended">API</span>) are mere tools and don&#8217;t have separate goals or aspirations. This lack of goals and aspirations is the key differentiating factor that makes me feel comfortable not giving a robot freedom of speech / assembly / religion etc. I retain the absolute right to reformat my computer&#8217;s hard drive or swap it&#8217;s RAM without feeling any pangs of guilt.</p>
]]></description>
		<wfw:commentRss>http://www.digitaldimsum.co.uk/2008/05/21/robot-rights-my-foot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

