<?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>Pragmatic Dictator &#187; Software</title>
	<atom:link href="http://www.dancres.org/blitzblog/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dancres.org/blitzblog</link>
	<description></description>
	<lastBuildDate>Sat, 31 Dec 2011 19:08:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Exposure</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2008%2F06%2F18%2Fexposure%2F&#038;seed_title=Exposure</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2008%2F06%2F18%2Fexposure%2F&#038;seed_title=Exposure#comments</comments>
		<pubDate>Wed, 18 Jun 2008 19:12:56 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2008/06/18/exposure/</guid>
		<description><![CDATA[The act of design includes: Consideration of many possible technology options Examination and identification of constraints Thought about the pros and cons of using various patterns and styles Comparing various splits of role and responsibility Looking at various tradeoffs of complexity versus function Formulation of opinion on possible future directions of system growth A large [...]]]></description>
			<content:encoded><![CDATA[<p>The act of design includes:</p>
<ul>
<li>Consideration of many possible technology options</li>
<li>Examination and identification of constraints</li>
<li>Thought about the pros and cons of using various patterns and styles</li>
<li>Comparing various splits of role and responsibility</li>
<li>Looking at various tradeoffs of complexity versus function</li>
<li>Formulation of opinion on possible future directions of system growth</li>
</ul>
<p>A large proportion of this information is lost when the design document is written, because the focus is typically on providing a (notionally) definitive view of how a system should be structured which might be in the form of a bunch of UML diagrams or merely a collection of Visio-type diagrams and explanation of what each of the boxes in the diagrams does. At the code-level there is almost no chance that any of this information will have been retained. Yet this information is of high value since it:</p>
<ul>
<li>is the explanation as to why a design is the way it is</li>
<li>provides reviewers with a clearer view of what was and was not considered</li>
<li>forms the basis for assessment of the maturity of a designer and can be used for coaching/mentoring</li>
<li>can provide insight for those with less experience</li>
<li>contains assumptions which if breached by changes in circumstance would dictate a re-design</li>
<li>dictates to a large extent how suitable for purpose a design might be</li>
</ul>
<p>Thus I believe It&#8217;s important to expose elements of the act of design via documentation alongside the design itself, conversations during the design work etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2008%2F06%2F18%2Fexposure%2F&#038;seed_title=Exposure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bad Behaviour</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2008%2F04%2F06%2Fbad-behaviour%2F&#038;seed_title=Bad+Behaviour</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2008%2F04%2F06%2Fbad-behaviour%2F&#038;seed_title=Bad+Behaviour#comments</comments>
		<pubDate>Sun, 06 Apr 2008 20:18:59 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2008/04/06/bad-behaviour/</guid>
		<description><![CDATA[Some of the more common software development mistakes I&#8217;ve seen&#8230;.. Ignoring the triangle &#8211; The triangle represents a trade-off between three core elements of software delivery &#8211; resource, product (features, non-functionals, quality) and schedule. One can only ever control two elements, the third being determined by the decisions regarding the other two. So if one [...]]]></description>
			<content:encoded><![CDATA[<p>Some of the more common software development mistakes I&#8217;ve seen&#8230;..</p>
<p><img src="http://www.dancres.org/wordpress/wp-content/uploads/2008/07/triangle-300x225.jpg" width="133" height="100" alt="triangle.jpg" align="left" /><strong>Ignoring the triangle</strong> &#8211; The triangle represents a trade-off between three core elements of software delivery &#8211; resource, product (features, non-functionals, quality) and schedule. One can only ever control two elements, the third being determined by the decisions regarding the other two. So if one wishes to dictate product and schedule, sufficient resource must be made available to complete the task in the allotted time. If one wishes to dictate product and resource, then the schedule cannot be limited. It is simply &#8220;as long as it takes&#8221;. And if one wishes to dictate resource and schedule, then product features, quality etc must be traded away to allow completion of development within the time allotted.</p>
<p>It&#8217;s amazing how often organisations attempt to dictate all three elements and are then surprised when a project gets messy. Of course, development processes have evolved in recognition of this trade-off &#8211; agile for example is great for prioritising, dropping features and getting something useful out the door in a resonable timeframe with limited resources.</p>
<p><strong>Heroic efforts</strong> &#8211; these are a bad sign. A regular pattern of projects turning into mad hack-fests, saved by some apparently super-talented individual(s) is indicative of broken processes. One step in addressing this problem involves an honest surgery immediately after the project to determine root causes (e.g. inadequate risk management) of the meltdown and methods of prevention for future projects (e.g. regular risk review and identification of appropriate mitigations).</p>
<p><img src="http://www.dancres.org/wordpress/wp-content/uploads/2008/07/bookrapiddevelopment-tn.jpg" width="100" height="100" alt="rapid_dev.jpg" align="left" />In the very worst cases, management actively encourages such heroism via recognition and reward. Worshipping this kind of carnage and supposed miracle recovery is tantamount to approving bad project management. Note that well-intentioned management can unknowingly drive this behaviour. From <a href="http://www.amazon.com/Rapid-Development-Taming-Software-Schedules/dp/1556159005/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1207504655&amp;sr=8-1">McConnell&#8217;s Rapid Development</a>:</p>
<blockquote>
<p>Some managers encourage heroic behaviour when they focus too strongly on can-do attitudes. By elevating can-do attitudes above accurate and sometimes gloomy status reporting, such project managers undercut their ability to take corrective action. They don&#8217;t even know they need to take corrective action until the damage is done. As <a href="http://www.dorsethouse.com/books/wds.html">Tom DeMarco says</a>, can-do attitudes escalate minor setbacks into true disasters.</p>
</blockquote>
<p><strong>No Risk Management</strong> &#8211; One can never predict or spot all the risks but there are some obvious ones that get missed over and over. For example, we&#8217;re building a piece of software that relies on a component we&#8217;ve not used before. This is a big risk, one that can be mitigated by writing a test-harness or simulation of the way in which we plan to use the component.</p>
<p>The simulation should include realistic load, failure conditions, maintenance etc and should be as close to the beginning of the project as possible to surface any issues early (we cannot afford to wait until final QA or deployment testing). There can be no shirking here because should our chosen component fail, we will need these tests in place so we can validate potential replacements as quickly and easily as possible.</p>
<p><strong>Waterfall Agile</strong> &#8211; We&#8217;re supposedly &#8220;doing&#8221; agile but one or more of the following are true:</p>
<ol>
<li>There&#8217;s a fixed deadline, with fixed features and fixed resources.</li>
<li>All Negotiation/Trade-off is done prior to project commencement with no review between sprints.</li>
<li>All sprints have been planned out in advance right up to the release date with no spare time.</li>
<li>There are no risks to manage (because there aren&#8217;t any apparently).</li>
<li>No-one is entertaining the idea of unknowns.</li>
<li>When a sprint doesn&#8217;t deliver as anticipated, outstanding work is simply crammed into the remaining sprints.</li>
</ol>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2008%2F04%2F06%2Fbad-behaviour%2F&#038;seed_title=Bad+Behaviour/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>False Economy</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2008%2F03%2F21%2Ffalse-economy%2F&#038;seed_title=False+Economy</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2008%2F03%2F21%2Ffalse-economy%2F&#038;seed_title=False+Economy#comments</comments>
		<pubDate>Fri, 21 Mar 2008 18:47:32 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2008/03/21/false-economy/</guid>
		<description><![CDATA[A couple of false economies software development indulges in: It&#8217;s quicker for me to write the code than explain the design to someone else. Automated deployment will have to wait until we have more time. Number one costs a software development team in a number of ways: The career development of other members of the [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of false economies software development indulges in:</p>
<ol>
<li>It&#8217;s quicker for me to write the code than explain the design to someone else.</li>
<li>Automated deployment will have to wait until we have more time.</li>
</ol>
<p>Number one costs a software development team in a number of ways:</p>
<ul>
<li>The career development of other members of the team is slowed &#8211; if one never discusses design how does one expect to obtain good designers or architects?</li>
<li>The team&#8217;s development capacity is reduced &#8211; essentially projects bottleneck around the uncommunicative heroic individual.</li>
<li>The team&#8217;s effectiveness is reduced &#8211; project load cannot be divided efficiently because individuals have skills in narrow areas limiting the breadth of work they can perform.</li>
<li>Team morale is damaged with other developers feeling left out, unfulfilled and unable to influence project decisions</li>
</ul>
<p>Number two yields costs including:</p>
<ul>
<li>We save on some development time but the cost is re-surfacing in staff-hours required to perform the deployment.</li>
<li>An increasing number of mistakes that extend deployment time or breaks releases.</li>
<li>We save development time once and pay the price for that saved time with each and every deployment.</li>
<li>The cost of each successive deployment increases because the system&#8217;s size is growing.</li>
<li>As each deployment takes ever longer, the gap between releases is likely to increase.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2008%2F03%2F21%2Ffalse-economy%2F&#038;seed_title=False+Economy/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Hyperchromatic</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2008%2F01%2F10%2Fhyperchromatic%2F&#038;seed_title=Hyperchromatic</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2008%2F01%2F10%2Fhyperchromatic%2F&#038;seed_title=Hyperchromatic#comments</comments>
		<pubDate>Thu, 10 Jan 2008 13:33:21 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2008/01/10/hyperchromatic/</guid>
		<description><![CDATA[Recently I&#8217;ve had reason to go back over some data-structure theory, average times for insertion, deletion and search etc. I was reminded of a period around 1999 when I was implementing a Hyperchromatic Tree, a subtype of the basic red-black tree. Hyperchromatic trees are lazily balanced i.e. balanced in the background rather than as part [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve had reason to go back over some data-structure theory, average times for insertion, deletion and search etc.  I was reminded of a period around 1999 when I was implementing a <a href="http://citeseer.ist.psu.edu/86809.html">Hyperchromatic</a> <a href="http://www.imada.sdu.dk/~kslarsen/RelBal/">Tree</a>, a subtype of the basic red-black tree.</p>
<p>Hyperchromatic trees are lazily balanced i.e. balanced in the background rather than as part of the operation that changes the structure of the tree and they have some challenging locking disciplines to implement as well.  They are designed to perform better under concurrent access than their ancestors.</p>
<p>Looking at my notes I was running a single test performing concurrent operations continuously for periods of 5 days against an instance containing 1 million entries on JDK 1.4. I suspect this period of my developer life taught me more about deadlocks and race conditions than any other.</p>
<p><!-- technorati tags start -->
<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/concurrency" rel="tag">concurrency</a>, <a href="http://www.technorati.com/tag/development" rel="tag">development</a>, <a href="http://www.technorati.com/tag/software" rel="tag">software</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2008%2F01%2F10%2Fhyperchromatic%2F&#038;seed_title=Hyperchromatic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning The Lesson</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2008%2F01%2F09%2Flearning-the-lesson%2F&#038;seed_title=Learning+The+Lesson</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2008%2F01%2F09%2Flearning-the-lesson%2F&#038;seed_title=Learning+The+Lesson#comments</comments>
		<pubDate>Wed, 09 Jan 2008 12:47:46 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2008/01/09/learning-the-lesson/</guid>
		<description><![CDATA[This just shouldn&#8217;t be a surprise. Frankly it&#8217;s closing the door long after the horse has bolted &#8211; check out Martin Odersky&#8217;s comments in this article from way back when. Who wants to bet that in spite of all this we still get closures in Java? We make this mistake all the time with languages, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.artima.com/weblogs/viewpost.jsp?thread=221903">This</a> just shouldn&#8217;t be a surprise.  Frankly it&#8217;s closing the door long after the horse has bolted &#8211; check out Martin Odersky&#8217;s comments in this <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=173229">article</a> from way back when.  Who wants to bet that in spite of all this we still get closures in Java?</p>
<p>We make <a href="http://en.wikipedia.org/wiki/Creeping_featurism">this mistake</a> all the time with languages, frameworks, applications and operating systems.  When will we learn the lesson I wonder?</p>
<p><!-- technorati tags start -->
<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/philosophy" rel="tag">philosophy</a>, <a href="http://www.technorati.com/tag/development" rel="tag">development</a>, <a href="http://www.technorati.com/tag/software" rel="tag">software</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2008%2F01%2F09%2Flearning-the-lesson%2F&#038;seed_title=Learning+The+Lesson/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>That Isn&#039;t IT</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F11%2F24%2Fthat-isnt-it%2F&#038;seed_title=That+Isn%26%23039%3Bt+IT</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F11%2F24%2Fthat-isnt-it%2F&#038;seed_title=That+Isn%26%23039%3Bt+IT#comments</comments>
		<pubDate>Sat, 24 Nov 2007 20:20:44 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2007/11/24/that-isnt-it/</guid>
		<description><![CDATA[Let&#8217;s say you sell pottery. Your core business is about making that pottery, perhaps to order but there&#8217;s a whole load of additional work you must do around accounting and the like. Perhaps you also ship your pottery via surface carrier, this introduces further work tracking customer details (watch our for pesky privacy regulations), working [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s say you sell pottery.  Your core business is about making that pottery, perhaps to order but there&#8217;s a whole load of additional work you must do around accounting and the like.  Perhaps you also ship your pottery via surface carrier, this introduces further work tracking customer details (watch our for pesky privacy regulations), working with couriers etc.</p>
<p>Almost from the get go these days you&#8217;ll automate as much of this drudgery as possible using computers, essentially creating a one person IT department that supports your business processes.  Obviously the bigger the business gets the more automation you will require, perhaps developing custom software to support the execution of your business processes (all that drudge you have to do but isn&#8217;t core).  Your IT department will have to grow accordingly, hiring developers, project managers etc.</p>
<p>This standard tale of the relationship between business and technology plays out in many an enterprise every day.  IT and in particular software development is a necessary evil, an undesirable cost to be carefully managed.</p>
<p>However for a certain class of enterprise, software <em>is</em> the product.  Maybe it&#8217;s a shrink wrap product or a set of services provided to customers via the web.  There will still be a need to have an IT department to support the business processes and it might well develop software of it&#8217;s own.  There&#8217;s a fundamental difference between these two types of software because one of them is the business&#8217; money generator.  This software must be nurtured and tended to carefully, one can&#8217;t just add features, one must care about stability, performance, availability, scalability and so on.  Money put into this effort is not a <em>cost</em> it&#8217;s an <em>investment</em>.  Fundamentally, this software is <em>not</em> enterprise IT as most know it.</p>
<p>This key difference is oft-missed by management, vendors and analysts leading to confusion and unnecessary mistakes.  I&#8217;ll cover one such mistake (related to SOA) in a follow-up post.</p>
<p><!-- technorati tags start -->
<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/business" rel="tag">business</a>, <a href="http://www.technorati.com/tag/engineering" rel="tag">engineering</a>, <a href="http://www.technorati.com/tag/software" rel="tag">software</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F11%2F24%2Fthat-isnt-it%2F&#038;seed_title=That+Isn%26%23039%3Bt+IT/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>You Know It&#039;s Not Agile When&#8230;..</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F09%2F26%2Fyou-know-its-not-agile-when%2F&#038;seed_title=You+Know+It%26%23039%3Bs+Not+Agile+When%26%238230%3B..</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F09%2F26%2Fyou-know-its-not-agile-when%2F&#038;seed_title=You+Know+It%26%23039%3Bs+Not+Agile+When%26%238230%3B..#comments</comments>
		<pubDate>Wed, 26 Sep 2007 21:26:21 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2007/09/26/you-know-its-not-agile-when/</guid>
		<description><![CDATA[Planning and estimation discussions always come back to: Agreeing what will be done Agreeing how much it will cost Agreeing a deadline by which the what will be done Because these questions require that one knows everything down to the deepest detail and that all possible happenings are known (which means knowing when people will [...]]]></description>
			<content:encoded><![CDATA[<p>Planning and estimation discussions always come back to:</p>
<ol>
<li>Agreeing what will be done</li>
<li>Agreeing how much it will cost</li>
<li>Agreeing a deadline by which the what will be done</li>
</ol>
<p>Because these questions require that one knows everything down to the deepest detail and that all possible happenings are known (which means knowing when people will be ill and for how long, how much time they&#8217;ll need to take off for dealing with family troubles, problems with the plumbing etc) and the risks are mitigated such that they absolutely will not affect your project in unpredictable fashions.</p>
<p>That&#8217;s not to say that one can&#8217;t set deadlines but one has to expect to trade features away, adjust resourcing etc.  Of course none of this is news and yet so many places claim to be agile whilst continuing to have the what, how much, when discussion.</p>
<p><!-- technorati tags start -->
<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/development" rel="tag">development</a>, <a href="http://www.technorati.com/tag/engineering" rel="tag">engineering</a>, <a href="http://www.technorati.com/tag/process" rel="tag">process</a>, <a href="http://www.technorati.com/tag/software" rel="tag">software</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F09%2F26%2Fyou-know-its-not-agile-when%2F&#038;seed_title=You+Know+It%26%23039%3Bs+Not+Agile+When%26%238230%3B../feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>More Code, Faster</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F08%2F01%2Fmore-code-faster%2F&#038;seed_title=More+Code%2C+Faster</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F08%2F01%2Fmore-code-faster%2F&#038;seed_title=More+Code%2C+Faster#comments</comments>
		<pubDate>Wed, 01 Aug 2007 12:07:57 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2007/08/01/more-code-faster/</guid>
		<description><![CDATA[That&#8217;s what everyone craves. That&#8217;s why lines of code is still seen as a useful measure in various quarters. That&#8217;s why we obsess over IDE&#8217;s and other so-called productivity tools. Trouble is every decent software engineer knows that actually you want less code. It&#8217;s easier to maintain, easier to change, easier to debug, easier to [...]]]></description>
			<content:encoded><![CDATA[<p>That&#8217;s what everyone craves.  That&#8217;s why lines of code is still seen as a useful measure in various quarters.  That&#8217;s why we obsess over IDE&#8217;s and other so-called productivity tools.</p>
<p>Trouble is every decent software engineer knows that actually you want less code.  It&#8217;s easier to maintain, easier to change, easier to debug, easier to build on.  They&#8217;ll also tell you that the best way to build big codebases is out of lots of small, well isolated, loosely coupled bits with minimal knowledge of each other.</p>
<p>The less code philosophy requires doing some design, pausing for thought and not cranking code.  It can provide massive benefit but it&#8217;s difficult to measure in any simplistic fashion and thus is seen as pure cost by many.</p>
<p>More code is the hare, less code is the tortoise &#8211; know which one I&#8217;d bet on.</p>
<p><!-- technorati tags start -->
<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/development" rel="tag">development</a>, <a href="http://www.technorati.com/tag/software" rel="tag">software</a>, <a href="http://www.technorati.com/tag/systems" rel="tag">systems</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F08%2F01%2Fmore-code-faster%2F&#038;seed_title=More+Code%2C+Faster/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Software is a Stakeholder</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F08%2F01%2Fsoftware-is-a-stakeholder%2F&#038;seed_title=Software+is+a+Stakeholder</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F08%2F01%2Fsoftware-is-a-stakeholder%2F&#038;seed_title=Software+is+a+Stakeholder#comments</comments>
		<pubDate>Wed, 01 Aug 2007 08:41:24 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2007/08/01/software-is-a-stakeholder/</guid>
		<description><![CDATA[For a long time, software development within many an enterprise is treated as a subservient entity. Something that is expected to comply with the demands of the business without complaint and with limited options for pushback. I believe the software we produce should be viewed as a stakeholder in it&#8217;s own right. It has it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>For a long time, software development within many an enterprise is treated as a subservient entity.  Something that is expected to comply with the demands of the business without complaint and with limited options for pushback.</p>
<p>I believe the software we produce should be viewed as a stakeholder in it&#8217;s own right. It has it&#8217;s own needs for survival and ongoing growth and if these are always placed behind everyone else&#8217;s (i.e. the business) considerations, the results will be a long slow, painful death where the software becomes more and more brittle, less and less maintainable and staff productivity drifts down as staff turnover creeps up.</p>
<p>Consider a car &#8211; it has needs, new tyres, oil flushes, new exhausts, paint chip removal, new springs, new clutch etc.  Fail to address those needs and your car will turn into a pile of rust before your eyes with all the attendant issues of depreciation, lost investment, breakdowns etc.</p>
<p>Why do we refuse to accept that software has a need for the motoring equivalent of oil changes and the like?  Probably because software is an invisible abstract thing such that only those working with it see the damage being done, problem cars are easier to spot for a greater percentage of the population.  This isn&#8217;t really an excuse however because software gives warning signs just as cars do.  If there&#8217;s steam coming from under the bonnet (hood) you&#8217;d go to a mechanic, if your software keeps crashing or upgrades keep failing or development takes longer and longer it surely follows that it&#8217;s time to visit with your software engineer.</p>
<p>[ You may have noticed I like car analogies - here's another:  You can't endlessly tune a car, it will only go so fast.  Any further increase in speed can only come from starting with a new car that has better basic performance ingredients.  The same is true for software, eventually you need a redesign to make further progress because the initial assumptions you made have all been invalidated. ]</p>
<p><!-- technorati tags start -->
<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/development" rel="tag">development</a>, <a href="http://www.technorati.com/tag/software" rel="tag">software</a>, <a href="http://www.technorati.com/tag/systems" rel="tag">systems</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F08%2F01%2Fsoftware-is-a-stakeholder%2F&#038;seed_title=Software+is+a+Stakeholder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Consistency Eventually</title>
		<link>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F07%2F30%2Fconsistency-eventually%2F&#038;seed_title=Consistency+Eventually</link>
		<comments>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F07%2F30%2Fconsistency-eventually%2F&#038;seed_title=Consistency+Eventually#comments</comments>
		<pubDate>Mon, 30 Jul 2007 10:58:29 +0000</pubDate>
		<dc:creator>Dan Creswell</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.dancres.org/blitzblog/2007/07/30/consistency-eventually/</guid>
		<description><![CDATA[I was reading this from Bill which follows on from Joe. And had a couple of thoughts: Google seems to have applied N > 1 to everything, not just storage &#8211; that&#8217;s pure distributed thinking, not the norm for the majority of software heads. Eventual consistency might be kinda like concurrent programming for most people [...]]]></description>
			<content:encoded><![CDATA[<p>I was reading <a href="http://www.dehora.net/journal/2007/07/eventually_consistent.html">this</a> from Bill which follows on from <a href="http://bitworking.org/news/218/N-1">Joe</a>.  And had a couple of thoughts:</p>
<ol>
<li>Google seems to have applied N > 1 to everything, not just storage &#8211; that&#8217;s pure distributed thinking, not the norm for the majority of software heads.</li>
<li>Eventual consistency might be  kinda like concurrent programming for most people &#8211; i.e.  many like to program sequentially and with the certainty that x has been completed immediately, in order and within a known timespan.  Concurrency, eventual consistency and friends aren&#8217;t terribly amenable to this programming approach and it consequently melts many a brain. </li>
<li>We need for a lot more people to understand <a href="http://citeseer.ist.psu.edu/544596.html">CAP</a>.</li>
</ol>
<p>[Note for Bill should he read this: it seems like your comments are broken, I'm seeing server errors when I hit post]</p>
]]></content:encoded>
			<wfw:commentRss>http://dancres.org/feeder/?FeederAction=clicked&#038;feed=Articles+%28RSS2%29&#038;seed=http%3A%2F%2Fwww.dancres.org%2Fblitzblog%2F2007%2F07%2F30%2Fconsistency-eventually%2F&#038;seed_title=Consistency+Eventually/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

