<?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>Valtech UK &#187; Agile Management</title>
	<atom:link href="http://blog.valtech.co.uk/category/agile-management/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.valtech.co.uk</link>
	<description>Aggregated works of Valtech UK consultants</description>
	<lastBuildDate>Mon, 30 Jan 2012 12:23:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Scaling agile teams – by features or by component?</title>
		<link>http://blog.valtech.co.uk/agile-management/scaling-agile-teams-%e2%80%93-by-features-or-by-component/</link>
		<comments>http://blog.valtech.co.uk/agile-management/scaling-agile-teams-%e2%80%93-by-features-or-by-component/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 16:44:15 +0000</pubDate>
		<dc:creator>David Draper</dc:creator>
				<category><![CDATA[Agile Management]]></category>
		<category><![CDATA[Scaling]]></category>

		<guid isPermaLink="false">http://www.agiledesign.co.uk/?p=338</guid>
		<description><![CDATA[Agile methods are of clear benefit while our projects are small enough to be delivered by a single small team responsible for the full life-cycle and incorporating all of the various necessary specialisms. As the project size increases we will eventually reach a state where we face a challenge since the team size becomes increasingly]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.valtech.co.uk%2Fagile-management%2Fscaling-agile-teams-%25e2%2580%2593-by-features-or-by-component%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.valtech.co.uk/agile-management/scaling-agile-teams-%e2%80%93-by-features-or-by-component/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.valtech.co.uk/agile-management/scaling-agile-teams-%e2%80%93-by-features-or-by-component/"  data-text="Scaling agile teams – by features or by component?" data-count="horizontal" data-via="valtech">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><p>Agile methods are of clear benefit while our projects are small enough to be delivered by a single small team responsible for the full life-cycle and incorporating all of the various necessary specialisms. As the project size increases we will eventually reach a state where we face a challenge since the team size becomes increasingly difficult to manage and we seek to provide internal structure through sub-teams. At this point we will typically need to establish the axis along which the team is split.<br />
<span id="more-338"></span></p>
<p><strong>Option 1: Component orientation</strong><br />
In a large systems it is common to find developers who align themselves to components. This presents a simple option of splitting the team along component lines. By doing this we create a need to split user-centric features into component features and subsequently re-combine and verify the end-to-end behaviour.</p>
<p>In this way we have benefited from natural affinity of developers to components at the cost of lead time. The benefits of this approach will depend on the degree of specialisation and the degree to which specialisation aligns with co-location; this ownership of components by location is common in large systems development organisations. A further drawback, however, is the balance of features to components, it is not uncommon to see feature prioritisation determined by availability of component teams in preference to value, increasing the degree of generalisation increases a teams flexibility to build the next most valuable feature independent of the impacted software component.</p>
<p><strong>Option 2: Discipline</strong><br />
By splitting a team by discipline we risk longer lead times and can easily risk further engraining waterfall like thinking such as stove-piping the organisation with a &#8220;throw over the wall&#8221; attitude. </p>
<p>However, all is not lost. Kanban systems have been shown to offer a model that recognises the existing flow of work while encouraging innovation to reduce lead time of features. Kanban systems have also been used successfully with teams of up to 50 people, considerably larger than the norm for Scrum or XP teams.</p>
<p><strong>Option 3: Location</strong><br />
Co-location is known to be a strong influencer of team effectiveness. With this in mind it would be naive to ignore location in a discussion of team forming. A co-located team would be expected to out-perform a dispersed team where all other aspects are equal. However, dispersed teams can be used to good effect in order to leverage benefits of feature teams. In this situation we should learn the lessons of those who have successfully built effective dispersed and distributed teams.</p>
<p><strong>Option 4: Feature</strong><br />
The preferred model for team structuring in most Agile methods is to orient teams around delivery of customer valued features. This model encourages increasing levels of generalisation according to the profile of the features being delivered by the team. While integration issues can still arise with feature teams the use of continuous integration will mitigate risks while feature selection can help to limit interaction between teams. Where the project size is very large or the problem domain very complex it is possible to orient feature teams around areas of the problem domain. This is what Craig Larman terms Requirement Areas. By allocating teams to requirement areas we support the team in developing their understanding of the problem space investing in specialisation on that axis in preference to specialising in a discipline or component.</p>
<p><strong>Choosing and Blending</strong><br />
In practice we will typically mix these models in a large multi-location team combining the benefits of co-location, feature orientation and component specialisation while trying to manage the limitations of each. By way of a practical example consider an embedded system distributed across the globe. We may choose to recognise the specialisation of the team that develops the low level board support packages; this team delivers low-level facilities to feature teams. We lean towards feature teams for the majority of user-feature development. However, for high volatility or high risk features we might choose to have co-located feature teams in the vicinity of our key customer groups. This focuses the agility of co-located teams where it adds the most value.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.valtech.co.uk/agile-management/scaling-agile-teams-%e2%80%93-by-features-or-by-component/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Driving out Uncertainty</title>
		<link>http://blog.valtech.co.uk/agile-management/driving-out-uncertainty-2/</link>
		<comments>http://blog.valtech.co.uk/agile-management/driving-out-uncertainty-2/#comments</comments>
		<pubDate>Mon, 23 May 2011 13:57:01 +0000</pubDate>
		<dc:creator>David Draper</dc:creator>
				<category><![CDATA[Agile Management]]></category>
		<category><![CDATA[cone of uncertainty]]></category>

		<guid isPermaLink="false">http://www.agiledesign.co.uk/?p=269</guid>
		<description><![CDATA[Agile practice irrespective of flavour (Scrum Kanban XP …)can often be reduced to: Work in small batches Deliver often Build the most valuable chunk first And it’s the “value” bit that can get us in trouble. How do we determine which is the most valuable bit? Particularly early on in a project we need to]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.valtech.co.uk%2Fagile-management%2Fdriving-out-uncertainty-2%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.valtech.co.uk/agile-management/driving-out-uncertainty-2/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.valtech.co.uk/agile-management/driving-out-uncertainty-2/"  data-text="Driving out Uncertainty" data-count="horizontal" data-via="valtech">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><div>
<p>Agile practice irrespective of flavour (Scrum Kanban XP …)can often be reduced to:</p>
<ul>
<li> Work in small batches</li>
<li> Deliver often</li>
<li> Build the most valuable chunk first</li>
</ul>
<p>And it’s the “value” bit that can get us in trouble.</p>
<p>How do we determine which is the most valuable bit? Particularly early on in a project we need to be careful about how we prioritise. Do we just get a bunch of business folk to fight for their favourite features or do we have some hard won lessons to apply from many years of technology project management?</p>
<p>One of the first projects I was responsible for was fixed scope and fixed price. The customer was documenting requirements to be handed into the “agile” development team who built and tested software prior to a traditional system test cycle. Not very agile!</p>
<p>However, we benefitted greatly from the rhythm or scrum, the rigour of agile engineering practice and the predictability the the planning and tracking approach provided.</p>
<p>Most significantly, by taking the Product Owner role I was able to prioritise according to my own definition of value. Put yourself in my seat, you work for a software consultancy, it’s your first project and it is fixed everything, what makes one feature more valuable than another? The answer is risk. When everything is fixed value is in the reduction of risk. In fact I combined prioritisation according to risk with other engineering considerations such as profile of the work to bring the project to a successful conclusion.</p>
<p>So what about other interpretations of value? I’ve been helping a client with a project initiation over the past couple of weeks and found myself using the word uncertainty a great deal. It seems that driving out uncertainty held a great deal of value in that context. In fact, when kicking of a project we look for information generation first, then seek to identify key risk areas and mitigation strategies such as finding new stakeholders or driving out technical risk with proof of concept work.</p>
<p>Uncertainty isn’t new; I often use the “cone of uncertainty” model to express the value of reducing uncertainty. As <a href="http://en.wikipedia.org/wiki/Cone_of_Uncertainty">wikipedia</a> will tell you, this model is primarily concerned with project estimation. At the beginning of a project, skilled estimators may have a factor of 4 error in either direction. Over time error should rapidly reduce as information arrives and the project progresses. This dynamic is known as the Cone of Uncertainty and is the inner line on the graph.</p>
<p><a href="http://blogs.sun.com/fifors/resource/cone-of-uncertainty.png"><img style="margin: 4px; border: 1px solid black;" src="http://blogs.sun.com/fifors/resource/cone-of-uncertainty.png" border="1" alt="Cone-Of-Uncertainty" hspace="4" vspace="4" /></a></p>
<p>The outer line is the cloud of uncertainty. This is what could happen if uncertainty is not driven out of the project. Right to near the end of the project there is significant error in estimating the size due to missing information.</p>
<p>When we execute agile projects lets not forget the value of driving out uncertainty. This isn’t an excuse to analyse everything to death. Our goal is to recognise where the uncertainty that matters is hiding. Those innocuous features that come along and prove the architecture is flawed are a prime example. We must do enough to understand the risk we are carrying while being sensitive to the cost of gathering detailed information pertaining to speculative requirements.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.valtech.co.uk/agile-management/driving-out-uncertainty-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Managing UX on an Agile project.</title>
		<link>http://blog.valtech.co.uk/agile/managing-ux-on-an-agile-project/</link>
		<comments>http://blog.valtech.co.uk/agile/managing-ux-on-an-agile-project/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 09:07:03 +0000</pubDate>
		<dc:creator>Kevin Murray</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Agile Management]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[Valtech]]></category>

		<guid isPermaLink="false">http://blog.valtech.co.uk/?p=478</guid>
		<description><![CDATA[Tweet I feel enthused to blog about my current project, which is the first project I&#8217;ve ran where we have a dedicated UX expert on the team. For those of you who are not aware of the term UX, it stands for User eXperience. The UX expert will work closely with the customer and business [...]]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.valtech.co.uk%2Fagile%2Fmanaging-ux-on-an-agile-project%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.valtech.co.uk/agile/managing-ux-on-an-agile-project/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.valtech.co.uk/agile/managing-ux-on-an-agile-project/"  data-text="Managing UX on an Agile project." data-count="horizontal" data-via="valtech">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><p>I feel enthused to blog about my current project, which is the first project I&#8217;ve ran where we have a dedicated UX expert on the team. For those of you who are not aware of the term UX, it stands for User eXperience. The UX expert will work closely with the customer and business analysts, defining user journeys throughout the site/system, producing the wireframes that feed into the designs and ultimately the UI development.<span id="more-478"></span></p>
<p>Consciously or even sub consciously we all appreciate a website with a good UX and can get really frustrated by poor UX.</p>
<p>While this is the first time I have had a specific UX expert in my delivery team, I have been aware of other Valtech projects delivering UX, over the last couple of years, particularly in the the Agency space for our large retail clients.</p>
<p>Now I wasn&#8217;t exactly sceptical, but didn&#8217;t fully appreciate just what the UX role entailed and what it could bring to the project. I will be honest and admit to being slightly derogatory about what a UX consultant could offer, and I may have possibly labelled it as &#8216;colouring in&#8217;. My bad <img src='http://blog.valtech.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>My ignorance was however, strongly influenced by the types of projects I had previously delivered. A lot of my previous experience has been delivering large government systems, where the kudos was always focused on the back-end technologies and not the front-end. Also a good user experience was never a non functional requirement.</p>
<p>The UI design and UX for these large government CMS systems is on the whole quite poor, overly complex and unintuitive. In some instances we may have worked with graphic designers, but most of the time the UI was being designed the customers Business Analysts, where only basic principles of a quickly outdated style guide are to be adhered to. On more than one instance, I was running a dev team which inherited reams of up front, waterfall, external design documents. These had been created using Visio and MSPaint, which led to the designing of near impossible components and cross-field validation. Chaos would generally ensue in System test and UAT when the final screens didn&#8217;t look exactly like the signed off Visio and MS Paint designs.</p>
<p>On my current project, the UX expert has made an instant impact. Working with the lead BA, it was obvious that the business owner was engaged and bought in to this way of working. High quality interactive wireframes, are produced in Photoshop with key animation sequences overlaid in PowerPoint. Great care is taken understanding different personas and minimum marketable features. The customer gets near instant feedback of how they want the site to be used.</p>
<p>I sort of expected the benefits that the UX expert would bring to the analysis and design, what I didn&#8217;t predict was how important the UX expert has become to the developers. Collaboration between the UX and devs was really visible from the outset and was recognised as one of the most significant positives at our recent retrospective. Key to this success was the way the UX expert researches the technology options, ensuring the design can be achieved using CSS or identifying the necessary JQuery plugin. Non standard design choices are always reviewed with the development team prior to sprit planning to ensure no near impossible designs are agreed with the customer.</p>
<p>Our Agile processes enable this collaborative way of working. We are all collocated provide our updates at a single, large but efficient daily stand up meeting. The devs and UX expert are seeing each others updates, progress and blockers. The BA / UX team are working one or two sprints ahead of the developers, so no design artefacts are going stale in the backlog. We have also ensured that a UX peer review is part of the definition of done policy for the front end developers.</p>
<p>This way of working culminated in a really positive first demo, with great feedback from the business owner and sales director.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.valtech.co.uk/agile/managing-ux-on-an-agile-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Engineering: The problem with the production line</title>
		<link>http://blog.valtech.co.uk/agile/software-engineering-the-problem-with-the-production-line/</link>
		<comments>http://blog.valtech.co.uk/agile/software-engineering-the-problem-with-the-production-line/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 09:35:00 +0000</pubDate>
		<dc:creator>Sandro Mancuso</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Agile Management]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Is software engineering the best approach for developing software? Does it apply for the majority of the software projects or just a very few of them?Software Engineering was an answer for the perceived "software crisis", back in 1968, in the First NAT...]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.valtech.co.uk%2Fagile%2Fsoftware-engineering-the-problem-with-the-production-line%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.valtech.co.uk/agile/software-engineering-the-problem-with-the-production-line/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.valtech.co.uk/agile/software-engineering-the-problem-with-the-production-line/"  data-text="Software Engineering: The problem with the production line" data-count="horizontal" data-via="valtech">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><p>Is software engineering the best approach for developing software? Does it apply for the majority of the software projects or just a very few of them?</p>
