<?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>Flexible Diamond &#187; pipeline</title>
	<atom:link href="http://blog.flexiblediamond.com/tag/pipeline/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.flexiblediamond.com</link>
	<description></description>
	<lastBuildDate>Wed, 02 Sep 2009 12:31:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Rocks into Gold</title>
		<link>http://blog.flexiblediamond.com/2008/12/rocks-into-gold/</link>
		<comments>http://blog.flexiblediamond.com/2008/12/rocks-into-gold/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 23:25:23 +0000</pubDate>
		<dc:creator>jamesk</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[pipeline]]></category>

		<guid isPermaLink="false">http://blog.hoardinghopes.com/?p=81</guid>
		<description><![CDATA[Clarke Ching &#8211; whose work I&#8217;ve been reading for a while, is preparing to publish a short parable for these troubled times. Get in touch with him via this post, and grab a copy, after all the more weapons in our armoury, the better chance we have of winning the inevitable battles.

  addthis_url  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://clarkeching.blogs.com/">Clarke Ching</a> &#8211; whose work I&#8217;ve been reading for a while, is preparing to publish a short parable for these troubled times. <a href="http://www.clarkeching.com/2008/12/rocks-into-gold-a-credit-crunch-parable-for-people-who-build-software-for-a-living.html">Get in touch with him via this post</a>, and grab a copy, after all the more weapons in our armoury, the better chance we have of winning the inevitable battles.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.flexiblediamond.com%2F2008%2F12%2Frocks-into-gold%2F';
  addthis_title  = 'Rocks+into+Gold';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.flexiblediamond.com/2008/12/rocks-into-gold/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I want problems, not solutions!</title>
		<link>http://blog.flexiblediamond.com/2008/08/i-want-problems-not-solutions/</link>
		<comments>http://blog.flexiblediamond.com/2008/08/i-want-problems-not-solutions/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 10:39:11 +0000</pubDate>
		<dc:creator>jamesk</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[pipeline]]></category>

		<guid isPermaLink="false">http://blog.hoardinghopes.com/?p=60</guid>
		<description><![CDATA[So, there I was, quietly listening into a conference call between a couple of clients on one side, and the account manager, project manager and me on the other.
We were going through a small project that we&#8217;d just completed for the purposes of getting sign-off. We had built in the functionality they wanted, using the [...]]]></description>
			<content:encoded><![CDATA[<p>So, there I was, quietly listening into a conference call between a couple of clients on one side, and the account manager, project manager and me on the other.</p>
<p>We were going through a small project that we&#8217;d just completed for the purposes of getting sign-off. We had built in the functionality they wanted, using the designs that they&#8217;d agreed to, so it was plain sailing.</p>
<p>And then the spanner.</p>
<p><span id="more-60"></span></p>
<p>Part of the project is a news article page with a sidebar listing other news articles. The client decided that he wanted to be able to filter these. &#8220;Could we add a couple of dropdowns listing the article categories?&#8221;.</p>
<p>That was the point when my anticipated reality and real reality diverged:<br />
- anticipated reality: AM says &#8220;Sure, we&#8217;ll have a think about the best way to implement filtering, and present a couple of options back to you&#8221;.<br />
- real reality: PM says &#8220;Right, we&#8217;re going to add a couple of dropdowns below the list, one for &#8216;projects&#8217; and one for &#8216;countries&#8217; and they&#8217;ll alter the article list you see&#8221;.</p>
<p>After the phone call, the PM asked me to go ahead with it. Eh? Shouldn&#8217;t we get a designer on the job &#8211; someone who knows about usability and interface design, perhaps?</p>
<p>I thought I&#8217;d won that little spat when the PM sloped off, but she got a tester who wants to be a designer to photoshop exactly what the AM had suggested on the phone. Bang went any hope of getting an expert in human computer interaction on the job.</p>
<p>The Account Manager&#8217;s defense is that we&#8217;re doing what the client wants. Well, I counter, that&#8217;s not good enough &#8211; despite <a href="http://blog.flexiblediamond.com/index.php/2008/05/a-grown-up-conversation/">my previous post</a> saying that we &#8220;pretend the client knows what they want&#8221;, we shouldn&#8217;t allow them to define the solution. Yes, sure that&#8217;s what the client thinks they want, but we are being paid to know better.</p>
<p>I may know what I want to eat when I go to a restaurant, but I still like to hear what the specials are, just in case there&#8217;s something even more exciting. I may even know how to cook the dish, but that doesn&#8217;t mean they&#8217;re going to allow me to roll my sleeves up and get to work in the kitchen. I am paying for the chef&#8217;s expertise, and for the satisfaction of delegating a whole bunch of thinking and labour so that I can enjoy the fruits.</p>
<p>Yes, the client should be right in there defining the problem. Then we should check it and redefine it, and again and again, until we&#8217;re absolutely clear about it. Then we should get an expert  (maybe a few, even, bringing different viewpoints together) to draw up a solution or two, and present those back to the client. &#8220;But it&#8217;s just a simple change&#8221; the AM cries, except that it isn&#8217;t, because it hasn&#8217;t been fully defined.</p>
<p>The wannabe-designer did a great mock-up, but couldn&#8217;t tell me how the functionality should work &#8211; there were different colours of text indicating selected states, but she didn&#8217;t know how that would work between the two dropdowns. In short, the solution wasn&#8217;t a solution. Meanwhile, the developers aren&#8217;t clear what they should be building, the project manager&#8217;s frustrated because she thinks that the project is now in development (well, she got us the designs, didn&#8217;t she?), and the account manager&#8217;s having to deal with an increasingly impatient client who thought the solution was defined over the phone.</p>
<p>If the client&#8217;s paying good money for our services, we should provide those services. That&#8217;s the clearest thing, isn&#8217;t it? We are digital experts: strategy, user experience, design, technical development. The client is an expert in marketing and sourcing quality work (I hope). One side should be bringing a problem, the other a set of solutions. Now, which is which?</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.flexiblediamond.com%2F2008%2F08%2Fi-want-problems-not-solutions%2F';
  addthis_title  = 'I+want+problems%2C+not+solutions%21';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div id="wherego_related"><h3>Readers who viewed this page also viewed:</h3><ul><li><a href="http://blog.flexiblediamond.com/about/">About Us</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://blog.flexiblediamond.com/2008/08/i-want-problems-not-solutions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Finding out what&#8217;s best &#8230;</title>
		<link>http://blog.flexiblediamond.com/2008/05/finding-out-whats-best/</link>
		<comments>http://blog.flexiblediamond.com/2008/05/finding-out-whats-best/#comments</comments>
		<pubDate>Wed, 14 May 2008 21:20:14 +0000</pubDate>
		<dc:creator>jamesk</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[pipeline]]></category>

		<guid isPermaLink="false">http://blog.hoardinghopes.com/?p=37</guid>
		<description><![CDATA[Just doing our best ain&#8217;t good enough &#8211; we need to be more savvy than that and work out precisely what&#8217;s the best thing to do first. So far, we&#8217;ve identified the conflict, and we now need to assess possible solutions.

If you haven&#8217;t read It&#8217;s not rocket science yet, please do first, as this article [...]]]></description>
			<content:encoded><![CDATA[<p>Just doing our best ain&#8217;t good enough &#8211; we need to be more savvy than that and work out precisely what&#8217;s the best thing to do first. So far, <a href="http://blog.hoardinghopes.com/index.php/2008/05/an-evaporating-conflict-cloud/">we&#8217;ve identified the conflict</a>, and we now need to assess possible solutions.</p>
<p><span id="more-37"></span></p>
<p>If you haven&#8217;t read <a href="http://blog.hoardinghopes.com/index.php/2008/05/its-not-rocket-science/"><em>It&#8217;s not rocket science</em></a> yet, please do first, as this article is a continuation of that theme.</p>
<p>I&#8217;ve said that key to a successful project is not just having everyone involved do their best, but having them work out what is the best thing to do, and then do their best at that. Anything else is at best a waste of effort, and at worst will doom a project.</p>
<p>I&#8217;ve also said that a sucessful project, just as any other system, needs a systemic view, rather than a bunch of local team views (new business, project management, creatives, developers, etc.).</p>
<p>So, how on earth do we go about finding out what&#8217;s best from a systemic perspective? A good place to start may be looking at some of the gripes that sit uncomfortably between teams involved in a project.</p>
<p>For example: </p>
<p><em>Project Manager </em>(PM): developers&#8217; estimates are always wrong.<br />
<em>Developer</em>: PMs treat our estimates as promises, and thus can&#8217;t handle it when they turn out to be inaccurate.</p>
<p>Let&#8217;s think about lines on a graph: x axis denotes time; y axis denotes understanding. At the very start of the project, my understanding of what&#8217;s involved is minimal. At the end of the project, I know all there is to know about it (ah, the beauty of hindsight!). Between those two points, the line rises in a sloping curve, with most altitude gained in the first half of the project.</p>
<p><a href='http://blog.hoardinghopes.com/wp-content/uploads/2008/05/time_vs_understanding.png'><img src="http://blog.hoardinghopes.com/wp-content/uploads/2008/05/time_vs_understanding.png" alt="" title="Understanding increasing over time" class="alignnone size-full wp-image-46" /></a></p>
<p>Where does estimation take place? Early on in the project, where understanding is incomplete (often requirements are incomplete too). </p>
<p><a href='http://blog.hoardinghopes.com/wp-content/uploads/2008/05/time_vs_understanding_vs_estimate.png'><img src="http://blog.hoardinghopes.com/wp-content/uploads/2008/05/time_vs_understanding_vs_estimate.png" alt="We estimate before we fully understand the project" title="Understanding over time" class="alignnone size-full wp-image-47" /></a></p>
<p>And that&#8217;s only the first problem. Here&#8217;s a second: when we estimate towards the start of a project for the length of a project, we&#8217;re looking far ahead into the future. The further we peer, the poorer our seeing, and the harder it is to a provide realistic estimate.</p>
<p><a href='http://blog.hoardinghopes.com/wp-content/uploads/2008/05/effect_of_change_on_estimates.png'><img src="http://blog.hoardinghopes.com/wp-content/uploads/2008/05/effect_of_change_on_estimates.png" alt="" title="How change breaks estimates" class="alignnone size-full wp-image-49" /></a></p>
<p>Estimating a project from the start requires long-distance lenses, so we may pad with a buffer because that protects us slightly. But, as the project progresses, problems arise, change requests come through, and the specification that we&#8217;ve been working from changes (or it doesn&#8217;t, even though the functionality does, but that&#8217;s another problem). This is how reality departs from our estimates. Towards the end of the project, we&#8217;re dealing with bugs that we couldn&#8217;t foresee and test results have come in, which frequently mean lots of change requests now that the client&#8217;s seen the proposed release version.</p>
<p>Two problems: estimating when our knowledge about the project is less than complete; changes arising that throw the project off schedule. Now what could solve them?</p>
<p>We want our estimates to be more accurate, so they can be considered commitments; and we want to be able to handle changes and problems that arise.</p>
<p>Imagine that, as a developer, you were asked each morning how long it would take to perform the single task you were about to tackle. Your response would be in hours, and probably more or less accurate. Imagine now, that you were given the whole list of tasks up front and asked to estimate on them &#8211; the answer would be in days, and a lot less accurate.</p>
<p>Firstly, say it takes 10 hours to complete a task, and you&#8217;re 10% out: it takes 11 hours. We&#8217;ve lost an hour. Say it takes 10 days, with the same margin of error, and it&#8217;s taken 11 days. Say it takes 100 days, and it&#8217;s taken 110 days. Thus the same margin of error, when affecting differing timescales, has very different ramifications. And just in case you think I&#8217;m being unfair by swapping from hours to days: if you think something will take one hour and I think it&#8217;ll take two, we have room for a discussion &#8211; the difference is clear; if you think something will take 30 hours and I think it&#8217;ll take 31, it&#8217;s a lot harder to explain the difference and decide which is a better estimate.</p>
<p>If we can make our estimates more often and more short-sighted, rather than a single one tackling the whole project, we stand a much better chance of getting the estimates right, we can adjust them based on recent learnings, and we can incorporate changes/problems as they arise.</p>
<p>That may resolve the conflict of PMs wanting commitments and developers not having concrete specs to work from (with no changes, ever ever). Whaddya think?</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.flexiblediamond.com%2F2008%2F05%2Ffinding-out-whats-best%2F';
  addthis_title  = 'Finding+out+what%26%238217%3Bs+best+%26%238230%3B';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.flexiblediamond.com/2008/05/finding-out-whats-best/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>It&#8217;s not rocket science</title>
		<link>http://blog.flexiblediamond.com/2008/05/its-not-rocket-science/</link>
		<comments>http://blog.flexiblediamond.com/2008/05/its-not-rocket-science/#comments</comments>
		<pubDate>Fri, 09 May 2008 12:21:42 +0000</pubDate>
		<dc:creator>jamesk</dc:creator>
				<category><![CDATA[Stuff]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[pipeline]]></category>

		<guid isPermaLink="false">http://blog.hoardinghopes.com/?p=32</guid>
		<description><![CDATA[How is it that people work hard for long hours, and yet projects fail? Why do project debriefs become bitter tales of one team thwarting another? How can we be doing our best, and yet see it fall apart so spectacularly?


We now know how some of the mismeasure, frustration, and sometimes despair arises as we [...]]]></description>
			<content:encoded><![CDATA[<p>How is it that people work hard for long hours, and yet projects fail? Why do project debriefs become bitter tales of one team thwarting another? How can we be doing our best, and yet see it fall apart so spectacularly?</p>
<p><span id="more-32"></span></p>
<blockquote><p>
We now know how some of the mismeasure, frustration, and sometimes despair arises as we try to manage that relatively recent invention; the serial process â€“ the manufacturing process.  We recognize, often intuitively, that we are trying to optimize according to some reductionist/local optima approach but that we are actually bound by the process dependency and variation of our system.  But what does it mean to optimize?  Surely this means to do our very best.  In fact, for everyone to do their very best. (From <a href="http://www.dbrmfg.co.nz/Bottom%20Line%20People.htm">Dr K. J. Youngman&#8217;s website</a>.)
</p></blockquote>
<p>In software development, we have a virtual shopfloor &#8211; a cyber pipeline &#8211; through which all work flows. If we all &#8220;do our best&#8221;, the pipe soon gets blocked with incoming work (if the account management/new business teams are any good) and the production teams don&#8217;t have the room they need to give each project the time it deserves; the creative team never fully hands off designs to the developers, as they always have one final tweak to make (after all, as they see their ideas realised, so they gain more ideas about them).</p>
<p><strong>Organising the pipeline</strong><br />
Given that a chain is only as strong as its weakest link &#8211; that a group of boy scouts can only walk in single-file as fast as its slowest scout &#8211; any production process can only move as quickly as its slowest part.</p>
<p>If the new business team is fantastic, and concentrate on doing their job to the best of their ability, but define &#8220;best&#8221; purely in terms local to them (i.e. &#8220;I&#8217;m doing my best when I bring in most new business&#8221;), they will soon swamp the next team in the pipeline. If creatives never fully hand off their work, the next team can never really get started on it. </p>
<p><strong>A brief detour to look at production problems</strong><br />
I&#8217;ve recently witnessed a massive project screw up, based on obstacles arising that surely were avoidable. A quick list of the major problems:</p>
<ul>
<li>Lack of clarity over what was to be delivered from the outset</li>
<li>Changing requirements throughout the project</li>
<li>Deadlines imposed from above</li>
<li>Frequent personnel changes</li>
<li>Deceit between different parts of the team over progress</li>
<li>Command/control behaviour</li>
</ul>
<p><strong>Wow, where did all those problems come from?</strong></p>
<p>Well &#8211; first among equals &#8211; the role of the new business and account management teams in bringing new projects into the company is where the rot starts (there are plenty of other places too, but this is the most common, possibly only because it&#8217;s first in the line). Their job was to bring this new client on board, and make them so happy with us that they would line up lots of projects as quickly as possible. And they did this job extremely well. </p>
<p>The team did their best, <em>within the limited perspective of their role</em>. But if we judge their work from the point of view of the production system as a whole, we see a markedly different story. One in which their contribution to the project&#8217;s failure is clear. Their priority was to ensure that the project delivered was exactly what the client wanted, so they changed requirements and delivery dates throughout the schedule. Nothing signed off was sacrosanct, and work had to be re-done on a regular basis, without changing delivery deadlines.</p>
<p>Although I know this sounds like finger-pointing, it&#8217;s not, I promise. I can do this same exercise with every team that played a part in the project, and each and every time doing &#8220;their best&#8221; will end up contributing to failure.</p>
<p>To prove that point: the development team also did their best, by demanding water-tight specifications. When they finally got them, the deadline was so tight that they worked extremely long hours (like 16 hour days for more than 7 weeks); they coded until they could no longer speak. They were demons!</p>
<p>But they failed to deliver. They blamed uncontrolled change and lack of specs, and late sign-off of designs. They tried to cover up basic mistakes in the bespoke framework (like <em>writing</em> a bespoke framework &#8211; anyone heard of <a href="http://www.puremvc.org">PureMVC</a>?), and didn&#8217;t test their code as they went.</p>
<p>And again: the project manager tried his best, within the definition of doing his job according to those who employed him. <em>However, nothing was delivered on time; less than a quarter of the project was actually delivered; it was buggy and immensely expensive. It had failed on time, cost, and quality counts</em>. And yet, I&#8217;m sure he would say that he did his best.</p>
<p><strong>So, what&#8217;s going on?</strong><br />
Consider how we work: we are social animals that collaborate for a common good. Our social network, however, is fluid in terms of strong and weak links and thus we have many strategies for dealing with changes within the network &#8211; we can help each other, we can withhold support from each other, we can circumvent weaker members, we can break links and make new ones. Thus, although there is huge dependency in a social network, it is loosely-coupled and dynamic &#8211; everyone cooperates, with a few subordinating themselves to others at any one time*.</p>
<p>* by &#8220;subordinate&#8221;, I mean work to the betterment of others rather than oneself, put others&#8217; needs and desires above one&#8217;s own. </p>
<p>Another form of experience also exists, though &#8211; our personal experience as individuals: here, we don&#8217;t need to subordinate or coordinate; we are free to improve and work to the best of our ability independently of those around us**.</p>
<p>** putting our own needs/desires first, I&#8217;ll be calling &#8220;maximising&#8221; later, and in regard to process, I mean promoting that particular piece of the process.</p>
<p>Now, the industrial mode: well, you might think that it&#8217;s a network, especially as workplaces have personal networks, but actually it&#8217;s far more linear: there are few if any alternative routes through the process (get new business -> specify the work to be done -> design -> architect -> implement -> test -> deploy -> review, for my industry). There is far greater dependency between the parts of the process &#8211; we can&#8217;t just ignore or cut out design because the designer&#8217;s on holiday. Finally, there is always one part of the process that is weaker or slower than the others. Improving the workflow of the other parts won&#8217;t speed up the total throughput because of that bottleneck.</p>
<p>In an industrialised line the only place that maximising adds value is in the bottleneck, and everything else has to subordinate to that bottleneck, which experience is almost the exact opposite of the social and individual experience, where the bottleneck can be avoided. Does that spell doom for our chances of success? Thankfully not, but we do need to change the way we work. </p>
<p>There is much within an organisation that contributes to a silo effect: there&#8217;s me, my team, my division, managers, department managers, division managers &#8211; all of which put an individual or group focus on working practices. But this can mask the strong serial dependency of the process pipeline. We need to view the system as a system, not as a set of silo&#8217;d groups. However, many of our measurements revolve around localised views of parts of the system, including our individual definitions of &#8220;doing our best&#8221; .</p>
<p>If each team involved in a project does its best, the project still runs the risk of failing (sometimes monumentally), so what should we do? <em>Find out what is the best thing to do, and then do that to the best of our ability</em>.</p>
<p>More anon.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.flexiblediamond.com%2F2008%2F05%2Fits-not-rocket-science%2F';
  addthis_title  = 'It%26%238217%3Bs+not+rocket+science';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.flexiblediamond.com/2008/05/its-not-rocket-science/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
