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

<channel>
	<title>Matt McCormick &#187; software</title>
	<atom:link href="http://mattmccormick.ca/tag/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://mattmccormick.ca</link>
	<description>Improving Software</description>
	<lastBuildDate>Fri, 03 Feb 2012 02:23:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Never Compromise Quality</title>
		<link>http://mattmccormick.ca/2010/04/27/never-compromise-quality/</link>
		<comments>http://mattmccormick.ca/2010/04/27/never-compromise-quality/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 16:03:36 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[character]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://mattmccormick.ca/?p=63</guid>
		<description><![CDATA[In programming people sometimes feel they have to sacrifice quality in order to get a product out the door on time. Never do this. You are hurting the customer, the company and yourself if you do. This American Life had a very interesting program on the New United Motor Manufacturing Inc (NUMMI) plant in Freemont, [...]]]></description>
			<content:encoded><![CDATA[<p>In programming people sometimes feel they have to sacrifice quality in order to get a product out the door on time.  Never do this.  You are hurting the customer, the company and yourself if you do.</p>
<p>This American Life had a very interesting program on the New United Motor Manufacturing Inc (NUMMI) plant in Freemont, California.  NUMMI was a joint venture started in 1984 between Toyota and GM for both parties to learn from each other.  GM would learn about Toyota&#8217;s quality control systems and Toyota would learn about building cars in America.</p>
<p>The amazing story is the turnaround of the plant.  Prior to the joint venture, the plant was operated by GM and was one of their worst factories.  The program talks about workers gambling, having sex, and drinking  at work.  They produced very low quality cars and didn&#8217;t really care.  The plant was closed as a result.  However, for this joint venture, GM agreed to re-open the plant and hired back many of the original workers.  Thanks to Toyota&#8217;s quality systems, the plant turned around to become one of the best GM had.</p>
<p>One example of change was &#8220;stopping the line.&#8221;  The GM workers grew up with the notion that you don&#8217;t stop the line.  If you notice something is wrong, you just keep it going.  Just get the cars out the door.  With Toyota&#8217;s system, workers were encouraged to stop the line if they noticed something wrong and fix it on the spot.  This was a big shift for them.  The process became about quality over quantity.  Within just three months, cars coming off the lot were being made with near perfect quality.</p>
<p>When you let an error slip, either with cars or with software, you are compounding the problem.  It takes much more time and money to fix the problem later than when it is first discovered.</p>
<p>How much more money?  One study estimated &#8220;it would take 50% more workers under the old system to produce the same car.&#8221;</p>
<p>Recently I had a situation like this.  I was responsible for checking over and delivering database scripts to a client.  I noticed one of the scripts had an input parameter and while I got a feeling I should double-check about it, I ignored that intuition and delivered them anyways.  The client ended up running the scripts in their environment but ignored the input parameter which caused part of the scripts to fail.  There was a lot of back and forth to get it fixed.  I estimate it probably wasted about one man-days worth of everybody&#8217;s time.  Because I didn&#8217;t take 5 minutes to check about something that could be wrong, I ended up costing hours worth of time.</p>
<p>It&#8217;s not mentioned explicitly but it is implied that the vices went away after the quality program was introduced.  While workers were embarrassed to be working at the plant before, they now were proud to tell  friends where they worked.</p>
<blockquote><p>In ancient times, brick makers, engravers, and other artisans used a symbol to mark the things they created to show that they were the makers.  The symbol that each one used was his &#8220;character.&#8221;  The value of the work was in proportion to the skill with which the object was made.  And only if the quality of the work was high was the character esteemed.  In other words, the quality of the person and his work gave value to his credentials.  If the work was good, so was the character.  If it was bad, then the character was viewed as poor.<br />
- &#8220;Becoming a Person of Influence&#8221; by John C. Maxwell &#038; Jim Dornan</p></blockquote>
<p>This is why the morale and esteem of the workers improved once quality became the focus.  Your character is revealed in the work you do and vice versa.  If you are producing shoddy work, your character is being revealed as such.</p>
<p>In programming, quality does not mean taking a stand over something trivial such as whether to use tabs or spaces for indentation.  Quality means being consistent in your work.  It means following design principles that will save time and effort down the road.  It means doing things right the first time so you don&#8217;t need to correct them later.</p>
<p>Always do things in a quality manner.  Never compromise.  For if you do, you are compromising your character.</p>
<p>&#8211;</p>
<p><a href="http://www.thisamericanlife.org/radio-archives/episode/403/nummi">This American Life episode about NUMMI</a><br />
<a href="https://www.amazon.com/dp/0785288392?tag=mattmccormick-20&#038;camp=0&#038;creative=0&#038;linkCode=as1&#038;creativeASIN=0785288392&#038;adid=1KHH40EYM22GBT702C63&#038;">Becoming a Person of Influence</a></p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmattmccormick.ca%2F2010%2F04%2F27%2Fnever-compromise-quality%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmattmccormick.ca%2F2010%2F04%2F27%2Fnever-compromise-quality%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmattmccormick.ca%2F2010%2F04%2F27%2Fnever-compromise-quality%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmattmccormick.ca%2F2010%2F04%2F27%2Fnever-compromise-quality%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmattmccormick.ca%2F2010%2F04%2F27%2Fnever-compromise-quality%2F&amp;counturl=http%3A%2F%2Fmattmccormick.ca%2F2010%2F04%2F27%2Fnever-compromise-quality%2F&amp;count=none&amp;text=Never%20Compromise%20Quality" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmattmccormick.ca%2F2010%2F04%2F27%2Fnever-compromise-quality%2F&amp;counturl=http%3A%2F%2Fmattmccormick.ca%2F2010%2F04%2F27%2Fnever-compromise-quality%2F&amp;count=none&amp;text=Never%20Compromise%20Quality" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Fmattmccormick.ca%2F2010%2F04%2F27%2Fnever-compromise-quality%2F&amp;linkname=Never%20Compromise%20Quality" title="Email" rel="nofollow" target="_blank"><img src="http://mattmccormick.ca/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmattmccormick.ca%2F2010%2F04%2F27%2Fnever-compromise-quality%2F&amp;title=Never%20Compromise%20Quality" id="wpa2a_2">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://mattmccormick.ca/2010/04/27/never-compromise-quality/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Developing Software when you are Technically Challenged</title>
		<link>http://mattmccormick.ca/2009/12/29/developing-software-when-you-are-technically-challenged/</link>
		<comments>http://mattmccormick.ca/2009/12/29/developing-software-when-you-are-technically-challenged/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 07:34:29 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://mattmccormick.ca/?p=37</guid>
		<description><![CDATA[Recently I read a blog post from one of the RSS feeds I subscribe to. The author was looking to create an iPhone app to promote his business. He researched a few options &#8211; one quoted him $20-$30,000, another $8-10,000 and he also came across a website offering to create one for $499. From reading [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I read a blog post from one of the RSS feeds I subscribe to.  The author was looking to create an iPhone app to promote his business.  He researched a few options &#8211; one quoted him $20-$30,000, another $8-10,000 and he also came across a website offering to create one for $499.</p>
<p>From reading his blog, I assume he has little-to-no software development experience.  This is a scary position to be in.  How do you choose between widely varied options?  What could the difference possibly be if the product is the same?</p>
<p>To the layperson, the obvious choice is the $499 option.  The logic for choosing this option is sound &#8211; he wants an iPhone app; these companies all make iPhone apps; therefore the cheapest one will be the best option for me.</p>
<p>Unfortunately, it is not so simple with software.</p>
<p>After being involved in software development for the past five years I&#8217;ve learned that out of the full cost of developing software, only a part of it comes from the initial creation.  To rephrase, much of the cost of developing software comes <strong>after</strong> the software has been created.</p>
<p>How can this be?</p>
<p>Many non-technical people put in charge of software projects do not <strong>really</strong> know what they want.  Usually, they have a vague idea but as the product is developed, more ideas will come.  These new ideas require changes to the product.  If you&#8217;re not familiar with the way software is developed, you may think this is simply moving around text as you would with a text editor like Microsoft Word.  Nothing could be further from the truth.  In practice, software development is a type of architecture.</p>
<p>Let&#8217;s say you want to build a house.  You have a general idea of what kind of house you want so you tell the designer you want a house with a certain number of rooms and so on.  He designs the plans and begins building the house.  Part-way through, you walk through the half-completed house and realise you would like the kitchen to be bigger and the bedroom to be moved to a different location.  Is it going to be easy to make this change?  No.  Although software is not quite as inflexible to dynamic changes, it still requires the foundation to change which can be major.</p>
<p>Now a good software architect will try to design the software to allow easy adjustments along the way.  However, these architects usually learn how to do this through years of experience.  This means you won&#8217;t find them at the cheap end of the pricing spectrum.</p>
<p>So what is the $499 option offering?  After taking a look at their website, they are offering a simple template option to create an iPhone app.  This means you are locked into their system.  If you want to add changes later, it is going to cost a lot.</p>
<p>If you are really, absolutely, positively sure that you will not want changes, then this option is a good deal.  In my experience, this is rarely the case.  Many clients come up with new ideas only after seeing the product in action.</p>
<p>If you go with the $499 option and you want custom changes, you will probably have to hire another firm as I doubt this company is in the custom-development business.  That means that the new firm will have to invest time learning the system and implementing the changes.  I&#8217;ve even worked on projects where it has been cheaper to throw away the original work and start over from scratch.  This means the initial cost for developing the software was a complete waste.  Either the company doing the work did not fully understand the client&#8217;s requirements or the client did not know what they wanted well enough to explain it.</p>
<p>Probably the worst thing you can do as a non-technical person starting a software project is to just go with the cheapest option.  The initial development cost can be only a small part of the final cost.</p>
<p>Detail what you are looking to accomplish with the software.  Spend time communicating with the vendor what your end goal is.  Make sure any potential vendor has clear guidelines what they will support after development and make sure they are asking lots of questions to fully understand your requirements.  Many software projects go awry not because of technical challenges, but because of communication challenges.  Good communication will help your software project immensely.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmattmccormick.ca%2F2009%2F12%2F29%2Fdeveloping-software-when-you-are-technically-challenged%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmattmccormick.ca%2F2009%2F12%2F29%2Fdeveloping-software-when-you-are-technically-challenged%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmattmccormick.ca%2F2009%2F12%2F29%2Fdeveloping-software-when-you-are-technically-challenged%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmattmccormick.ca%2F2009%2F12%2F29%2Fdeveloping-software-when-you-are-technically-challenged%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmattmccormick.ca%2F2009%2F12%2F29%2Fdeveloping-software-when-you-are-technically-challenged%2F&amp;counturl=http%3A%2F%2Fmattmccormick.ca%2F2009%2F12%2F29%2Fdeveloping-software-when-you-are-technically-challenged%2F&amp;count=none&amp;text=Developing%20Software%20when%20you%20are%20Technically%20Challenged" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmattmccormick.ca%2F2009%2F12%2F29%2Fdeveloping-software-when-you-are-technically-challenged%2F&amp;counturl=http%3A%2F%2Fmattmccormick.ca%2F2009%2F12%2F29%2Fdeveloping-software-when-you-are-technically-challenged%2F&amp;count=none&amp;text=Developing%20Software%20when%20you%20are%20Technically%20Challenged" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Fmattmccormick.ca%2F2009%2F12%2F29%2Fdeveloping-software-when-you-are-technically-challenged%2F&amp;linkname=Developing%20Software%20when%20you%20are%20Technically%20Challenged" title="Email" rel="nofollow" target="_blank"><img src="http://mattmccormick.ca/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmattmccormick.ca%2F2009%2F12%2F29%2Fdeveloping-software-when-you-are-technically-challenged%2F&amp;title=Developing%20Software%20when%20you%20are%20Technically%20Challenged" id="wpa2a_4">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://mattmccormick.ca/2009/12/29/developing-software-when-you-are-technically-challenged/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

