<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Duck Pond Software</title>
	<atom:link href="http://duckpondsoftware.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://duckpondsoftware.wordpress.com</link>
	<description>Practical Software - the art of doing software right !</description>
	<lastBuildDate>Wed, 25 Jan 2012 01:47:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='duckpondsoftware.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/1dd7ae9d4e71d0b030182375583773a1?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Duck Pond Software</title>
		<link>http://duckpondsoftware.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://duckpondsoftware.wordpress.com/osd.xml" title="Duck Pond Software" />
	<atom:link rel='hub' href='http://duckpondsoftware.wordpress.com/?pushpress=hub'/>
		<item>
		<title>BEG for Accountability</title>
		<link>http://duckpondsoftware.wordpress.com/2011/12/18/beg-for-accountability/</link>
		<comments>http://duckpondsoftware.wordpress.com/2011/12/18/beg-for-accountability/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 02:22:01 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
				<category><![CDATA[Customers]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Metrics]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://duckpondsoftware.wordpress.com/?p=180</guid>
		<description><![CDATA[Ever been in one of those meetings? Your customers and Technical Support team are yelling about a hot bug that needs to be fixed right away. The developers are saying &#8220;That&#8217;s not a bug &#8211; we didn&#8217;t do anything wrong. Look, the code does exactly what it&#8217;s supposed to do. Look at the spec!&#8221; The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=180&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ever been in one of those meetings? Your customers and Technical Support team are yelling about a hot bug that needs to be fixed right away.<br />
<img src="http://duckpondsoftware.files.wordpress.com/2011/12/arguing_cartoon.jpg?w=500"><br />
The developers are saying &#8220;That&#8217;s not a bug &#8211; we didn&#8217;t do anything wrong. Look, the code does exactly what it&#8217;s supposed to do. Look at the spec!&#8221;</p>
<p>The Product Management lead says &#8220;No one has ever wanted the code to do THAT before. We never designed for that scenario. That&#8217;s not a bug &#8211; it&#8217;s a new feature. The customer will have to wait for an enhancement release. We can&#8217;t put enhancements in a maintenance release.&#8221;</p>
<p>&#8220;But&#8221;, argues Tech Support, &#8220;the customer is saying that&#8217;s a common business practice. That our software should already be doing it and without a code change they will be getting the wrong information and can&#8217;t rely on the product. It&#8217;s a big deal.&#8221;</p>
<p>What to do? Customers don&#8217;t want enhancements in their &#8216;bug fix&#8217; maintenance releases else it makes it difficult for them to quickly and easily upgrade. On the other hand, is this an enhancement if what is being asked is what customers would expect it would do? It wouldn&#8217;t be right to classify it as a bug &#8211; bugs mean the developers made a mistake and go against their metrics.</p>
<p>There&#8217;s a simple solution &#8211; add a third classification to your tracking system.</p>
<ul>
<li>Bug for true defects &#8211; code that doesn&#8217;t match the spec.</li>
<li>Enh for enhancement requests &#8211; new features to be spec&#8217;d.</li>
<li>Gap &#8211; Add a new classification for the in-between customer requests. We call them &#8220;Gaps&#8221;. They are holes in the spec, gaps that the Product Manager forgot or didn&#8217;t have enough information about to add. But they are items customers consider a bug.</li>
</ul>
<p>Having a third classification lets all of the groups agree on how to position customer complaints/calls without having arguments.</p>
<ul>
<li>It&#8217;s in the spec but not the code &#8211; it&#8217;s a bug.</li>
<li>It&#8217;s not in the spec and definitely a new feature/request &#8211; it&#8217;s an enhancement request.</li>
<li>It&#8217;s in-between? Those that everyone used to fight about. Is it a bug so it gets top priority fix? or an enhancement that needs to wait for the next major release? If neither, it&#8217;s a gap. It can be in a maintenance release or enhancement release. It wasn&#8217;t the fault of the developer. The code is correct. Engineering and Tech Support don&#8217;t need to battle it out. It&#8217;s simply a gap.</li>
</ul>
<p>Bug/Enh/Gap &#8211; BEG. Having three classifications stopped the arguments and clarified who&#8217;s responsible for the fix. Even more importantly, if only true bugs are classified as bugs, real developer mistakes where the code doesn&#8217;t match the spec, then developers take more responsibility for fixing those when other items (holes, missing specs, new features) aren&#8217;t incorrectly classified as bugs. Having three classifications encourages accountability and accountability encourages better teamwork.</p>
<p>You won&#8217;t have to &#8220;beg&#8221; any more.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duckpondsoftware.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duckpondsoftware.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duckpondsoftware.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duckpondsoftware.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duckpondsoftware.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duckpondsoftware.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duckpondsoftware.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duckpondsoftware.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duckpondsoftware.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duckpondsoftware.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duckpondsoftware.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duckpondsoftware.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duckpondsoftware.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duckpondsoftware.wordpress.com/180/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=180&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duckpondsoftware.wordpress.com/2011/12/18/beg-for-accountability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/aec649c86688ee1a8e726cccb5ecc5e2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan</media:title>
		</media:content>

		<media:content url="http://duckpondsoftware.files.wordpress.com/2011/12/arguing_cartoon.jpg" medium="image" />
	</item>
		<item>
		<title>How to Document software in the 21st Century &#8211; Part 1</title>
		<link>http://duckpondsoftware.wordpress.com/2011/12/07/how-to-document-software-in-the-21st-century/</link>
		<comments>http://duckpondsoftware.wordpress.com/2011/12/07/how-to-document-software-in-the-21st-century/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 06:11:50 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://duckpondsoftware.wordpress.com/?p=264</guid>
		<description><![CDATA[Something has been bothering me for a long time. I wrote &#8220;Smooth Sailing&#8221; a few years ago when I was astonished that people didn&#8217;t recognize the value of having good documentation &#8211; moreover they thought it wasn&#8217;t possible. I&#8217;d used DOORs successfully for years and to me, having developers work against a spec, give feedback, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=264&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Something has been bothering me for a long time. I wrote <a href="http://duckpondsoftware.wordpress.com/2008/08/19/smooth-sailing/" target="/link">&#8220;Smooth Sailing&#8221;</a> a few years ago when I was astonished that people didn&#8217;t recognize the value of having good documentation &#8211; moreover they thought it wasn&#8217;t possible. I&#8217;d used DOORs successfully for years and to me, having developers work against a spec, give feedback, collaboratively develop the spec and code together, then have QA test against the spec assured a final spec that matched code that Tech Support could use to know, decisively, how the code was supposed to work.</p>
<p>That let us clearly specify customer complaints as Bugs (don&#8217;t match the spec), Enhancement Requests (not in the spec) or &#8220;Gaps&#8221; (maybe should have been in the spec in the customer&#8217;s eyes but were missed.  Or spec ambiguities.)  That saved us a lot of discussion time in our SDRB (Software Design Review Board) meetings where we reviewed the issue clients and internal support people had with the product.  Bugs were things developers missed &#8211; the onus was on the Development Managers.  &#8220;Bad Developers&#8221;. Enhancements were things we put in the next major releases.  Obviously not negotiable for maintenance releases. Gaps were negotiable but there was no blame on the developers &#8211; so yep, good idea, let&#8217;s move on it.  Meetings were clear.  No contention.</p>
<p>So why didn&#8217;t everyone want good, &#8216;as built&#8217; specs?</p>
<p>I was surprised when some companies thought they had &#8216;as built&#8217; specs &#8211; only to find what they were referring to were documents an external tech writer group wrote after the software was released.  Those aren&#8217;t &#8220;as built&#8221; specs as much as they are &#8220;what we think was built&#8221; specs.  Since the developers didn&#8217;t code to them and QA didn&#8217;t test to them in the initial release, they are, always suspect.  Those documents are never valid, correct.  I would question if any company devotes enough time and money to guarantee that kind of &#8216;after-the-fact&#8217; documentation is correct.</p>
<p>Whereas it&#8217;s so clean and clear if the spec is used as part of the development process and then as part of the QA process that it &#8220;IS&#8221; the &#8220;bible&#8221; of the code.  How the code was developed.  What the code does do. If you have specs like that, you know what&#8217;s in the code.  Tech Support knows what the product does.  Everything is clean. Clear.</p>
<p>But I&#8217;ve come to realize that there are roadblocks in companies to why this isn&#8217;t as easy as I assumed.  But I think I have a solution and am working on it.  It&#8217;s very cool.  I&#8217;ve realized that there are real reasons why people feel it&#8217;s hard to maintain real as-built DOORS-type specs.  I, as a manager, was willing to do the extra work to have as built DOORs specs because I saw the value. But not everyone is as dedicated to the end result.  </p>
<p>There has to be a better way.</p>
<p>I think there is &#8230; stay tuned.  We&#8217;re calling it Software 2020 &#8211; a software tool for the 21st century &#8220;:-)&#8221; <img src="http://duckpondsoftware.files.wordpress.com/2011/12/logo.jpg?w=500"></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duckpondsoftware.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duckpondsoftware.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duckpondsoftware.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duckpondsoftware.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duckpondsoftware.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duckpondsoftware.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duckpondsoftware.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duckpondsoftware.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duckpondsoftware.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duckpondsoftware.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duckpondsoftware.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duckpondsoftware.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duckpondsoftware.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duckpondsoftware.wordpress.com/264/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=264&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duckpondsoftware.wordpress.com/2011/12/07/how-to-document-software-in-the-21st-century/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/aec649c86688ee1a8e726cccb5ecc5e2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan</media:title>
		</media:content>

		<media:content url="http://duckpondsoftware.files.wordpress.com/2011/12/logo.jpg" medium="image" />
	</item>
		<item>
		<title>Is &#8220;Quality&#8221; a Trade-Off?</title>
		<link>http://duckpondsoftware.wordpress.com/2011/12/07/is-quality-a-trade-off/</link>
		<comments>http://duckpondsoftware.wordpress.com/2011/12/07/is-quality-a-trade-off/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 04:39:15 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Metrics]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://duckpondsoftware.wordpress.com/?p=171</guid>
		<description><![CDATA[One tool taught in Agile Methodology is the use of &#8220;Project Success Sliders&#8221;, initially created and devised by Rob Thomsett in his book, Radical Project Management. Agile training takes this approach and there is now a nice tool to use when considering project success sliders (see Mike Cohn&#8217;s Blog). The theory is that Sliders are [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=171&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One tool taught in Agile Methodology is the use of &#8220;Project Success Sliders&#8221;, initially created and devised by Rob Thomsett in his book, Radical Project Management. Agile training takes this approach and there is now a nice tool to use when considering project success sliders (see <a href="http://blog.mountaingoatsoftware.com/sliding-toward-success" target="/Link">Mike Cohn&#8217;s Blog</a>).  The theory is that Sliders are a way to convey expectations to the team. By default there are six sliders, each of which reflects some dimension by which project success can be determined—for example, delivery of all planned features, quality, meeting an agreed upon schedule.  Each slider goes from 1 to 5 with the midpoint being 3.<br />
<img src="http://duckpondsoftware.files.wordpress.com/2011/12/sliders1.jpg?w=500" width="75%"></p>
<p>My first reaction to this is &#8220;What? Trading off Quality?&#8221;  What does it mean to have a Quality &#8220;slider&#8221;?  </p>
<p>In my years of software management, I&#8217;ve always believed there&#8217;s &#8220;3 fuzzy peas&#8221;, not four (the 3 P’s that drive a software project:  Plan, People and Product. See my blog on <a href="http://duckpondsoftware.wordpress.com/2008/06/29/fuzzy-peas/" target="/Link">Fuzzy Peas</a>).  Related to the sliders above, Plan=Time, People=Budget, and Product =Scope. </p>
<p>The first slider above, Stakeholder Satisfaction, I believe comes from delivering a quality product on time with the features they deem valuable. Team Satisfaction comes from working in an environment where your work is valued by the customers. I don&#8217;t think those really are project &#8220;sliders&#8221; although I imagine someone could argue for some usefulness in having them discussed by the project team. </p>
<p>On the other hand, &#8220;Quality&#8221; isn&#8217;t an item to be traded off.</p>
<p>I was happy that in Mike Cohn&#8217;s Blog, in every example the quality slider is always in the middle, at &#8220;3&#8243;. That makes sense &#8211; there is a middle ground on &#8216;reasonable&#8217; quality.  You typically don&#8217;t need to run a battery of tests that takes every possible path through the system regardless of how obscure it is. I&#8217;ve agreed to let a release go out when there was a potential bug in a place a user could only get to if the moon was full, they stood on their head and typed &#8216;MeMeMeMeMe&#8217; 5000 times in the input box. Well, maybe a little easier to get to than that but some boundary test that goes far beyond any reasonable business case. Or a low-level issue (typos or an issue only an admin user would see and could easily work around). I suppose some could argue those are still &#8216;bugs&#8217; in the code.  Those bugs we list as 3-Low/3-Non-Critical and move them to the &#8220;Future&#8221; bucket.  If we ever run out of work, a someday clean-up pile.  On the other hand, if no one will ever encounter them, probably not worth messing with the code to fix them. Every code change is a potential new bug, they say.</p>
<p>But that isn&#8217;t what I think when I see a &#8220;Quality Slider&#8221; on a screen.  I think that people may think they can actually move it off of the centerline &#8220;3&#8243; position into a lower-quality setting as an up-front project &#8220;trade-off&#8221;.  This isn&#8217;t a tool used at the end to help figure out how to get an overdue release out-the-door, it&#8217;s an up-front tool. &#8220;Let&#8217;s add these 3 additional features and we&#8217;ll deliver it with a few more bugs.&#8221; Yikes. </p>
<p>And I fear (I know) it is common in the software industry to do just that.  At Azerity and other places I&#8217;ve worked we&#8217;ve had a zero-bug policy for releasing a release. Every bug that was identified and classified as a potential user issue had to be resolved and tested in order to release the product.  We of course also had an &#8216;exceptions&#8217; clause (in business, one has to be sensible) and if there were one or a handful of issues found at the very end of the test cycle that were not deemed to be likely to cause any user real problems, or if it may only affect, say, one admin user who could be counseled how to avoid it until a fix were released, we had a sign-off process for those.  But, believe it or not, that sign-off wasn&#8217;t needed in every release or even most releases.  With an appropriate &#8220;Plan&#8221;, schedule (sufficient &#8220;People&#8221; for the Plan) and reasonable new features or &#8220;Product&#8221; size (the 3 P&#8217;s), you shouldn&#8217;t ever consider quality as something to be traded off.</p>
<p><B>What does it mean to &#8220;slide&#8221; the quality slider to the the left (lower quality), from a &#8217;3&#8242; to a &#8217;2&#8242; or even a &#8217;1&#8242;?</B> If you ship software with known bugs that clients will find, it impacts tech support, causes escalation issues, client dissatisfaction, and costs more to fix later.  </p>
<p><B>What&#8217;s the cost of bugs in delivered code?</B> It&#8217;s a proven software fact that if fixing a bug when found in the current release takes the developer an hour (say $100), if instead it&#8217;s found by QA it&#8217;s $1000 (QA test time, goes back to development, potentially other code is impacted, code re-checked in, re-tested &#8211; at least a day total).  But if found by the client it could easily end up $10,000 or more.  (Tech Support time, trouble-shooting, reproducing it on in-house systems, getting developers on it &#8211; diverting them from their work, pulling the old branch to their dev systems to fix, merging code if other changes have occurred since).  Ten-fold increase in cost for each development phase the &#8216;bug&#8217; goes through without being caught.  (That is also the argument for good code reviews, unit tests, and skilled developers).</p>
<p>I can see an argument for saying the Quality slider moves right for FDA or satellite software (you often can&#8217;t fix &#8216;bugs&#8217; in space).  But that is more of a company-wide process issue (how is the program run, what types of tests are required for delivery), not a Agile project-by-project team &#8220;trade-off&#8221;.  So I still don&#8217;t see a reason/purpose for a &#8220;Quality&#8221; slider.</p>
<p>What bothers me with having &#8220;Quality&#8221; as a slider is I&#8217;ve been in companies where quality actually &#8220;is&#8221; considered a slider. I&#8217;ve been in meetings where engineering VP&#8217;s actually say &#8220;well, you can&#8217;t deliver code without bugs&#8221;. People I&#8217;ve worked with retort &#8220;of course you can &#8211; we&#8217;ve always done it.&#8221;  But too often it seems to be a common software industry belief that software inherently has to have bugs. In my experience, that isn&#8217;t the case. There needs to be a customer outcry against shoddy software deliveries.</p>
<p>I think having a Quality slider is wrong. While it&#8217;s true that in real life quality does get compromised. Requirements keep morphing until there&#8217;s no time to finish the job, engineering over-designs software beyond the requirements and then can&#8217;t deliver, or management doesn&#8217;t come up with the people needed to meet the schedule but the schedule doesn&#8217;t move. In those instances, often, as the deadline for releasing the product is fast approaching the decision is to &#8220;Ship as is &#8211; we&#8217;ll fix the bugs in the first maintenance release.&#8221; That&#8217;s always the wrong decision. </p>
<p>The right approach is to continue, throughout the project, to manage the P&#8217;s &#8211; Plan, People and Product. If the schedule (Plan) is the most important part and at some point the people you have are all you will have (at some point bringing on new bodies doesn&#8217;t help due to ramp-up time), smart managers will start cutting out functionality &#8211; quickly. I was always quite draconian with my red pen if releases looked like a release was in trouble. Reduce the load and save the schedule. Or negotiate for more schedule. But that&#8217;s at the END of the project cycle, not during the planning phase.  </p>
<p>Up front, where the project sliders are used, the test plan needs to be appropriate for the amount of code being implemented/modified.  </p>
<p>Quality isn&#8217;t a &#8220;Trade-Off&#8221;.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duckpondsoftware.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duckpondsoftware.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duckpondsoftware.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duckpondsoftware.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duckpondsoftware.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duckpondsoftware.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duckpondsoftware.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duckpondsoftware.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duckpondsoftware.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duckpondsoftware.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duckpondsoftware.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duckpondsoftware.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duckpondsoftware.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duckpondsoftware.wordpress.com/171/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=171&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duckpondsoftware.wordpress.com/2011/12/07/is-quality-a-trade-off/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/aec649c86688ee1a8e726cccb5ecc5e2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan</media:title>
		</media:content>

		<media:content url="http://duckpondsoftware.files.wordpress.com/2011/12/sliders1.jpg" medium="image" />
	</item>
		<item>
		<title>Theme Screening</title>
		<link>http://duckpondsoftware.wordpress.com/2010/09/23/theme-screening/</link>
		<comments>http://duckpondsoftware.wordpress.com/2010/09/23/theme-screening/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 05:32:04 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://duckpondsoftware.wordpress.com/?p=173</guid>
		<description><![CDATA[Last week in Agile training we learned about theme screening, theme scoring and relative weighting &#8211; tools to help the team decide how important new features were. It reminded me of the decision matrix my husband and I built when we were debating whether to move to Charlotte, North Carolina or not. We were living [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=173&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Last week in Agile training we learned about theme screening, theme scoring and relative weighting &#8211; tools to help the team decide how important new features were.</p>
<p>It reminded me of the decision matrix my husband and I built when we were debating whether to move to Charlotte, North Carolina or not.  We were living in Silicon Valley where we moved after college and had lived for several years.  Our best friends had moved out from the University of Utah ahead of us and we joined them.  We (my husband and I) both had jobs with Ford Aerospace and the company was starting a division in Charlotte to apply a technology built at Ford Motor for finding flaws in windshields &#8211; to apply that technology to the textile industry.  To find flaws in cloth.  </p>
<p>Mike had been offered the job as Finance Manager working for the new company division&#8217;s General Manager.  I was given the opportunity to work part time (as I had been doing since taking maternity leave) as software developer.  There were only a handful of new employees.  A start-up opportunity.  </p>
<p>So we crafted our decision matrix.  </p>
<ul>
<li>Friends</li>
<li>Area (The south &#8211; humid and unknown; California &#8211; wonderful)</li>
<li>Work opportunity (would mean an immediate promotion for Mike)</li>
<li>Family (ours were all in Utah &#8211; NC was much further away)</li>
<li>Monetary (better salaries were being offered; particularly considering cost-of-living</li>
<li>Etc.</li>
</ul>
<p>We weighted (added relative values) to the categories, evaluated them, and added up the results.  The results:  Don&#8217;t move to Charlotte.  We sighed, looked at each other.  Mike said &#8220;But what do you want to do?&#8221;  I said, &#8220;I want to go and give it a try.&#8221;  He said, &#8220;Me, too!&#8221;</p>
<p>And off we went.  It was a great decision.  We met great new friends.  Saw an area of the country we never would have.  Learned about the South.  And our youngest daugher was born there.  </p>
<p>All the tools for making decisions help &#8211; but in the end, also consider your &#8220;gut&#8221; reaction.  In the end, how much do you want it?  </p>
<p>If you REALLY want that feature that the decision matrix says is too big or has other constraints, rather than removing it from the list, a better alternative is to find a cheaper way to deliver the function that&#8217;s more streamlined.  Maybe your development team&#8217;s approach is more &#8220;elegant&#8221; or &#8220;robust&#8221; than this feature requires.  Maybe all the client wants is a simple button and the team was suggesting an entirely new feature. </p>
<p>An important part of the decision criteria is weighing the technical options.  If you want the feature badly enough, there may be a way to get it that is more streamlined and still fits into the plan.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duckpondsoftware.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duckpondsoftware.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duckpondsoftware.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duckpondsoftware.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duckpondsoftware.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duckpondsoftware.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duckpondsoftware.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duckpondsoftware.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duckpondsoftware.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duckpondsoftware.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duckpondsoftware.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duckpondsoftware.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duckpondsoftware.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duckpondsoftware.wordpress.com/173/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=173&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duckpondsoftware.wordpress.com/2010/09/23/theme-screening/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/aec649c86688ee1a8e726cccb5ecc5e2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan</media:title>
		</media:content>
	</item>
		<item>
		<title>The &#8220;Voice&#8221; of the Customer</title>
		<link>http://duckpondsoftware.wordpress.com/2010/09/17/the-voice-of-the-customer/</link>
		<comments>http://duckpondsoftware.wordpress.com/2010/09/17/the-voice-of-the-customer/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 05:41:35 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Customers]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://duckpondsoftware.wordpress.com/?p=154</guid>
		<description><![CDATA[A few months after the story in my last post, &#8220;The Need for a Process&#8221;, my customer, the Lt. Colonel, arranged a meeting where he brought some of his soldiers to talk about what functions and features they wanted added or changed in the current software. The software was not used on the front-line. It [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=154&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few months after the story in my last post, <a href="http://duckpondsoftware.wordpress.com/2010/09/19/the-need-for-a-process/">&#8220;The Need for a Process&#8221;</a>, my customer, the Lt. Colonel, arranged a meeting where he brought some of his soldiers to talk about what functions and features they wanted added or changed in the current software.  The software was not used on the front-line.  It was back-line communications software.  The hardware consisted of a PDP-11 which captured the feeds/signals and a larger VAX/VMS system to analyze and process the results.</p>
<p>One young Army guy got up to talk about the list of change requests and why they were needed.  He listed as a top priority changing the queuing algorithm.    Humm.  It seemed to me that there were a lot of other items on the list that deserved more attention.</p>
<p>“Let me give an example,” said the Army guy.</p>
<p>“One day we were monitoring communications when all of the front-line systems were attacked.  Everything went off-line.  The PDP-11 also went down.  We brought it back on-line and it started processing messages from the queue.&#8221;  (This was Desert Storm, remember.)</p>
<p>&#8220;A half-hour later it got to the last message that had been posted on the queue.  &#8216;Incoming SKUD!&#8217;  It would have been really nice&#8221;, he said, pausing for the irony to sink in, &#8220;if that had been the first message we received instead of a half-hour later.&#8221;</p>
<p>Incoming SKUD?  Ah, input received.  While the system wasn’t designed for the front-line it had to fill the role when front-line systems went down.  Wow.  OK then.  Priority 1!  Change the queuing algorithm!</p>
<p>Sometimes it isn’t clear why clients would want changes and enhancements.  It certainly helps to understand your customer!</p>
<p><strong>The Best Reward</strong></p>
<p>While I worked with the Lt. Colonel, I tried hard to understand things from his perspective.  It made sense how upset he was with our “perceived” software coverup when one realized he was on his way the next day with the software to Desert Storm and his soldiers depended on our software.  That’s a lot of pressure.</p>
<p>A few years later I accepted a job to ASK/Ingres, leaving Ford Aerospace after almost 20 years.  The Lt. Colonel was in town for a review meeting and was told that I had resigned.  Before our meeting, he caught me in the hall.  </p>
<p>One of the initial tasks on his project before I’d come on-board was to convert the software from the Ingres database to Oracle.  He stopped me in the hall to say he was glad we had a chance to work together and said “Maybe we went the wrong way” (meaning from Ingres to Oracle instead of visa versa since I had selected to work at Ingres).  Having this stalwart army customer believe in my decisions was one of the best indications that I had been hearing the &#8220;Voice of the Customer&#8221;.  </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duckpondsoftware.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duckpondsoftware.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duckpondsoftware.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duckpondsoftware.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duckpondsoftware.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duckpondsoftware.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duckpondsoftware.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duckpondsoftware.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duckpondsoftware.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duckpondsoftware.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duckpondsoftware.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duckpondsoftware.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duckpondsoftware.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duckpondsoftware.wordpress.com/154/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=154&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duckpondsoftware.wordpress.com/2010/09/17/the-voice-of-the-customer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/aec649c86688ee1a8e726cccb5ecc5e2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan</media:title>
		</media:content>
	</item>
		<item>
		<title>The Need for a Process</title>
		<link>http://duckpondsoftware.wordpress.com/2010/09/16/the-need-for-a-process/</link>
		<comments>http://duckpondsoftware.wordpress.com/2010/09/16/the-need-for-a-process/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 05:33:48 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://duckpondsoftware.wordpress.com/?p=150</guid>
		<description><![CDATA[In an Agile class this week, someone asked the question “How can you be sure the sprint testing covers all code changed? Developers often make a change in some different area of code to fix something and testers don’t know to test that area at all since it wasn’t part of the sprint.” Huh? That’s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=150&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In an Agile class this week, someone asked the question “How can you be sure the sprint testing covers all code changed?  Developers often make a change in some different area of code to fix something and testers don’t know to test that area at all since it wasn’t part of the sprint.”</p>
<p>Huh?</p>
<p>That’s a good example of a team that needs a good process.  And he wasn’t the only one in the room waiting for an answer.   I learned the answer to that question in the early ‘80s.  And the lesson was a hard one. ..</p>
<p>I had just been assigned as manager for the Electronic Defense Systems software department for Ford Aerospace.  It wasn’t my first management job but was my first position responsible for government customer deliverables rather than internal projects like developing in-house CASE tools or complex algorithms to help the engineers building satellites and ground stations.  The five software sections I would manage were each working on separate contracts for different arms of the military.  I had met the five supervisors in my new department and their developers but hadn’t officially started work when my boss, Sharon, who headed up all software engineering for Ford Aerospace came to me and said that the customer for one of my new contracts, an Army Lt. Colonel, was going to be giving awards for completing the testing of the release and wanted me to come to the awards ceremony to meet him and see the team get their awards.<br />
It was about 5 PM as we walked across the campus.  But as we started up the steps to enter the building the doors opened and young men and women, the developers and testers, came streaming out and down the front steps with tears in their eyes or outright sobs. </p>
<p>“What’s going on?” asked Sharon.</p>
<p>They couldn’t answer and ran by us.  The company&#8217;s General Manager was hurriedly entering the building.  He saw Sharon and said sternly “I was called to a meeting with the Lt. Colonel. You&#8217;d better come with me.”<br />
We three went upstairs into a warehouse room where an impromptu meeting was being held.  The head of Systems Engineering, Ray (Sharon’s boss) was already there with the Lt. Colonel.  The Lt. Colonel was a tall man in full army fatigues.  Red flat-top hair with a face as red as his hair.  He was livid.<br />
“I normally only give companies one chance.  But for you&#8221;, he said glaring at our GM, &#8220;this is the third strike.”</p>
<p>He saw me and said “Who’s this?”</p>
<p>Sharon told him I was the manager of the software group.  He glared at me and said “How are you going to remedy these problems?”  Sharon, to my relief, quickly let him know it was my first day as manager.  He directed us to find out what was wrong and get it fixed that night or Ford would never have another contract with his division.  But, he said, if we want to re-run the test scenarios he was willing to spend the night here but he had to be on a plane, with the verified software by 8 AM in the morning.  Sharon said we’d find the problem and run the tests.<br />
We went to the supervisor’s office.  The supervisor was a tough, seasoned, ex-Marine used to conflict and discourse, was also crying and said “This is it, I’m through.  I quit.”</p>
<p>“What happened?” </p>
<p>“We started the test scenarios and the first test was simply adding a new user.  There was a system error.  The SETA (Systems Engineering and Technical Assistance) contractor quickly jumped to the conclusion that the code wasn&#8217;t complete and we must be hiding problems and issues.  The Lt. Colonel blew up, yelled at everyone, and they left in tears.  I don&#8217;t understand it.  We worked long and hard on this release and the tests we ran were perfect.”</p>
<p>A senior programmer, one of Ford’s best, appeared in the doorway.  “Excuse me,” he stammered.  “I’m afraid I know what is wrong.”</p>
<p>Seems he, at the last minute, had noticed a small issue in the software.  Although he was well aware that the process was to first notify the Configuration Manager (CM) before changing anything, and this change wasn&#8217;t even needed for this delivery, he thought it was just a simple quick fix.  Unfortunately, he failed to realize that that the code was shared by a newly implemented user registration function and his change broke that function.  He had reverted the code to the prior version and was sure it would now pass the tests.</p>
<p>The team was rounded back up and were all more than willing to spend the night re-verifying the tests to exonerate themselves.  In the morning the tests had all been passed with glowing colors and the Lt. Colonel at 7 AM left the awards to be passed out to the team later in the day.  </p>
<p>Ironically, the senior developer who caused the issue was the one who was scheduled to travel with the Lt. Colonel to install the software in Saudi Arabia.  The LT. Colonel seemed to take pleasure in telling him before they left that he’d need to shave his beard.  “What?” the developer complained.  “Well, it’s up to you, but the gas masks don’t fit well over beards.” This was Desert Storm.  He shaved.</p>
<p>A good process needs to be both easy to follow and so integrated into the workflow that it’s second nature.  It isn’t a burden, just a simple step in the normal activities.  And developers have to “buy in” that it’s required, important, and a step that cannot ever, ever be skipped.  The issues caused may not be as significant as the story above, but if changes are made to code without a process, there will be issues.  This is true for all projects &#8211; from major defense software down to little start-ups.</p>
<p>The process we implemented at Azerity was that our SD Tracker tool was the tracking system for every change.  Every change to our requirements docs or code needed to be an “SDR” in SD Tracker.  Adding an SDR was quick and easy.  If a developer wanted to change code for any reason, all they needed to do was enter an SDR saying that.  Of course the development managers had guidelines about when and which developers could act immediately on their desire to change other areas of code and when reviews or other conditions were needed to be met.  Then QA knew it needed verification and we could confidently tell our clients that our Release Notes listed all areas of code changes which helped reduce their SOX testing on maintenance releases.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duckpondsoftware.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duckpondsoftware.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duckpondsoftware.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duckpondsoftware.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duckpondsoftware.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duckpondsoftware.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duckpondsoftware.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duckpondsoftware.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duckpondsoftware.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duckpondsoftware.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duckpondsoftware.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duckpondsoftware.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duckpondsoftware.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duckpondsoftware.wordpress.com/150/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=150&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duckpondsoftware.wordpress.com/2010/09/16/the-need-for-a-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/aec649c86688ee1a8e726cccb5ecc5e2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan</media:title>
		</media:content>
	</item>
		<item>
		<title>Rapid Development and the Easter Bunny</title>
		<link>http://duckpondsoftware.wordpress.com/2009/04/20/rapid-development-and-the-easter-bunny/</link>
		<comments>http://duckpondsoftware.wordpress.com/2009/04/20/rapid-development-and-the-easter-bunny/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 22:55:11 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://duckpondsoftware.wordpress.com/?p=87</guid>
		<description><![CDATA[We received Easter candy from our daughter, Kristin, who is living in Australia while getting a master&#8217;s degree in Wildlife Conservation. She pointed out on her Easter card that Australia must have been the origin of the Easter Bunny. After all, &#8220;Australia is the only place where you find egg-laying mammals (monotremes).&#8221; (e.g., the Platopus). [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=87&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<table cellPadding="0" cellSpacing="0">
<tr>
<td vAlign="top">We received Easter candy from our daughter, Kristin, who is living in Australia while getting a master&#8217;s degree in Wildlife Conservation.  She pointed out on her Easter card that Australia must have been the origin of the Easter Bunny.  After all, &#8220;Australia is the only place where you find egg-laying mammals (monotremes).&#8221; (e.g., the Platopus). </p>
<p>Interesting since I&#8217;ve been thinking a lot lately about the tortoise and the hare. You know the old adage &#8211; where the hare is fast and quick to the finish line but the tortoise wins the race. Initially one has to think about the &#8220;Agile&#8221; (i.e., hare-like, fast and hoppy) software development methodologies vs. the old school &#8220;Waterfall&#8221; methods. Yes &#8211; the waterfall methods were somewhat like a tortoise but they were worse, more like a tortoise that had to stop every few steps and wait for the gate to open so he could continue on to the next phase of the journey.</td>
<td vAlign="top"><img src="http://www.duckpondblog.com/img/platy2.jpg" alt="Monotreme - Easter Bunny?" height="200" /></td>
</tr>
</table>
<p>The problem I have with &#8220;Agile&#8221; technologies is the somewhat &#8220;gleeful&#8221; rejection of any and all documentation.  &#8220;We are going to be a small team so we&#8217;ll just have discussions and come up with the right answers as a team.&#8221;  Yeh, right.  What happens when you need to do updates to your software.  Is this &#8220;real&#8221; software that has users and a next release?  What happens then?  How does anyone know what the software actually does if it was designed and developed by committee and no document artifacts remain that accurately reflect the software &#8220;as built&#8221;. </p>
<p>&#8220;As built&#8221; documents are key to (1) accountability (for marketing, developers, and QA) and (2) an understanding of what the software is supposed to do so that knowledgeable changes can be made and (3) resources so that Technical Support/Customer Services can answer the call about &#8220;Is the software supposed to be doing this </p>
<p> I don&#8217;t think &#8220;Agile&#8221; is &#8220;Practical&#8221;.  See our Requirements Management blogs for better ideas about how to really be quick-on-your-feet, focused, and develop high quality and low-cost software !</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duckpondsoftware.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duckpondsoftware.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duckpondsoftware.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duckpondsoftware.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duckpondsoftware.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duckpondsoftware.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duckpondsoftware.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duckpondsoftware.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duckpondsoftware.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duckpondsoftware.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duckpondsoftware.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duckpondsoftware.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duckpondsoftware.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duckpondsoftware.wordpress.com/87/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=87&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duckpondsoftware.wordpress.com/2009/04/20/rapid-development-and-the-easter-bunny/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/aec649c86688ee1a8e726cccb5ecc5e2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan</media:title>
		</media:content>

		<media:content url="http://www.duckpondblog.com/img/platy2.jpg" medium="image">
			<media:title type="html">Monotreme - Easter Bunny?</media:title>
		</media:content>
	</item>
		<item>
		<title>Simplicity of Design</title>
		<link>http://duckpondsoftware.wordpress.com/2009/02/28/simplicity-of-design/</link>
		<comments>http://duckpondsoftware.wordpress.com/2009/02/28/simplicity-of-design/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 23:54:13 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Customers]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://duckpondsoftware.wordpress.com/?p=85</guid>
		<description><![CDATA[We just returned from our month-long vacation through New Zealand and Australia. What a trip ! The highlight in Sydney was seeing the beautiful Opera House It’s really an architectural marvel. Such a beautiful design but was quite a construction feat. We took the tour and found out about the history of the building. There [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=85&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We just returned from our month-long vacation through New Zealand and Australia. What a trip ! The highlight in Sydney was seeing the beautiful Opera House</p>
<p><img src="http://www.duckpondblog.com/img/SydneyOperaHouse.jpg" /><br />
It’s really an architectural marvel. Such a beautiful design but was quite a construction feat. We took the tour and found out about the history of the building.  There was a competition for the design and the design selected was really only a rough sketch.  The shells of the competition entry were originally of undefined geometry,<sup> </sup>but early in the design process the &#8220;shells&#8221; were perceived as a series of parabolas supported by precast concrete ribs. However, engineers were unable to find an acceptable solution to constructing them.</p>
<p>From 1957 to 1963 the design team went through at least twelve iterations of the form of the shells trying to find an economically acceptable form (including schemes with parabolas, circular ribs and ellipsoids) before a workable solution was completed. Utzon came up with an idea of making all the shells of uniform curvature throughout in both directions which was called a <em>eureka</em> moment.<br />
<img src="http://www.duckpondblog.com/img/sphere1.png" alt="Sphere1" /> <img src="http://www.duckpondblog.com/img/sphere2.png" alt="Sphere2" /><img src="http://www.duckpondblog.com/img/sphere3.png" alt="Sphere3" /><br />
The idea was that the shells were developed according to a spherical geometry providing a common denominator, the same spherical surface to deal with, with a similar curvature throughout.  This was an elegant solution to a construction, which would otherwise have had to be done with a large amount of scaffolding and shuttering, both for the interior and exterior shape of the shells.   Now the shells could be sub-divided into ribs, which again could be divided into smaller elements, which could be cast within formwork representing the largest rib-entity. Thus it was possible to pre-cast the concrete-shells in smaller pieces and assemble these pieces on location.  Because of the simple and consistent mathematical principles that were applied to the design, construction was both possible and much easier and simpler than it would have been if they had continued with the original parabolic concepts.</p>
<p>Software architecture also benefits from simplicity of design.  A simple, uniform design reduces development time, improves maintainability, and makes modifications quicker and easier.  </p>
<p>Often developers and software architects think they have an “elegant” design because they have tried to design very generically and/or very object-oriented, used a lot of open software components, and/or tried to plan for yet undefined requirements.  But often the result is software that is much more complicated and bulky than needed.  Over-designed, bulky software is costly to develop and maintain.</p>
<p>How can you tell if you truly have a good design or not?  Here are the five keys to good software design:</p>
<ol>
<li>Is there a simpler approach</u>?  In practice, the simplest approach is always the best.  This goes against some software architect’s instincts when they feel they need to address unspecified requirements, but if the requirements are not stated yet, second guessing, if it adds complexity, should be avoided.  If there are implementation strategies that are smart and brainy but overly complex, scrap those also.  Keep it simple.</li>
<li>Is it customer-focused</u>?  Often design trade-offs are made that make the developer’s life easier but impact the customer negatively.  If there is no benefit for the customer, the code should be removed.   Less code is always better.  (This does not include features that improve maintainability or delivery since they will affect the customer positively.  But does include features or technology choices or functions that only make the life of the developer easier).</li>
<li><u>Is it designed for the expected user base</u>?  Often developers expect users to be as technically savvy or computer-adept as they are and inadvertently implement software that is not accepted by their user base.  This was much of the cause of the downfall of Seibel – what the software did was great.  The companies that implemented it though just couldn’t get their sales users to use it regularly.  Hence the value of capturing important sales data was not realized.  This is particularly true for software that users will need to pick up and use without the benefit of formal training classes.  Or for users who don’t use the software very often but need to be able to just sign on and quickly get their job done.  Or for users who have other limitations.  Remember the old adage “Know your users” and take it to heart.</li>
<li><u>Was performance considered</u>?  From top to bottom, software design should always consider the end performance.  Performance should be a factor in basic architecture principles as well as 3<sup>rd</sup> party tool selection.  Nothing impacts usability more than bad performance.  Except bugs.</li>
<li><u>Is it reliable, maintainable, supportable</u>? Quality:  Clean, simple software tends to be more reliable because there’s less that can go wrong. In the software industry, often there’s complacency about bugs – some people think software always has bugs.  Typically though bugs are a result of overly complex design, large/bulky architectures, which result in not enough test time.  Simple, clean designs take less time to develop and less time to test.  Installable/Upgradable:  Especially for applications that need to be installed at a client site, the initial installation and ongoing conversions to the latest releases need to be quick and easy.  Desktop software is often quite good at automatic installation and updates; but surprisingly enterprise application software typically needs to be hand-crafted and customized on-site.  And each conversion to a newer release can cost companies millions of dollars.  There is no real reason why enterprise application software should not be easily installed and upgraded.  No customer-focused reason anyway.  Although vendors do make more Services and Consulting money that way.  Reliable:  Most software nowadays, especially enterprise software, quickly becomes mission critical and companies who rely on it need it up and running 24 x 7.  That means it must have high quality, be quickly upgradable, and be scalable to meet a company’s growing needs.</li>
</ol>
<p>Good design separates clean, customer-acceptable software from gorilla software.  Why is good software so hard to develop?  Companies delivering clean, customer-focused software may not make millions in services fees, but some day (hopefully) customers will start pushing back on the software gorillas who charge millions for every major upgrade.  When that happens, companies who know how to develop clean, simple software will be in high demand.</p>
<h4>History of enterprise software according to Jan: </h4>
<ul>
<li>1970s &#8211; Large companies develop their own internal Manufacturing Resource Planning and Finance systems to meet their specific needs.  Because these are one-off projects, the cost to continue to address new requirements is costly; many systems become out-of-date and/or costly to maintain.</li>
<li>1980’s – Software vendors begin delivering MRP and Finance solutions and some Legacy (internally built) systems are replaced. </li>
<li>1990’s – Software vendors combine various application solutions (MRP, Finance, HR, etc.) into one Enterprise Resource Planning (ERP) software package – one size fits all – and more Legacy systems are replaced.   The ERP solutions try to address all automation for every industry with a single software offering.  Thus the software requires huge customization efforts to meet each company’s needs; installation and upgrades costs increase.  Specialized “Systems/Consulting” companies are formed solely for the purpose of installing, customizing, and upgrading the large platform software.  </li>
<li>2000’s – Software vendors consolidate into a few mammoth gorilla vendors.  Large software infrastructure layers are developed to integrate all of the various application pieces from the acquired companies into one single “platform”.  Systems became even more complex; software costs for installation and maintenance continue to rise.  A few smaller vertical-based vendors still provide clean simple software but competition with the gorillas is fierce.  CIOs are convinced by the gorilla software vendors that enterprise software needs to be big and needs to sit on monolithic platforms in order to “integrate” and be “enterprise-worthy”.  Yet few, if any, CIOs are able to realize the promise of easy integration using the big monolithic platforms, even if they stay with a single vendor.  Implementations and upgrades take years and millions of dollars to complete. </li>
<li>2010’s – Companies reject the big vendor approaches.  They refuse to pay millions of dollars for each installation and upgrade.  Clean, simple software is demanded.  The software industry evolves to meet the need.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duckpondsoftware.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duckpondsoftware.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duckpondsoftware.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duckpondsoftware.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duckpondsoftware.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duckpondsoftware.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duckpondsoftware.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duckpondsoftware.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duckpondsoftware.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duckpondsoftware.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duckpondsoftware.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duckpondsoftware.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duckpondsoftware.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duckpondsoftware.wordpress.com/85/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=85&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duckpondsoftware.wordpress.com/2009/02/28/simplicity-of-design/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/aec649c86688ee1a8e726cccb5ecc5e2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan</media:title>
		</media:content>

		<media:content url="http://www.duckpondblog.com/img/SydneyOperaHouse.jpg" medium="image" />

		<media:content url="http://www.duckpondblog.com/img/sphere1.png" medium="image">
			<media:title type="html">Sphere1</media:title>
		</media:content>

		<media:content url="http://www.duckpondblog.com/img/sphere2.png" medium="image">
			<media:title type="html">Sphere2</media:title>
		</media:content>

		<media:content url="http://www.duckpondblog.com/img/sphere3.png" medium="image">
			<media:title type="html">Sphere3</media:title>
		</media:content>
	</item>
		<item>
		<title>Purple Hair</title>
		<link>http://duckpondsoftware.wordpress.com/2008/11/29/purple-hair/</link>
		<comments>http://duckpondsoftware.wordpress.com/2008/11/29/purple-hair/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 00:05:31 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://duckpondsoftware.wordpress.com/?p=101</guid>
		<description><![CDATA[Working for an Aerospace company in the ‘80s, the dress code was much more formal than it is today.  Women wore pant or dress suits and men rarely showed up for work without a tie.  While engineers at times dressed less formally, particularly those who stayed in the computer labs or on the engineering floors, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=101&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Working for an Aerospace company in the ‘80s, the dress code was much more formal than it is today.  Women wore pant or dress suits and men rarely showed up for work without a tie.  While engineers at times dressed less formally, particularly those who stayed in the computer labs or on the engineering floors, they still wore khakis and sport shirts and their managers were always in suits and ties.  And everyone showed up for meetings with the customer in business attire. </p>
<p>I was lucky enough during the early ‘80s to have a prime job managing the company’s technology software department which included Research &amp; Development projects in interesting software areas such as Artificial Intelligence, Computer Aided Software Design, and Software Security.  A group of very knowledgeable PhDs worked on the Trusted Software Security project.  They had been working with the government and with Sun Microsystems for several years, pushing the envelope on secure software and had been awarded steady R&amp;D contracts for several years in a row.  The PhDs were well-known in the security circles, often asked to gave briefings at software security conferences.    </p>
<p>At a couple of conferences in a row, they’d encountered a young software engineer who they were very impressed with but who lacked the educational credentials to typically be hired into such a the team.  But they were all so excited by this young man’s abilities that they convinced me to hire him as their assistant with the thought that they’d over time convince him to return to obtain his PhD. </p>
<p>So Mark, our new Asian security engineer, started working for the team.  He arrived at work wearing the T-Shirts and jeans he’d worn on campus at UC Berkeley.  On one of the first days he was on-board, I spotted Mark at the other end of the aisle of cubicles as I walked towards my office.  But it wasn’t his T-Shirt and jeans that caught my attention,  it was his shock of bright orange hair.   I veered into his supervisor’s office. </p>
<p>“Did you see Mark today?”  I asked. </p>
<p>Chagrined Dave said “Yes, orange.  I already talked to him about it but there’s no customers in today so I just told him to wash it out tonight.” </p>
<p>“Humm,” I muttered and went to my office. </p>
<p>I didn’t think much else about it since the next day Mark showed up with his normal, although somewhat long, black hair.  And the team’s research was going very well.  They were working hard, long hours but were making great progress.  Then came the day for the big customer review.  An important day to determine how much R&amp;D funding would be awarded for the next year for the project.</p>
<p>The team had decided to have Mark give the demo – he was quicker at the keyboard and the demo flowed very well when he gave it.  I said they’d need to be sure he was dressed appropriately and they said they’d already spoken to him about it and one PhD had given him a tie to wear and Mark had described an appropriate shirt already in his closet.</p>
<p>The day of the demo I arrived at work and, walking to my office, spotted Mark out of the corner of my eye and marched directly into Dave’s office.   Dave didn’t even dare look at me.</p>
<p>“I know, it’s purple.”</p>
<p>Yes indeed – Mark not only was wearing his normal T-Shirt and jeans, today his hair was shocking purple.  Bright purple.  But it was too late for anyone else to learn the demo.  And the Customers, Army Intelligence Officers, had already arrived and were waiting in the conference room.  So nothing to do now but wait for the reports of how it went.</p>
<p>Later in the afternoon the head security PhD came into my office beaming. </p>
<p>“It went great!”  He said.</p>
<p>I was wary.  “And what about his hair?”</p>
<p>“The customers certainly looked shocked when he entered the room.  But once Mark started in on the demo they forgot all about it.  He was so knowledgeable and answered all their questions with ease.   I’m sure we’ll get our funding next year.”</p>
<p>“But you’d talked to him about his clothes and hair – why did he show up that way?” I said, still concerned that he may just be rebellious which would eventually cause issues. </p>
<p>Mark had told them that he’d gotten up that morning and put the shirt and tie on, looked in the mirror and felt so out of place and nervous he didn’t think he would be able to give the demo or face the customers.  He panicked.  He was so ill at ease in the uncomfortable clothes.  And whenever he dyed his hair, he felt his shocking hair diverted attention which made him feel comfortable and at ease.  He was so worried about not doing a good job that decided he had to show up looking the only way he felt confident.</p>
<p>The security project was expanding and we’d hired a woman PhD from the East Coast.  She came to start work while her husband and two teenage sons remained back East to wrap up the sale of the house, packing and moving.  One afternoon after a week at work she came into my office looking very upset.  She told me she had just gotten a call from her oldest son and that her husband had had a heart attack and died.  She was worried that she didn’t have any vacation and had just started work.  I assured her that she didn’t need to worry about that.  To go back East and take all the time she needed – that her job would be waiting for her.  I asked her if she needed anything from us and she said she wondered if she could use her office phone to make plane reservations (since at that time calls outside the building were not allowed) but of course, anything she needed.</p>
<p>I stopped by her cubicle during the afternoon and she said that the airlines were very sympathetic and working with her and that she said she’d gotten a flight for that evening.  Mark was in her cubicle helping her – he’d asked Dave if he could make sure she had a flight.  The next day I learned more.  Mark had insisted on driving her home, worrying that she may be too upset to drive safely.  He had cooked her dinner, helped her pack and driven her to the airport.  I then realized he’d jumped in and done more for her than anyone else at the company had – he had shown real compassion while I had been judging him on the color of his hair and clothes he wore.  And I said to Dave, “Tell Mark he can show up with any color hair he wants.” </p>
<p>Prejudice against purple hair seems like such a small thing but most of us have many prejudices.  Growing up in Utah, I had been prejudiced against blacks without knowing it.  I recognized my prejudices in college and worked hard to overcome them.  One day shortly after I started as a software engineer at Ford Aerospace, I was talking to someone about three Philco computer engineers I met and someone asked me “You mean Emery, the black engineer?”  I had to stop and think because I wasn’t sure any of them was black.  The next day I looked more closely and sure enough, Emery was black.  I was so proud of myself that I hadn’t even noticed.  Now Mark had taught me to also not judge by the color of one’s hair.</p>
<p>When Barack Obama was born, many states considered his parent’s marriage, marriage between a black and a white, illegal.  When we lived in Charlotte, North Carolina in 1978, our company’s black engineer and his blond wife would be yelled at as they walked together down the street or worse &#8211; bottles were sometimes thrown at them from passing cars.  They eventually had to move to Colorado where the prejudices weren’t so strong.  </p>
<p>Jumping to November 4, 2008.  Such a wonderful day – where America showed that we have all gotten over so many prejudices during the years.   A day of change, a day where racial prejudices have been set aside,  at least in one of the most important arenas, the Office of the President of the United States.  Yet on the same day California, the most progressive state in the union, voted “Yes” on Prop. 8 to add discrimination to the state constitution.  How ironic that we take one huge step towards acceptance and equality and one huge step backwards.   </p>
<p>Hopefully it won’t be too many years before we can mature to also accept gays and lesbians and their desire to be married and accepted into the mainstream.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duckpondsoftware.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duckpondsoftware.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duckpondsoftware.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duckpondsoftware.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duckpondsoftware.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duckpondsoftware.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duckpondsoftware.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duckpondsoftware.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duckpondsoftware.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duckpondsoftware.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duckpondsoftware.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duckpondsoftware.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duckpondsoftware.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duckpondsoftware.wordpress.com/101/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=101&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duckpondsoftware.wordpress.com/2008/11/29/purple-hair/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/aec649c86688ee1a8e726cccb5ecc5e2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan</media:title>
		</media:content>
	</item>
		<item>
		<title>Smooth Sailing</title>
		<link>http://duckpondsoftware.wordpress.com/2008/08/19/smooth-sailing/</link>
		<comments>http://duckpondsoftware.wordpress.com/2008/08/19/smooth-sailing/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 22:53:22 +0000</pubDate>
		<dc:creator>Jan</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://duckpondsoftware.wordpress.com/?p=83</guid>
		<description><![CDATA[We were out boating last weekend (as usual) and there was a group of folks on our friend’s sailboat that began discussing software. Someone causally commented that software, of course, can never really be documented. “Right,” said another. “If you try to document it, then the code changes, and so the documentation is always out [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=83&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img width="400" src="http://www.duckpondblog.com/img/Boating08_115R.jpg" alt="Sailing" /><br />
We were out boating last weekend (as usual) and there was a group of folks on our friend’s sailboat that began discussing software.  Someone causally commented that software, of course, can never really be documented.  “Right,” said another.  “If you try to document it, then the code changes, and so the documentation is always out of sync.  It’s impossible!”</p>
<p>All agreed that design documentation maintenance is an unattainable goal. Some were engineers from a big major networking company, one from a mid-sized software company.  </p>
<p>But the advantages of having a real &#8220;As Built&#8221; spec seem so obvious.  A spec that is always updated <em>before</em> code changes are made, that is used by QA for testing and used by Tech Support for customer support and questions, a spec that unquestionably contains the use case scenarios and business algorithms implemented by  the code.  The advantages of having such a spec is so key to producing clean, quality code and so necessary for clear communications between the developers and the customer advocates (Product Marketing, Tech Support) that it seems to me an obvious requirement for effective software.  </p>
<p>Yet these software professionals were in agreement that maintaining such a spec is not feasible.  Perhaps I shouldn’t have been surprised.  When interviewing candidates recently for a VP of Engineering position, I repeatedly found each candidate had a similar story – whether from a small start-up, a major application vendor, or somewhere in-between – each said they had never found a way to successfully document and track requirements to design to code.  It wasn’t feasible, each said.  Plus others I knew from a mid-sized software application company had same opinion.  Product Marketing creates the Marketing Requirements Document in Microsoft Word.  Engineering takes that and creates the design and then codes.  At the end of the cycle, although the PM team attempts to maintain the MRD in-sync with the code, they say it isn’t ever really possible. Plus because some MRD documents describe enhancements to existing modules, they are “change” documents, and after a few releases there was no complete document defining the complete feature.   One solution companies have tried is to assign the task of writing an “As Built” document to the Technical Documentation team after the code is released.  Seems like a good idea?  It would only be valid if the document were thoroughly tested by QA but that would require double-testing so is never done.  Hence it’s only the tech writer’s best guess at specifying what the code is actually doing.   </p>
<p>Yet I still thought these companies were anomalies.    Even though, my friend and consulting partner, Anita continually encounters the same feedback from the students in her <a target="_blank" href="http://www.duckpondblog.com/dps_consulting.html">UC Santa Cruz training courses on requirements management</a>, it seemed that these companies must not represent the majority.  Surely most companies must have found the solution. Because the solution was not that hard to find.<br />
 But to hear again this weekend the wide-spread belief that maintaining design documentation isn’t viable me stop and take notice.  I know the “Agile Software” community discusses the advantages of relatively sparse use of documents.  But seems to me that the discussion is at the wrong level. By eschewing documentation we are losing a key component of an effective software process.<br />
And what I’m advocating doesn’t need to take more time or effort.  In fact, just the opposite.  There is a level of documentation that can be easily maintained, aids every organization throughout the software company, and should be as much a part of a normal software development cycle as configuration management tools are.  (Hopefully no one reading this blog would tell me they do not believe in checking software into a configuration management tool).  <strong>Maintaining real, code-synchronous documentation is feasible and just requires the right tools and corresponding processes.</strong></p>
<p>Yes &#8211; it’s an easy problem to solve.   At Azerity, my company, we proved that having the right process and not only were feasible, the result was reduced headcount needed to design, develop, and maintain code.  It was actually amazing at the size and complexity of software we were able to deliver and support with so few people.  And a key component was the concept of complete, “as-built”, tested specs describing each application module.  These specs became core to our company, our software bible, the key to our IP, and only the code itself was more revered and protected.</p>
<p><u>Our journey – how we got there.</u>  For the first few years as a start-up, we had effective processes for our size company because we had implemented, from day one, our Tracker tool (see <a target="_blank" href="http://www.duckpondblog.com/dps_dptracker.html">Tracker</a> tab) which was much more effective than open source tools like Bugzilla, JIRA or their equivalents.  For a team of less than ten with an application still small enough that key individuals could grasp the entirety of the product in their heads, we were able to implement and enhance the application effectively using only SD Tracker, CVS for code management, and MS Word for specs.  </p>
<p>But then we got larger quickly as a company and the application grew.  We doubled the engineering team.  With plans to double the engineering staff once more we had a major expansion of new modules and enhancements being designed by our new Product Marketing team.  We were becoming a real software company.  </p>
<p>We hired a VP of Engineering and I took on the CTO position.  Her first observation upon arriving was that using MS Word for specs wasn’t going to continue to be viable.  And it was quickly apparent that she was right.  We had a new Product Marketing team that were making spec changes, the developers were having difficulty tracking what changed from revision one, two, three of the Word docs.  Some companies try to handle this by checking the Word documents into a code management system but that still doesn’t help the engineers clearly identify the delta between the spec and existing code.  </p>
<p>Anita, our new VP, had recently completed a requirements tracking tool comparison at her prior company and Telelogic’s DOORs product (now owned by IBM) was the clear choice.  We decided we didn’t need to re-evaluate tools and we purchased DOORs.  </p>
<p>The beauty of the DOORs product is that it is similar to using Word so is easy to learn.  But most importantly each requirement is automatically tagged with a unique ID that stays with the requirement even if you cut and paste and totally reorganizes the document which isn’t possible with Word or any tool that claims it can export and re-import to/from Word.   Each requirement can also be tagged with other attribute columns.  For example, we added a Tracker number attribute and other columns.   Since DP Tracker was used for change tracking, workflow, developer and QA assignments, and ongoing developer/PM discussions, the Tracker number tied the spec changes to the developer’s work list and the rest of the software process all the way through to QA and deployment.  Each time we made a spec revision in DOORs, the latest version was exported to centrally stored HTML files which all developers could access without having to own a DOORs license.  Hence although requirements tracking tools are quite pricey, by only having to purchase licenses for the few key individuals that updated the specs, it was still an affordable tool.  Tracker also linked to our code management system (CVS) so we had a complete, consistent tracking from specs to completed code to test.  I’ve performed a lot of evaluations of similar tools over the years and unfortunately find that most lack some of the key features that made DOORs so effective.  Hopefully IBM will continue to support and maintain DOORs.  The IBM sales representatives seem to be pushing their Rational tool for software requirements tracking but it is missing key components we found so important.</p>
<p>There were two results of implemented process:  (1) Because our tools were linked (DOORs, Tracker, and CVS) the result was a consistent flow from what Marketing was requesting in behalf of the customer, through design, code, test and delivery.  In other words, the engineers actually built what the customer wanted and could do so with less time and energy.  And (2) DOORs contained true “As Built” specs.  QA tested against the DOORs specs as part of their standard testing and so the company was assured that what DOORs contained matched the actual code.  Because the DOORs specs were accurate, other teams (Technical Support, Professional Services, Sales) could quickly access (via the HTML exported pages) exactly what the code did or did not do.  </p>
<p>The DOORs specs were not design docs in the true sense of the word.  No UML or lower-level implementation concepts.  DOORs documented the user scenarios (screen shots and descriptive text), business functions, as well as lower-level information (business algorithms, policies enforced, and even database schema).   They contained everything needed to communicate organization-wide what the software was supposed to do and did do.</p>
<p>And this approach simplified everything.  Engineers were happy because they had clear direction about what to change when.  And if a customer reported a “bug”, there was an easy way to tell if it was really a “bug” (developer mistake) or new, previously unidentified need because if it was in DOORs but the code didn’t work that way, it was a bug.  Otherwise, not a bug.  Code didn’t change without the spec being updated or, if the spec was found to be missing key information, the specs were always updated and tested so always both items, spec and code, were always in sync.  The specs were a living, breathing documents.  And this streamlined process and total consistency throughout the software life cycle has been proven to improve quality, reduce the delivery time, and enable technical support to provide better customer support with fewer people.  Win-win-win.</p>
<p>Contact <a target="_blank" href="http://www.duckpondblog.com/dps_contact.html">Jan</a> or <a target="_blank" href="http://www.duckpondblog.com/dps_contact.html">Anita</a> if your company does not have a low-cost, high quality software process including a complete set of “as built” specifications for your code.  We can help implement the Azerity process and tools at your company to help you sail smoothly through your software development cycles!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/duckpondsoftware.wordpress.com/83/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/duckpondsoftware.wordpress.com/83/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duckpondsoftware.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duckpondsoftware.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duckpondsoftware.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duckpondsoftware.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duckpondsoftware.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duckpondsoftware.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duckpondsoftware.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duckpondsoftware.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duckpondsoftware.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duckpondsoftware.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duckpondsoftware.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duckpondsoftware.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duckpondsoftware.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duckpondsoftware.wordpress.com/83/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duckpondsoftware.wordpress.com&amp;blog=15513827&amp;post=83&amp;subd=duckpondsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duckpondsoftware.wordpress.com/2008/08/19/smooth-sailing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/aec649c86688ee1a8e726cccb5ecc5e2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan</media:title>
		</media:content>

		<media:content url="http://www.duckpondblog.com/img/Boating08_115R.jpg" medium="image">
			<media:title type="html">Sailing</media:title>
		</media:content>
	</item>
	</channel>
</rss>