<p>Software Engineering was an answer for the perceived &#8220;<a href="http://en.wikipedia.org/wiki/Software_crisis">software crisis</a>&#8220;, back in 1968, in the First NATO Software Engineering Conference and it was created to solve the problems of extremely large NATO and U.S. Department of Defence projects. In the majority of these projects, the hardware was still being designed and with no hardware to test, there was plenty of time to investigate requirements and write the software specifications. Hardware controlled by the software was generally worth billions of dollars like in the case of <a href="http://www.fastcompany.com/magazine/06/writestuff.html%20">space shuttle</a> and the <a href="http://en.wikipedia.org/wiki/Safeguard_Program">Safeguard Ballistic Missile Defence System</a>. People&#8217;s lives and national security were also at stake.<span id="more-388"></span></p>
<p>The <a title="IEEE Computer Society" href="http://en.wikipedia.org/wiki/IEEE_Computer_Society">IEEE Computer Society</a>&#8216;s <em><a title="Software Engineering Body of Knowledge" href="http://en.wikipedia.org/wiki/Software_Engineering_Body_of_Knowledge">Software Engineering Body of Knowledge</a></em> defines &#8220;software engineering&#8221; as:</p>
<blockquote><p><em>Software engineering is the application of a systematic,  disciplined, quantifiable approach to the development, operation, and  maintenance of software, and the study of these approaches; that is, the application of engineering to software.</em></p></blockquote>
<p>Software Engineering can be very effective when developing safety critical systems like the one for the space shuttle as described on &#8220;<a href="http://www.fastcompany.com/magazine/06/writestuff.html">They Write The Right Stuff</a>&#8221; &#8211; Fast Company article, from 1996:</p>
<blockquote><p><em>The last three versions of the program &#8211; each 420,000 lines long &#8211; had just one error each. The last 11 versions of this software had a total of 17 errors. Commercial programs of equivalent complexity would have 5,000 errors.</em></p></blockquote>
<p>Of course that this looks really impressive but there is more to it:</p>
<blockquote><p><em>Money is not the critical constraint: The group&#8217;s $35 million per year budget is a trivial slice of the NASA pie, but on a dollars-per-line basis, it makes the group among the nation&#8217;s most expensive software organizations.</em></p></blockquote>
<p>Another extract from this same article when they were discussing the process:</p>
<blockquote><p><em>And the culture is equally intolerant of creativity, the individual  coding flourishes and styles that are the signature of the all-night  software world. &#8220;People ask, doesn&#8217;t this process stifle creativity? You  have to do exactly what the manual says, and you&#8217;ve got someone looking  over your shoulder,&#8221; says Ted Keller (senior technical manager). &#8220;The answer is, yes, the process does  stifle creativity.&#8221;</em></p></blockquote>
<p>Many of the NATO and US Department of Defence projects took years, some over a decade to complete. Many had hundreds of people involved and almost half of the time was spend in requirements and design specifications, with uncountable reviews and approval cycles. Of course, due to their reliability and quality, many are still in use today.</p>
<p><span style="font-size: small;"><strong>Software Engineering for the Masses</strong></span></p>
<p>More and more hardware became cheap and business of all sizes needed software in order to survive and be competitive. The difference was that a the big majority of these businesses couldn&#8217;t afford to pay $35 million dollars per year and neither wait for too many years to start benefiting from their software. Also, many of those software projects were not manipulating expensive hardware or dealing with <span class="sense_b "><span class="def parentof__def__is__sense_b">life-threatening situations.</span></span> <a href="http://yourdon.com/about/">Edward Yourdon</a>, in his book Rise and Resurrection of the American Programmer, wrote:</p>
<blockquote><p><em>I&#8217;m going to deliver a system to you in six months that will have 5,000 bugs in it &#8211; and you&#8217;re going to be very happy!</em></p></blockquote>
<p>It was clear that software engineering processes had to be adapted in order to satisfy a more impatient and lower budget legion of businesses.</p>
<p><strong>The &#8220;Good Enough Software</strong>&#8221; <strong>Era</strong></p>
<p>Over the decades, many new software engineering processes and methodologies were created in order to make software development faster and cheaper. The most adopted were the ones based on <a href="http://en.wikipedia.org/wiki/Iterative_and_incremental_development">iterative and incremental development</a> that evolved into <a href="http://en.wikipedia.org/wiki/Agile_software_development">agile software development</a>.</p>
<p>Agile software development and &#8220;good enough software&#8221; were an amazing improvement in bringing costs down, mitigating risks with quicker feedback and much faster time to market.</p>
<p>Regardless the methodology or process used, software projects are still failing. Some fail because they go over-budget, others because they are not delivered on time, others fail to satisfy the requirements and business goals, et al.</p>
<p>The main problem is that for decades, software development was seen as a production line. That&#8217;s the software engineering perspective of software development. Processes and methodologies are generally much more focused on making this production line more productive, creating different management and organisational styles than actually trying to make the employees more capable. Developers are treated as mere brain-damaged programmers and are at the bottom of the food chain.</p>
<p><strong>Good enough is not always good enough</strong></p>
<p>Using agile, lean or any methodology is not enough. It is all about the people involved in the project and their willingness to succeed and be proud of what they produce. If developers are seen as the least important and cheapest members of a software project, the maximum that this team is going to produce is mediocre software, regardless of methodology.</p>
<p>A software project would have much better chances to succeed with &#8220;good people with a bad process&#8221; than &#8220;mediocre people with a good process&#8221;. Good people would always find a way to improve the process, be productive and produce something that they are proud of. Mediocre people accepts whatever is established, even when it is not good enough, and will produce just what they were asked for.</p>
<p>In a software project, if a company wants a good software, they will need <strong>good</strong> and <strong>empowered </strong>software developers. Instead of 10 mediocre people with a good process, it would be better to have 3 or 4 good people and empower them to deliver the project.</p>
<p>A process, imposed by managers and people that have no clue how to write software, will just guarantee that mediocre software is predictably delivered (if lucky). On the other hand, a team of self-organised and great developers would have a better shot at creating a more efficient way to produce great software, constantly trying to improve they way they work.</p>
<p>A process should never be more important than the people. Managers should facilitate the work of great software developers and not tell them what to do. It should always be harder to replace a good software developer than a manager since they are the ones that know the system inside-out. Managing a few well motivated, well paid and good professionals is always easier than managing many mediocre people.</p>
<p>Software development is a creative and highly skilled profession that takes years to master. While software development is treated like a production line, projects will continue to fail.</p>
<div style="background-color: white; color: #444444;"><strong>Source</strong></div>
<p><span style="font-size: small;">Software Craftsmanship: The New Imperative &#8211; ISBN 0-201-73386-2, 2002 </span><br />
<span style="font-size: small;"><a href="http://en.wikipedia.org/wiki/Software_engineering">http://en.wikipedia.org/wiki/Software_engineering</a></span><br />
<span style="font-size: small;"><a href="http://en.wikipedia.org/wiki/Software_crisis">http://en.wikipedia.org/wiki/Software_crisis</a></span><br />
<span style="font-size: small;">IEEE Standard Computer Dictionary, ISBN 1-55937-079-3, IEEE 1990</span><br />
<span style="font-size: small;">&#8220;They Write The Right Stuff&#8221;, Fast Company, <a href="http://www.fastcompany.com/magazine/06/writestuff.html">http://www.fastcompany.com/magazine/06/writestuff.html</a></span><br />
<span style="font-size: small;">Safeguard Program: <a href="http://en.wikipedia.org/wiki/Safeguard_Program">http://en.wikipedia.org/wiki/Safeguard_Program</a></span><br />
<span style="font-size: small;">Stephenson, W. E. &#8220;<strong>An analysis of the resources used in the SAFEGUARD system software development&#8221;</strong></span><br />
<span style="font-size: small;"><strong>Edward Yourdon  &#8211; <a href="http://yourdon.com/about/">http://yourdon.com/about/ </a></strong></span><br />
<span style="font-size: small;"><strong>http://en.wikipedia.org/wiki/Iterative_and_incremental_development </strong></span><br />
<span style="font-size: small;"><strong>http://en.wikipedia.org/wiki/Agile_software_development</strong></span></p>
<div class="blogger-post-footer"><img src="https://blogger.googleusercontent.com/tracker/8424060401701893376-8882835982301412199?l=craftedsw.blogspot.com" alt="" width="1" height="1" /></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.valtech.co.uk/agile/software-engineering-the-problem-with-the-production-line/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Driving out uncertainty</title>
		<link>http://blog.valtech.co.uk/agile-management/driving-out-uncertainty/</link>
		<comments>http://blog.valtech.co.uk/agile-management/driving-out-uncertainty/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 09:28:31 +0000</pubDate>
		<dc:creator>David Draper</dc:creator>
				<category><![CDATA[Agile Management]]></category>

		<guid isPermaLink="false">http://www.agiledesign.co.uk/agile-management/driving-out-uncertainty/</guid>
		<description><![CDATA[Agile practice irrespective of flavour (Scrum Kanban XP &#8230;)can often be reduced to: Work in small batches Deliver often Build the most valuable chunk first And it&#8217;s the &#8220;value&#8221; bit that can get us in trouble. How do we determine which is the most valuable bit? Particularly early on in a project we need to [...]]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.valtech.co.uk%2Fagile-management%2Fdriving-out-uncertainty%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.valtech.co.uk/agile-management/driving-out-uncertainty/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.valtech.co.uk/agile-management/driving-out-uncertainty/"  data-text="Driving out uncertainty" data-count="horizontal" data-via="valtech">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><p>Agile practice irrespective of flavour (Scrum Kanban XP …)can often be reduced to:</p>
<ul>
<li>Work in small batches</li>
<li>Deliver often</li>
<li>Build the most valuable chunk first</li>
</ul>
<p>And it’s the “value” bit that can get us in trouble.</p>
<p>How do we determine which is the most valuable bit? Particularly early on in a project we need to be careful about how we prioritise. Do we just get a bunch of business folk to fight for their favourite features or do we have some hard won lessons to apply from many years of technology project management?</p>
<p>One of the first projects I was responsible for was fixed scope and fixed price. The customer was documenting requirements to be handed into the “agile” development team who built and tested software prior to a traditional system test cycle. Not very agile!</p>
<p>However, we benefitted greatly from the rhythm or scrum, the rigour of agile engineering practice and the predictability the the planning and tracking approach provided.</p>
<p>Most significantly, by taking the Product Owner role I was able to prioritise according to my own definition of value. Put yourself in my seat, you work for a software consultancy, it’s your first project and it is fixed everything, what makes one feature more valuable than another? The answer is risk. When everything is fixed value is in the reduction of risk. In fact I combined prioritisation according to risk with other engineering considerations such as profile of the work to bring the project to a successful conclusion.</p>
<p>So what about other interpretations of value? I’ve been helping a client with a project initiation over the past couple of weeks and found myself using the word uncertainty a great deal. It seems that driving out uncertainty held a great deal of value in that context. In fact, when kicking of a project we look for information generation first, then seek to identify key risk areas and mitigation strategies such as finding new stakeholders or driving out technical risk with proof of concept work.</p>
<p>Uncertainty isn’t new; I often use the “cone of uncertainty” model to express the value of reducing uncertainty. As <a href="http://en.wikipedia.org/wiki/Cone_of_Uncertainty">wikipedia</a> will tell you, this model is primarily concerned with project estimation. At the beginning of a project, skilled estimators may have a factor of 4 error in either direction. Over time error should rapidly reduce as information arrives and the project progresses. This dynamic is known as the Cone of Uncertainty and is the inner line on the graph.</p>
<p><a onclick="window.open('http://blogs.sun.com/fifors/resource/cone-of-uncertainty.png','popup','width=531,height=290,scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=yes,left=0,top=0');return false" href="http://blogs.sun.com/fifors/resource/cone-of-uncertainty.png"><img src="http://www.agiledesign.co.uk/wp-content/uploads/2010/07/cone-of-uncertainty-tm.jpg" border="1" alt="Cone-Of-Uncertainty" hspace="4" vspace="4" width="531" height="290" /></a></p>
<p>The outer line is the cloud of uncertainty. This is what could happen if uncertainty is not driven out of the project. Right to near the end of the project there is significant error in estimating the size due to missing information.</p>
<p>When we execute agile projects lets not forget the value of driving out uncertainty. This isn’t an excuse to analyse everything to death. Our goal is to recognise where the uncertainty that matters is hiding. Those innocuous features that come along and prove the architecture is flawed are a prime example. We must do enough to understand the risk we are carrying while being sensitive to the cost of gathering detailed information pertaining to speculative requirements.</p>
<p><!-- technorati tags start --></p>
<p style="text-align: right; font-size: 10px;">Technorati Tags: <a rel="tag" href="http://www.technorati.com/tag/cone%20of%20uncertainty">cone of uncertainty</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.valtech.co.uk/agile-management/driving-out-uncertainty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tale of two SCRUM stand ups</title>
		<link>http://blog.valtech.co.uk/agile/tale-of-two-scrum-stand-ups/</link>
		<comments>http://blog.valtech.co.uk/agile/tale-of-two-scrum-stand-ups/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 12:38:00 +0000</pubDate>
		<dc:creator>Andrew Rendell</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Agile Management]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Stand-ups]]></category>

		<guid isPermaLink="false">http://www.rendell.org:80/pebble/software/2009/12/15/1260877320000.html</guid>
		<description><![CDATA[          I walked past two teams doing their daily SCRUM standup today. Both teams claim to be agile. I didn't join in (even as a chicken) but just observed for a minute or so.<br />
<br />
The first team was sitting down in a breakout area. Their body language spoke volumes. There was not one single participant maintaining eye contact with anybody else. Two people were playing on their phones. One developer had his head in his hands. Most had bored expressions. The team leader who is also the SCRUM master was the only person who spoke for the entire time I watched.<br />
<br />
The second team was stood in a space near their desks. They were gathered round a task board which appeared to be up to date and the focus of several of the individual's updates. One person spoke at a time. Almost everybody appeared to be paying attention to whomever was speaking. Most updates were short and concise. A couple rambled on.<br />
<br />
Other than both teams calling their meeting a SCRUM I could see no similarities.<br />
<br />
As our agile adoption has spread beyond the original teams I suppose it is inevitable that as the experience gets spread a little thinner that people will simply label their existing activities with agile sounding names. Often we have no clear remit in those teams to supply a mentor and to try offer advice would result in rebuttal as team leaders guard their territory. Does this matter? Is there a risk that these teams who are not practicing agile correctly will diminish and discredit agile in the eyes of our programme managers? This is sounding a bit like an excuse for an Agile Inquisition going round checking that no team is using Agile's name in vain. This cannot be a good thing either.
        ]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.valtech.co.uk%2Fagile%2Ftale-of-two-scrum-stand-ups%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.valtech.co.uk/agile/tale-of-two-scrum-stand-ups/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.valtech.co.uk/agile/tale-of-two-scrum-stand-ups/"  data-text="Tale of two SCRUM stand ups" data-count="horizontal" data-via="valtech">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><p>I walked past two teams doing their daily SCRUM standup today. Both teams claim to be agile. I didn&#8217;t join in (even as a chicken) but just observed for a minute or so.</p>
<p>The first team was sitting down in a breakout area. Their body language spoke volumes. There was not one single participant maintaining eye contact with anybody else. Two people were playing on their phones. One developer had his head in his hands. Most had bored expressions. The team leader who is also the SCRUM master was the only person who spoke for the entire time I watched.</p>
<p>The second team was stood in a space near their desks. They were gathered round a task board which appeared to be up to date and the focus of several of the individual&#8217;s updates. One person spoke at a time. Almost everybody appeared to be paying attention to whomever was speaking. Most updates were short and concise. A couple rambled on.</p>
<p>Other than both teams calling their meeting a SCRUM I could see no similarities.</p>
<p>As our agile adoption has spread beyond the original teams I suppose it is inevitable that as the experience gets spread a little thinner that people will simply label their existing activities with agile sounding names. Often we have no clear remit in those teams to supply a mentor and to try offer advice would result in rebuttal as team leaders guard their territory. Does this matter? Is there a risk that these teams who are not practicing agile correctly will diminish and discredit agile in the eyes of our programme managers? This is sounding a bit like an excuse for an Agile Inquisition going round checking that no team is using Agile&#8217;s name in vain. This cannot be a good thing either.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.valtech.co.uk/agile/tale-of-two-scrum-stand-ups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using JIRA for Agile Project Management (without Green Hopper)</title>
		<link>http://blog.valtech.co.uk/agile-management/using-jira-for-agile-project-management-without-green-hopper/</link>
		<comments>http://blog.valtech.co.uk/agile-management/using-jira-for-agile-project-management-without-green-hopper/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 14:32:49 +0000</pubDate>
		<dc:creator>Mashooq Badar</dc:creator>
				<category><![CDATA[Agile Management]]></category>

		<guid isPermaLink="false">http://blog.valtech.co.uk/?p=213</guid>
		<description><![CDATA[Jira from Atlassian  is a very popular issue tracking software and can be quite effectively used for Agile Project Management. Jira has a plugin (Green Hopper) that allows for creation of a backlog, iterations and tasks.  However, with help from the free Mylyn plugin for Eclipse I was able to setup a Product Backlog and Iteration Backlogs.]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.valtech.co.uk%2Fagile-management%2Fusing-jira-for-agile-project-management-without-green-hopper%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.valtech.co.uk/agile-management/using-jira-for-agile-project-management-without-green-hopper/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.valtech.co.uk/agile-management/using-jira-for-agile-project-management-without-green-hopper/"  data-text="Using JIRA for Agile Project Management (without Green Hopper)" data-count="horizontal" data-via="valtech">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><p>Jira from Atlassian  is a very popular issue tracking software and can be quite effectively used for Agile Project Management. Jira has a plugin (Green Hopper) that allows for creation of a backlog, iterations and tasks.  However, with help from the free Mylyn plugin for Eclipse I was able to setup a Product Backlog and Iteration Backlogs.</p>
<p>For the User Stories in the product backlog I created two issue types (Epic &#038; User Story).  Story hierarchies can be represented using Jira Links.</p>
<p>For Iteration Backlog I created a version for each iteration and assigned the stories to that version/iteration. Each leaf story can then have Jira Sub-tasks to represent the tasks in a particular iteration. The Resolved state of the story is used to mark it complete and Colsed state is used to mark it as “accepted”. You can use Mylyn to see story hierarchies, also I found Mylyn to be a much more intuitive interface when working on Product and Iteration backlogs.</p>
<p>By <a href="http://blog.valtech.co.uk/author/mashooq-badar/">Mashooq Badar</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.valtech.co.uk/agile-management/using-jira-for-agile-project-management-without-green-hopper/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>As a manager define outputs, not process</title>
		<link>http://blog.valtech.co.uk/clog/as-a-manager-define-outputs-not-process/</link>
		<comments>http://blog.valtech.co.uk/clog/as-a-manager-define-outputs-not-process/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 16:12:46 +0000</pubDate>
		<dc:creator>David Draper</dc:creator>
				<category><![CDATA[Agile Management]]></category>
		<category><![CDATA[Clog]]></category>

		<guid isPermaLink="false">http://agiledesign.amplify.com/2009/08/20/as-a-manager-define-outputs-not-process/</guid>
		<description><![CDATA[Liz haz written a great post here describing a situation where the deployment team needed to learn for to leverage the development team to achieve a more effective rout out of development into QA and live environments.

The line that made me smile was -
Ask for consistent outputs, not consistent processes
This is a big leap for [...]]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.valtech.co.uk%2Fclog%2Fas-a-manager-define-outputs-not-process%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.valtech.co.uk/clog/as-a-manager-define-outputs-not-process/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.valtech.co.uk/clog/as-a-manager-define-outputs-not-process/"  data-text="As a manager define outputs, not process" data-count="horizontal" data-via="valtech">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><div class="Clog_Commentary_Wrap">
<div class="Clog_Post_Text">
<p>Liz haz written a great post here describing a situation where the deployment team needed to learn for to leverage the development team to achieve a more effective rout out of development into QA and live environments.</p>
<p>The line that made me smile was -</p>
<blockquote><p>Ask for consistent outputs, not consistent processes</p></blockquote>
<p>This is a big leap for many managers and senior stake-holders. I worked with a team recently who had been told to do daily stand-up meetings. They were told that each must answer three questions (you know the three, what yesterday, what next and what’s blocking). The teams manager had a team member minute the meeting and send him an e-mail to save time.</p>
<p>I was asked to have a chat with the team about why they seemed unhappy with this new “agile” approach. The first step was to invite the manager to write a contract in terms of his information requirements and agree that so long as the team could fulfil the contract he would accept their approach.</p>
<p>A short retrospective later and the team are posting key information on a board for all including the manager to see, the minuting of the meeting has stopped and they have taken back their stand-up whic it turns out they quite liked now it could move faster without minuting.</p>
<p>So thanks for the reminder Liz and thanks for sharing.</p></div>
</div>
<div class="Clog_Content_Outer"><!-- BEGIN_CLOG_CONTENT ID: 7AC7116E-0D1C-4825-AAE0-AC27EFAE58DF CLOGS.CLIPMARKS.COM --></p>
<div class="Clog_Top_Wrap">
<div class="Clog_Source_First"><span>Clipped from <a title="http://lizkeogh.com/2009/08/19/the-lean-software-production-line/" rel="clipsource" href="http://lizkeogh.com/2009/08/19/the-lean-software-production-line/">lizkeogh.com</a></span></div>
</div>
<div class="Clog_Middle_Wrap">
<blockquote class="Clog_Content_Item" cite="http://lizkeogh.com/2009/08/19/the-lean-software-production-line/">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<h3>Ask for consistent outputs, not consistent processes</h3>
<p><span class="Clog_Source_Button"><a title="http://lizkeogh.com/2009/08/19/the-lean-software-production-line/" rel="clipsource" href="http://lizkeogh.com/2009/08/19/the-lean-software-production-line/">Read more at lizkeogh.com</a></span></td>
</tr>
</tbody>
</table>
</blockquote>
</div>
</div>
<div class="feedflare"><a href="http://feeds.feedburner.com/~ff/AgileDesign?a=fnZSpRCTLSk:k7RT5S9T-zI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AgileDesign?d=yIl2AUoC8zA" border="0" alt="" /></a> <a href="http://feeds.feedburner.com/~ff/AgileDesign?a=fnZSpRCTLSk:k7RT5S9T-zI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AgileDesign?i=fnZSpRCTLSk:k7RT5S9T-zI:F7zBnMyn0Lo" border="0" alt="" /></a> <a href="http://feeds.feedburner.com/~ff/AgileDesign?a=fnZSpRCTLSk:k7RT5S9T-zI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AgileDesign?i=fnZSpRCTLSk:k7RT5S9T-zI:V_sGLiPBpWU" border="0" alt="" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.valtech.co.uk/clog/as-a-manager-define-outputs-not-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Value and cost in hardware and software</title>
		<link>http://blog.valtech.co.uk/agile-management/value-and-cost-in-hardware-and-software/</link>
		<comments>http://blog.valtech.co.uk/agile-management/value-and-cost-in-hardware-and-software/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 15:10:00 +0000</pubDate>
		<dc:creator>Andrew Rendell</dc:creator>
				<category><![CDATA[Agile Management]]></category>

		<guid isPermaLink="false">http://www.rendell.org:80/pebble/software/2009/08/28/1251490800000.html</guid>
		<description><![CDATA[          <a href="http://agile2009.agilealliance.org/files/session_pdfs/Emergent%20Design%20and%20Evolutionary%20Architecture%20(Neal%20Ford).pdf">Neal Ford's presentation</a> on emerging architecture contained a reference to the controversial Intel practice in the 1990s regarding the 386-SX math co-pro. Intel were producing two variants of the 386 chip at the time:<br />
<ul>
    <li> The 386-DX which featured a math co-processor on board which allowed faster execution of floating point maths required in financial applications, graphics packages etc..</li>
    <li> The 386-SX which was cheaper but did not feature the math co-processor and therefore was less 'powerful'. It had enough to differentiate itself from the previous generation of 286 chips but was regarded as distinctly inferior to its more expensive sibling.</li>
</ul>
<br />
This all sounded fair enough until it became public that the 386-DX and 386-SX shared the same manufacturing process including the construction of the maths co-processor. Where the process differed was that at some point the math copro in the SX chip was destroyed via some mechanical process. Suddenly the perception of the SX went from a lower spec product to a broken product. In Neal Ford's presentation he described the whole process as Intel selling customers their trash, like the SX was a defective unit being offloaded to unsuspecting users as a working chip.<br />
<br />
At a very low technical level Neal's statement is true but not at a commercial or practical level. Intel engineers were given a change in requirements by their marketing department: Produce a chip that is going to enter the budget market to complement but not fully compete against the 386-DX. They looked at their system and determined the most efficient way to achieve this end was to 're-configure' existing 386-DX chips. This was likely much much cheaper than setting up a whole new production line and testing the brand new chip it produced. To do otherwise would be against the pragmatic engineering ideals that Agile is supposed to champion. If you flip the argument around and say: Should we redesign from scratch the entire process to achieve the same end result but at much higher cost just so that we claim that the chip contains no parts that it doesn't need. Maybe we find this so objectionable because a chip is a tangible entity and we are used to associating (rightly or wrongly) the cost of raw materials and manufacturing with the value of such items. Maybe we don't factor in the cost of design and marketing, which I suspect are massive for a complex, consumer electronic product like a cutting edge CPU.<br />
<br />
This pattern raised its head again, but with less fuss, a couple of years ago when HP shipped high end servers with multiple CPUs. Some of the CPUs were disabled upon delivery. If the customer's processing requirements increased over time (which they always do) then they could pay HP who could then remotely enable the additional processors without the customer incurring the cost of an engineer on site, downtime for installation etc. etc.. Again, this early step towards todays processing on demand cloud computing concept raised some eyebrows. Why should customer's pay for something that was going to cost the supplier nothing? Again, this is a preoccupation with the physical entity of the manufactured component. If the additional CPUs had been sitting idle in a HP server farm rather than at the customer's site and purchasing them involved work being sent across the network my suspicion is that nobody would have had any objections.<br />
<br />
We use a UML design tool at my current client site called Visual Paradigm. It has a number of editions, each with a different cost. It has a very flexible license purchase system which we have taken advantage of. We have a large number of standard level licenses because the features that this edition gives will support most of our users most of the time. Occasionally we need some of the features from a more expensive edition. Its not that only one or two individuals require these features, we all need them, just very occasionally. The Visual Paradigm license model supports this beautifully. We have a couple of higher edition licenses. On the rare occasion that users need the extra features they just start the program in the higher edition mode. As long as no other users connected to our license are using the higher edition at that time, there is no issue. The similarity with the examples above is that there is only one installation. We don't need to install a different program binary every time we switch edition. We love this as it makes life easy. I am sure Visual Paradigm like it as well as it simplifies their build and download process. <br />
<br />
Two me the two scenarios, software and hardware appear pretty much identical. Everybody appreciates that the cost of creating a copy of piece of software is so close to zero that it is not worth worrying about. Therefore we don't mind when a supplier gives us a product with bits disabled until we make a payment and get a magic key. It's harder to think of hardware in the same way, that the build cost doesn't matter. That there might be no difference in manufacturing costs for two products with very different customer prices. The cost of delivering the product, like delivering software, includes massive costs which have nothing to with creation of the physical artifact. &#160; <br />
<br />
Maybe this wasn't the point in the above presentation but I guess the thing that startled me was that my natural inclination was to immediately associate the value with the tangible item. In my head this is all getting mixed up with free (as in speech) software and the idea that it is unproductive and unethical to patent / own / charge for ideas.
        ]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.valtech.co.uk%2Fagile-management%2Fvalue-and-cost-in-hardware-and-software%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.valtech.co.uk/agile-management/value-and-cost-in-hardware-and-software/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.valtech.co.uk/agile-management/value-and-cost-in-hardware-and-software/"  data-text="Value and cost in hardware and software" data-count="horizontal" data-via="valtech">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><p><a href="http://agile2009.agilealliance.org/files/session_pdfs/Emergent%20Design%20and%20Evolutionary%20Architecture%20(Neal%20Ford).pdf">Neal Ford&#8217;s presentation</a> on emerging architecture contained a reference to the controversial Intel practice in the 1990s regarding the 386-SX math co-pro. Intel were producing two variants of the 386 chip at the time:</p>
<ul>
<li> The 386-DX which featured a math co-processor on board which allowed faster execution of floating point maths required in financial applications, graphics packages etc..</li>
<li> The 386-SX which was cheaper but did not feature the math co-processor and therefore was less &#8216;powerful&#8217;. It had enough to differentiate itself from the previous generation of 286 chips but was regarded as distinctly inferior to its more expensive sibling.</li>
</ul>
<p>This all sounded fair enough until it became public that the 386-DX and 386-SX shared the same manufacturing process including the construction of the maths co-processor. Where the process differed was that at some point the math copro in the SX chip was destroyed via some mechanical process. Suddenly the perception of the SX went from a lower spec product to a broken product. In Neal Ford&#8217;s presentation he described the whole process as Intel selling customers their trash, like the SX was a defective unit being offloaded to unsuspecting users as a working chip.</p>
<p>At a very low technical level Neal&#8217;s statement is true but not at a commercial or practical level. Intel engineers were given a change in requirements by their marketing department: Produce a chip that is going to enter the budget market to complement but not fully compete against the 386-DX. They looked at their system and determined the most efficient way to achieve this end was to &#8216;re-configure&#8217; existing 386-DX chips. This was likely much much cheaper than setting up a whole new production line and testing the brand new chip it produced. To do otherwise would be against the pragmatic engineering ideals that Agile is supposed to champion. If you flip the argument around and say: Should we redesign from scratch the entire process to achieve the same end result but at much higher cost just so that we claim that the chip contains no parts that it doesn&#8217;t need. Maybe we find this so objectionable because a chip is a tangible entity and we are used to associating (rightly or wrongly) the cost of raw materials and manufacturing with the value of such items. Maybe we don&#8217;t factor in the cost of design and marketing, which I suspect are massive for a complex, consumer electronic product like a cutting edge CPU.</p>
<p>This pattern raised its head again, but with less fuss, a couple of years ago when HP shipped high end servers with multiple CPUs. Some of the CPUs were disabled upon delivery. If the customer&#8217;s processing requirements increased over time (which they always do) then they could pay HP who could then remotely enable the additional processors without the customer incurring the cost of an engineer on site, downtime for installation etc. etc.. Again, this early step towards todays processing on demand cloud computing concept raised some eyebrows. Why should customer&#8217;s pay for something that was going to cost the supplier nothing? Again, this is a preoccupation with the physical entity of the manufactured component. If the additional CPUs had been sitting idle in a HP server farm rather than at the customer&#8217;s site and purchasing them involved work being sent across the network my suspicion is that nobody would have had any objections.</p>
<p>We use a UML design tool at my current client site called Visual Paradigm. It has a number of editions, each with a different cost. It has a very flexible license purchase system which we have taken advantage of. We have a large number of standard level licenses because the features that this edition gives will support most of our users most of the time. Occasionally we need some of the features from a more expensive edition. Its not that only one or two individuals require these features, we all need them, just very occasionally. The Visual Paradigm license model supports this beautifully. We have a couple of higher edition licenses. On the rare occasion that users need the extra features they just start the program in the higher edition mode. As long as no other users connected to our license are using the higher edition at that time, there is no issue. The similarity with the examples above is that there is only one installation. We don&#8217;t need to install a different program binary every time we switch edition. We love this as it makes life easy. I am sure Visual Paradigm like it as well as it simplifies their build and download process.</p>
<p>Two me the two scenarios, software and hardware appear pretty much identical. Everybody appreciates that the cost of creating a copy of piece of software is so close to zero that it is not worth worrying about. Therefore we don&#8217;t mind when a supplier gives us a product with bits disabled until we make a payment and get a magic key. It&#8217;s harder to think of hardware in the same way, that the build cost doesn&#8217;t matter. That there might be no difference in manufacturing costs for two products with very different customer prices. The cost of delivering the product, like delivering software, includes massive costs which have nothing to with creation of the physical artifact.</p>
<p>Maybe this wasn&#8217;t the point in the above presentation but I guess the thing that startled me was that my natural inclination was to immediately associate the value with the tangible item. In my head this is all getting mixed up with free (as in speech) software and the idea that it is unproductive and unethical to patent / own / charge for ideas.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.valtech.co.uk/agile-management/value-and-cost-in-hardware-and-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Technical Debt re-visited</title>
		<link>http://blog.valtech.co.uk/agile-management/technical-debt-re-visited/</link>
		<comments>http://blog.valtech.co.uk/agile-management/technical-debt-re-visited/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 10:12:45 +0000</pubDate>
		<dc:creator>David Draper</dc:creator>
				<category><![CDATA[Agile Management]]></category>
		<category><![CDATA[Development Process]]></category>
		<category><![CDATA[technical debt]]></category>

		<guid isPermaLink="false">http://www.agiledesign.co.uk/technical/technical-debt-re-visited/</guid>
		<description><![CDATA[There has been some renewed discussion recently on the subject of technical debt, this has been played out on twitter as well as a variety of blog posts including this one.
The technical debt metaphor is one I use often and I believe that there is some clarification required around this subject.
At it&#8217;s broadest, technical debt [...]]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.valtech.co.uk%2Fagile-management%2Ftechnical-debt-re-visited%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.valtech.co.uk/agile-management/technical-debt-re-visited/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.valtech.co.uk/agile-management/technical-debt-re-visited/"  data-text="Technical Debt re-visited" data-count="horizontal" data-via="valtech">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><p>There has been some renewed discussion recently on the subject of technical debt, this has been played out on twitter as well as a variety of blog posts including <a href="http://startuplessonslearnt.blogspot.com/2009/07/embrace-technical-debt.html"  title="Embrace technical debt">this</a> one.</p>
<p>The <strong>technical debt</strong> metaphor is one I use often and I believe that there is some clarification required around this subject.</p>
<p>At it&#8217;s broadest, technical debt is any trait of the current system that is considered sub optimal from a technical perspective. The debt aspect reflects the cost of ownership of that trait. For example and overly complex and untidy method is sub optimal, it incurs cost each time it needs to be re-visited and re-understood due to either a defect in the logic or a new requirement. This method obviously incurs more cost if it is re-visited more often.</p>
<p>Much of the debate recently has been focused on the times that it might be good to incur technical debt. The debt metaphor reminds us of borrowing money from the bank to get that new toy a little sooner. The question here is two fold, does technical borrowing exists and how can we view the rate of interest or total cost.</p>
<p>Before we can consider technical borrowing we need to split technical debt into two categories. First, the design or implementation decision that was sound the day it was made but now, with new information, is constraining our ability to progress. Second, the quick and dirty approach that we can see on the day of writing is gong to cost us very soon.</p>
<p style="text-align:right;"><a href="http://www.agiledesign.co.uk/wp-content/uploads/2009/09/time_vs_money.JPG" onclick="window.open('http://www.agiledesign.co.uk/wp-content/uploads/2009/09/time_vs_money.JPG','popup','width=523,height=281,scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=yes,left=0,top=0');return false"><img src="http://www.agiledesign.co.uk/wp-content/uploads/2009/09/time_vs_money-tm.jpg" height="100" width="186" border="1" hspace="4" vspace="4" alt="Time Vs Money" /></a></p>
<p>The first category of debt is a direct result of doing the simplest thing that could work  and resisting the temptation to predict the future. We develop simple software that is easily changed through effective use of tests, the code that is written is written well. We categorise these design traits as debt when new information presents its self and we identify a change that will enable the system to serve us better. We may decide to make the change or not based on the ongoing cost of maintaining an design that no longer reflects our understanding of the problem or technology.</p>
<p>The second category is often the result of a deadline looming. A common chorus of &#8220;lets hack this in now and we&#8217;ll fix it later&#8221; is coupled with the nagging concern that later never arrives. In my mind, this category of debt can give the first category a bad name. But, is this thinking sound? Surely there are times when the wrong technical solution is the right business decision. It is my belief that there are situations where a quick fix is the right decision, imagine a major flaw that brings down a trading system. However, there are too many instances where code bases become un-maintainable through a feeling of time pressure that leads developers to incur debt with little or no benefit. In fact, in most cases, untidy, poorly designed software incurs cost both short and long term. In the short term, defects delay the release of the software and in the long term software is difficult to maintain and rigid in the face of changing business need.</p>
<p>So we arrive at <strong>technical borrowing</strong>. The decision to borrow must be explicit. As a team, along with appropriate stake-holders consider the decision. For example,</p>
<blockquote><p>we have selected framework X for the next release, it does not offer the scaling flexibility we would like but we believe that our early entry to the market is a higher priority. We plan to move to framework Y in the next release window to achieve our target scaleability.</p>
</blockquote>
<p>There are less extreme examples of refactorings that should be done but won&#8217;t fit in this iteration. Again, be explicit. Discuss the need for refactoring with your Product Owner or Project Manager, consider the cost of the refactoring, the cost incurred by not doing so, the risk of refactoring. One approach to maintaining a healthy code base is to keep a backlog of refactoring and allocate time in each iteration.</p>
<p>However, beware the temptation to save time, get it done, do a quick fix or tidy it up later. In almost all cases code that is hurried, poorly designed, overly complex or untidy will incur far more cost both short and long term than the time saved today by not doing it right.</p>
<p>Finally, this can be most difficult in a legacy code base where technical debt abounds. I use a simple motto that has served me well with a few teams:</p>
<blockquote><p><strong>Do no harm!</strong></p>
</blockquote>
<p>Where you cannot fix it all be sure to agree, as a team, that you won&#8217;t make it worse. In fact agree to making one small aspect of everything you touch better for the next person.</p>
<p align="left"><a  class="tt" href="http://twitter.com/home/?status=reading:+@david_draper+Technical+Debt+re-visited+http://zn4s2.th8.us" title="Post to Twitter"><img class="nothumb" src="http://www.agiledesign.co.uk/wp-content/plugins/tweet-this/icons/tt-twitter-micro4.png" alt="Post to Twitter" /></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AgileDesign?a=e1ON7mjV1Jo:jYqpsOLoI_w:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AgileDesign?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AgileDesign?a=e1ON7mjV1Jo:jYqpsOLoI_w:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AgileDesign?i=e1ON7mjV1Jo:jYqpsOLoI_w:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AgileDesign?a=e1ON7mjV1Jo:jYqpsOLoI_w:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AgileDesign?i=e1ON7mjV1Jo:jYqpsOLoI_w:V_sGLiPBpWU" border="0"></img></a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.valtech.co.uk/agile-management/technical-debt-re-visited/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

