<?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</title>
	<atom:link href="http://mattmccormick.ca/feed/" rel="self" type="application/rss+xml" />
	<link>http://mattmccormick.ca</link>
	<description>Creating Solutions</description>
	<lastBuildDate>Wed, 11 Aug 2010 21:37:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Things You Didn&#8217;t Know About Victoria</title>
		<link>http://mattmccormick.ca/2010/08/11/things-you-didnt-know-about-victoria/</link>
		<comments>http://mattmccormick.ca/2010/08/11/things-you-didnt-know-about-victoria/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 21:37:32 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Toastmasters]]></category>

		<guid isPermaLink="false">http://mattmccormick.ca/?p=105</guid>
		<description><![CDATA[This is my 7th Toastmasters speech from the Competent Communicator&#8217;s manual.

Thank you Madame Toastmaster, fellow Toastmasters and welcome guest.
Do you know what I like about Europeans? They know their history.  Just look at Graham here.  Graham can probably tell you everything about British history &#8211; all the relevant and irrelevant facts dating back [...]]]></description>
			<content:encoded><![CDATA[<p>This is my 7th Toastmasters speech from the Competent Communicator&#8217;s manual.</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/9tVsSjGuQQc&amp;hl=en_US&amp;fs=1?rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/9tVsSjGuQQc&amp;hl=en_US&amp;fs=1?rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p>Thank you Madame Toastmaster, fellow Toastmasters and welcome guest.</p>
<p>Do you know what I like about Europeans? They know their history.  Just look at Graham here.  Graham can probably tell you everything about British history &#8211; all the relevant and irrelevant facts dating back hundreds of years.  I lived in Europe for a year after university and I realised this isn&#8217;t unique amongst Europeans and British. </p>
<p>Most of the friends I met there could tell me all sorts of details about their hometown.  They would invite me to their hometown for a day or a weekend and as we&#8217;d be walking around they&#8217;d point out &#8220;Oh this building was designed in 1405 by Sir Black&#8221; or whatever.  &#8220;This statue was donated to us from Italy in 1692.&#8221;  And I would ask them &#8220;How do you know all this stuff?&#8221; and they&#8217;d say &#8220;Well it&#8217;s my hometown, of course it&#8217;s my duty to know all this stuff.&#8221;  And I think, well, here in Victoria I don&#8217;t know anything about my hometown.  That&#8217;s one of the differences between Europeans.  They&#8217;ve lived there their whole lives and their family may have been there for generations whereas here not many people stay in Victoria.  For instance, how many people were born in Victoria?  Two people.  So Victoria&#8217;s a very transient place and I don&#8217;t know much about it.  So for this topic of researching your topic, I thought I would research a little about Victoria.</p>
<p>Most of the stuff I do know about Victoria comes from walking down Government Street and as I walk along the streets, the Kabuki Kabs go by &#8211; the little peddlers &#8211; and so for a few seconds I&#8217;ll hear them explaining to the tourists some interesting tidbit of information.  Over the years, I&#8217;ve gathered a little bit of history that way but still not really enough.  And I don&#8217;t know if it&#8217;s true.  Sometimes I think they&#8217;re just making it up.  They could be just telling stories to the tourists to get more tips.</p>
<p>So one story I hear sometimes is that the Parliament Buildings were designed by someone who came over from Britain who had no training in architecture, he lied about buildings that he developed in Britain and then he was murdered by his wife. So I wanted to find out if this was true or not.</p>
<p>In fact, it is partly true.  The Parliament Buildings were designed by Francis Rattenbury. He came over from Britain to BC in his 20s. At that time the government had an open competition for designing the Parliament Buildings.  Anyone could enter with their designs. He entered and he beat out almost 60 other applicants. He didn&#8217;t sign his name but he submitted it under a pseudonym called &#8216;A B.C. Architect.&#8217;  He did, however, have a little bit of training.  He had no formal education in architecture but he had done an apprenticeship with a firm in the UK for about seven years before coming to BC.  However, beating out 60 other people is not that easy so maybe he did have to fib a little bit on his application.  I never found that out.</p>
<p>After designing the Parliament Buildings &#8211; after building them &#8211; he went on to do a number of other buildings in Victoria including one of the other famous buildings, the Empress.  He was commissioned by the Canadian Pacific Railway to do that and he was also designed the old Carnegie Library on Yates Street on the corner of Yates and Blanshard and the old Bank of Montreal on Government Street which is now the Irish Times as well as Crystal Gardens. So he had a big impact in Victoria for developing our architecture.</p>
<p>Unfortunately for him, he never really found success after Victoria. He started to&#8230;His personal life started to come unravelled a little bit and in his 40s he divorced his wife to marry his 27 year old mistress at the time or girlfriend.  He left his children and his wife and they went back to England.</p>
<p>At the time he was going through financial troubles through investing in poor business ideas and whatnot, and that continued in England at the time.  After about 10 years his wife, kinda did the same thing.  She had a &#8216;mister&#8217; who was actually their 18 year old chauffeur.  And they formed a plot to kill him so that they could be together.  They actually did murder him, 10 years after they were married, and he &#8211; the chauffeur &#8211; ended up going to jail and his former wife committed suicide a few days after the trail was over.</p>
<p>He was buried in an unmarked grave somewhere in England, until just a few years ago when a family friend finally put up a tombstone for him.</p>
<p>So this is the man that helped develop Victoria around here &#8211; our designs. He was a cheat and squandered all his money.</p>
<p>In a way it&#8217;s kind of fitting that he designed the Parliament Buildings.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattmccormick.ca/2010/08/11/things-you-didnt-know-about-victoria/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learn Quickly: How to Soak up things like a Sponge</title>
		<link>http://mattmccormick.ca/2010/08/07/learn-quickly-how-to-soak-up-things-like-a-sponge/</link>
		<comments>http://mattmccormick.ca/2010/08/07/learn-quickly-how-to-soak-up-things-like-a-sponge/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 17:01:46 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[improvement]]></category>

		<guid isPermaLink="false">http://mattmccormick.ca/?p=99</guid>
		<description><![CDATA[All my life I&#8217;ve been able to pick up things very quickly.  This has led me to being bored with classes at times since they need to go at the pace of the average learner.  I still remember taking Math class in high school.  One year my teacher would assign the homework [...]]]></description>
			<content:encoded><![CDATA[<p>All my life I&#8217;ve been able to pick up things very quickly.  This has led me to being bored with classes at times since they need to go at the pace of the average learner.  I still remember taking Math class in high school.  One year my teacher would assign the homework due for tomorrow at the beginning of class.  I would usually just ignore what he was talking about and read the textbook and do the homework in class.  Often times I would be finished be the end of the hour.</p>
<p>When I&#8217;m learning something new now, I&#8217;ll often look around at other beginners and see them struggling with things while I&#8217;ll be ready to move on.  I often wonder what is the difference?  I have no doubt that some of it might be due to nature and genetics.  But I have also noticed general things I do that allow me to learn faster than others.  Here is what you can do to learn faster:</p>
<p><strong>Adopt a Learning Mindset</strong></p>
<p>This is probably one of the biggest aspects.  People are 99.9% the same.  We are much more similar than different.  A lot of the time we don&#8217;t realise this because it&#8217;s much easier to notice the differences.  Being similar means that anything someone else has learned, you can learn too&#8230;if you put in the effort.  </p>
<p><strong>Know you are going to Fail</strong></p>
<p>When you start something new, you will fail the first time.  Maybe the second or third time too.  I think everyone innately understands this.  Unfortunately, many people try to avoid this.  When starting something, they will spend a long time trying to decide the best way to do it in an attempt to avoid failing.  This leads to people giving up before they have even started or overthinking.</p>
<p>For example, when I decided to learn salsa dancing last year, I signed up for a course which was quite expensive and wasn&#8217;t teaching me what I wanted to learn.  I spent a lot of time and money on it and didn&#8217;t receive as much value from it as I should have.  Later I found different classes that were much cheaper and more valuable to me so I switched.  Signing up for those first classes was a failure in that I wasn&#8217;t getting good value for my money but it was much better to do that than take time hemming and hawing about which direction to go.</p>
<p>Another reason people learn slowly is ego.  As we grow older, many people don&#8217;t want to be seen as beginners.  It&#8217;s a good thing we didn&#8217;t know this when we were babies.  There may be a lot of people who never learned to walk or talk if we did.  Can you imagine a baby not enjoying the process of learning to crawl or walk?</p>
<p>Knowing you are going to fail at something the first few times means you should jump right in.  There is no avoiding it.  Get those failures out of the way quickly so you can move on to the learning stage.</p>
<p><strong>Rest and take Breaks</strong></p>
<p>Rest is completely undervalued in our culture.  I like not being busy and having lots of leisure time.  Many people don&#8217;t seem to be like this.  They &#8220;brag&#8221; about how much they work or how little sleep they get.  There is a limit to how much a person can do or learn in a set period of time.  Once you reach that limit, you will not be able to do any more until you rest and re-charge your batteries.</p>
<p>I have forced myself to go to dance classes when I was really tired and they have been a waste of time.  I wasn&#8217;t able to retain anything I learned.  Contrast that to classes where I had a nap beforehand and the difference is incredible.  I was able to retain a lot more of what I learned and I had a lot more FUN!  You should be taking breaks after <a href="http://mattmccormick.ca/2010/05/03/increase-your-productivity-work-in-45-minute-blocks/">45 minutes of learning</a> to let your mind absorb and process the new information.</p>
<p><strong>Understand the learning curve</strong></p>
<p>The best book I have read on learning is <a href="http://www.amazon.com/Mastery-Keys-Success-Long-Term-Fulfillment/dp/0452267560">&#8220;Mastery&#8221; by George Leonard</a>.  One of the many great insights in the book, that is obvious when you think about it, is that we don&#8217;t learn linearly.</p>
<div id="attachment_101" class="wp-caption aligncenter" style="width: 310px"><a href="http://mattmccormick.ca/wp-content/uploads/2010/08/linear.gif"><img src="http://mattmccormick.ca/wp-content/uploads/2010/08/linear-300x187.gif" alt="Linear Line" title="linear" width="300" height="187" class="size-medium wp-image-101" /></a><p class="wp-caption-text">Not how we learn</p></div>
<p>Instead, we learn in a series of rises and falls.</p>
<div id="attachment_100" class="wp-caption aligncenter" style="width: 310px"><a href="http://mattmccormick.ca/wp-content/uploads/2010/08/plateau.gif"><img src="http://mattmccormick.ca/wp-content/uploads/2010/08/plateau-300x187.gif" alt="Plateau Lines" title="plateau" width="300" height="187" class="size-medium wp-image-100" /></a><p class="wp-caption-text">Two steps forward, one step back</p></div>
<p>We take two steps forward, one step back and then be stuck at a plateau.  This plateau could be anywhere from a few minutes to several years.  Many people quit when they are in one of these plateaus.  It&#8217;s easy for us to get frustrated and think we have stopped learning.  Instead, enjoy the plateau!  It is your mind&#8217;s way of saying &#8220;Ok, you have learned enough for now. I need to process all this new information and master it before we can move on.&#8221;  The plateau is a necessary part of the learning process. It allows you to retain what you have learned.</p>
<p>A great thing to know about the learning curve is how fast you can advance.  After just 6 months of practice, you will be better at that skill than 90% of the population.  It doesn&#8217;t matter if you are a complete beginner.  No matter what you take on today, you will be better than almost everyone in only six months if you practice regularly.</p>
<p>After that, the curve really steepens.  It takes another 10 years to get into the top 1%.  Understanding this scale lets you be aware of how much effort you want to put in.  Maybe the top 10% is good enough for you.  I am in Toastmasters but have no aspirations to become a professional public speaker.  Because of this, I don&#8217;t feel bad if I am not putting in as much effort into that as in other areas.  Some other things, like dancing or programming, I do want to be in the top 1% and so I need to practice regularly for a longer period of time to achieve that.</p>
<p>Everyone has the ability to learn.  If you haven&#8217;t used the learning portion of your brain for a while it may take longer to re-activate it.  You can learn quickly and you can learn whatever interests you.</p>
<p>Enjoy the learning process.  Be like a child.  Jump into things.  Have fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://mattmccormick.ca/2010/08/07/learn-quickly-how-to-soak-up-things-like-a-sponge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>High Performance the Lazy Way</title>
		<link>http://mattmccormick.ca/2010/05/24/high-performance-the-lazy-way/</link>
		<comments>http://mattmccormick.ca/2010/05/24/high-performance-the-lazy-way/#comments</comments>
		<pubDate>Mon, 24 May 2010 15:59:41 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Toastmasters]]></category>

		<guid isPermaLink="false">http://mattmccormick.ca/?p=90</guid>
		<description><![CDATA[This is my 5th Toastmasters speech.  Re-watching it now, I was quite disappointed with it.  I wasn&#8217;t prepared enough and it did not come off as smooth as it could have been.  I also need to work on my vocal variety more.  Luckily, that is the purpose of my next speech. [...]]]></description>
			<content:encoded><![CDATA[<p>This is my 5th Toastmasters speech.  Re-watching it now, I was quite disappointed with it.  I wasn&#8217;t prepared enough and it did not come off as smooth as it could have been.  I also need to work on my vocal variety more.  Luckily, that is the purpose of my next speech.  <a href="http://www.soapboxguru.com/speech/3485/Toastmasters-Speech-5-High-Performance-the-Lazy-Way">Please evaluate this speech at Soapbox Guru</a>.</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/hdycz0pX5ek&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/hdycz0pX5ek&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p>Thank you Mr. Toastmaster, fellow Toastmasters and welcome guests.</p>
<p>Now I hate to start off by bragging about myself but I am lazy.  And people come up to me and they say Matt &#8220;How can you be so lazy?&#8221; and they tell me all sorts of excuses.  They say &#8220;I want to be lazy but I don&#8217;t have the time.&#8221; Or &#8220;I want to be lazy but, you know, being lazy sounds like a lot of hard work.&#8221;  And, of course, &#8220;I want to be lazy but I just don&#8217;t know where to get started.&#8221;</p>
<p>Now, I&#8217;ve found that there are a number of benefits to being lazy.  And I&#8217;m going to cover three of them today to help you become lazier in your own lives.  First one is that being lazy can help you save money.</p>
<p>Now, I&#8217;ve been wanting to buy a new computer for about a year or so because the computer that I have, it&#8217;s a bit loud and it overheats and shuts down sometimes so I think &#8220;Ah, I should go out and I should buy a new computer for me.&#8221;  But then I start thinking about all the effort and time that it requires to go out and buy a new computer.  I gotta go to all these different stores and do research and pick out the one that suits me best. So I keep putting it off.  Buying a new computer &#8211; it just takes too much time and energy for a lazy person like me. So I&#8217;ve realised that being lazy can help you save money. </p>
<p>Are you one of those people that buys 10 pairs of shoes or shirts and never wear them again? You can put laziness to help you. So the next time you want to buy something you might see at the store, instead of buying it there, go home and think about it for a week. A week later, you&#8217;ll think &#8220;Maybe I want to buy that shirt&#8221; but then you start thinking in your head &#8220;Well I gotta get in the car, I gotta go to the store, I gotta pick it out again and find where it is.  Ah, it&#8217;s just too much work.  I&#8217;ll be lazy.  I&#8217;ll save money.&#8221;</p>
<p>So that&#8217;s the first benefit.  Be lazy, save money.</p>
<p>The second thing I&#8217;ve found is that being lazy can help you be more efficient. So my philosophy is &#8220;Why do something twice when you can only do it once?&#8221; In software development, a good practice is called DRY &#8211; D R Y &#8211; Don&#8217;t Repeat Yourself.  And I try to incorporate this into my work because I don&#8217;t like repeating myself. For example, a few months ago, I was working on a website that needed user registration. And I forgot to put a part where users can, if they forget their password, they can get it sent to them by email again. One day, the guy comes up to me and says &#8220;Oh Matt, this guy forgot his password.  Can you reset it for him?&#8221; I think &#8220;Ah, this is petty work. I don&#8217;t want to do this work.&#8221; So instead of resetting this individual password, I just write code that allows user to reset their own password. And I don&#8217;t need to be bothered by this petty work anymore. So be lazy, be more efficient in your own life.</p>
<p>The third great part about being lazy is it can help you kick bad habits.  There&#8217;s a famous psychologist named Milton Erickson who was known for solving patients problems using very creative techniques. One day a patient came to him and said &#8220;Doctor, I&#8217;m an alcoholic.  I&#8217;ve tried everything to stop but I still keep drinking.  It&#8217;s ruining my life and my family&#8217;s life. What can I do?&#8221;</p>
<p>And Dr. Erickson thought about it for a minute and said &#8220;Alright, drink as much as you want.&#8221;</p>
<p>And the guy&#8217;s thinking &#8220;What? You&#8217;re telling me to just keep drinking?&#8221;</p>
<p>And he says &#8220;Yes. Drink as much as you want but it has to be at this one pub three miles from your house. And you have to walk there if you want to drink.&#8221;</p>
<p>So the guy thinks &#8220;This is peculiar but I&#8217;ll give it a try.&#8221;  </p>
<p>The doctor says &#8220;OK, try it out for one month and come back and see me.&#8221;</p>
<p>One month later, the patient comes back and says &#8220;Doctor, I don&#8217;t know what you did but I&#8217;m cured of alcoholism. I haven&#8217;t had a drink in three weeks.&#8221;</p>
<p>And the doctor asks him to explain and he says &#8220;Well, you know, I walked to the tavern the first couple nights and then the third night it was raining so I thought, &#8216;Ah I&#8217;m not gonna go out in the rain to drink&#8217;.  Then the fourth night I start walking there and about half an hour into my walk I start thinking &#8216;You know, it&#8217;s gonna be another half an hour to get there. I&#8217;m a little bit tired.  I don&#8217;t know really want to go the next mile and a half to get a drink&#8217; so I just turned around and went home and spent time with my family.  And the next night &#8216;Ah it didn&#8217;t really interest me anymore&#8217; so I just stopped going to the pub. So this is another benefit of being lazy.  Being lazy can help you kick bad habits.</p>
<p>See, I think I&#8217;m lazy but laziness is a general trait among people. People try to do things the easiest way and if you make things that you don&#8217;t want to do harder you will usually take the easy way out and you will take the lazy way out which if you structure life can actually improve things. For example, if you don&#8217;t like going to the doctor, if you absolutely hate it, then eat healthy and take good care of yourself.  Then you won&#8217;t have to waste your time going to the doctor.  Same thing if you don&#8217;t like cleaning, then don&#8217;t make a mess and it solves itself.</p>
<p>So be lazy in your own life.  It can help you save money, make you more efficient in your job and can help you kick bad habits.  Mr. Toastmaster.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattmccormick.ca/2010/05/24/high-performance-the-lazy-way/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Increase Your Productivity.  Work in 45 minute blocks.</title>
		<link>http://mattmccormick.ca/2010/05/03/increase-your-productivity-work-in-45-minute-blocks/</link>
		<comments>http://mattmccormick.ca/2010/05/03/increase-your-productivity-work-in-45-minute-blocks/#comments</comments>
		<pubDate>Mon, 03 May 2010 18:31:41 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[timebox]]></category>

		<guid isPermaLink="false">http://mattmccormick.ca/?p=70</guid>
		<description><![CDATA[Over the years, I have settled on a system that best allows me to focus and be productive.
Work 45 minutes. 10 minute break.
Work 45 minutes. 10 minute break.
Work 45 minutes. Longer break.
Repeat as necessary.
How did I come about this system?
Mostly by trial and error and observing my energy.  I would notice that it would [...]]]></description>
			<content:encoded><![CDATA[<p>Over the years, I have settled on a system that best allows me to focus and be productive.</p>
<p>Work 45 minutes. 10 minute break.<br />
Work 45 minutes. 10 minute break.<br />
Work 45 minutes. Longer break.<br />
Repeat as necessary.</p>
<p>How did I come about this system?</p>
<p>Mostly by trial and error and observing my energy.  I would notice that it would take me about 45 minutes of working on something to come up with a solution.  For example, if I was working on a bug fix, from the moment I started to the moment I finished would be 45 minutes.  I would feel good about accomplishing my task and would take a break to relish in the accomplishment and prepare for what I needed to do next.</p>
<p>After doing this system for a while I came across a study that found people can only focus on one thing for about 45 minutes.  After 45 minutes, your mind starts to wander and you have a tough time remaining focused.  A break helps re-energize your focus.<br />
(Unfortunately I do not recall where I read this.  If I come across it again in the future, I will edit this post)</p>
<p>What about longer tasks?</p>
<p>Longer tasks are just broken down into smaller pieces.  No matter how large the project is I break it down into something that can be accomplished in about 45 minutes.  In fact, you need to do this otherwise the project would just seem overwhelming.</p>
<p>Sometimes I do want to keep working but I usually feel worse if I do.  My muscles will start to ache from sitting so long.  You need breaks.  Standing up and walking around helps improve your circulation causing better blood flow to your brain.</p>
<p>During the breaks, I will usually use the time to think about what I want to do next.  I try to turn this break time into planning/thinking time.  Too often as programmers, we just want to do, do, do.  It is important to spend some time each day thinking about and planning your work otherwise you may end up spending time working on something that is not important.</p>
<p>To make sure I take breaks, I use SlimTimer to time my work.  I start by simply clicking on the task and when 45 minutes are up, I take a break.  Sometimes I will go to 50 minutes if I just need a few more minutes or stop at 40 if I have accomplished my task already but it usually averages out around 45.</p>
<p>It is important to remain as focused as possible for the 45 minutes otherwise this system does not work.  You must resist any temptations that may pull you away from your task.  Stay focused on one thing.  Turn off email notifications and IM and close your browser.</p>
<p>Give this a try for your own work.  Use a timer but only time the periods you are focused and productive.  When you notice your focus is slipping or you need to take a break, stop the timer and observe how long you remained productive for.  Keep recording this information for a week or two and you will start noticing patterns about how you work.</p>
<p>&#8211;</p>
<p><a href="http://www.slimtimer.com">SlimTimer</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mattmccormick.ca/2010/05/03/increase-your-productivity-work-in-45-minute-blocks/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<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 [...]]]></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>
]]></content:encoded>
			<wfw:commentRss>http://mattmccormick.ca/2010/04/27/never-compromise-quality/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to easily create Models and Table Relationships in Zend Framework</title>
		<link>http://mattmccormick.ca/2010/04/24/how-to-easily-create-models-and-table-relationships-in-zend-framework/</link>
		<comments>http://mattmccormick.ca/2010/04/24/how-to-easily-create-models-and-table-relationships-in-zend-framework/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 19:06:02 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[models]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[table relationships]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://mattmccormick.ca/?p=52</guid>
		<description><![CDATA[When I first started using Zend Framework, I was so frustrated when trying to figure out how to get information from the database.  I fought against the framework for the longest time.  Instead of working with it, I would write the SQL and then simply query the database to get the data back [...]]]></description>
			<content:encoded><![CDATA[<p>When I first started using Zend Framework, I was so frustrated when trying to figure out how to get information from the database.  I fought against the framework for the longest time.  Instead of working with it, I would write the SQL and then simply query the database to get the data back as an array of objects.</p>
<p>Later on I learned at just how powerful Zend Framework can be when it comes to retrieving models.  It is actually easier and more fun to do things in the &#8220;Zend&#8221; way.</p>
<p>This is the post I wish I had read before spending hours going about things the wrong way.</p>
<p>I&#8217;m using Zend Framework for a project which has videos, users (each user can have many videos) and tags (many tags to many videos).  This example will show you how to setup your models correctly:</p>
<p><strong>/application/models/DbTable/Videos.php</strong></p>
<pre class="brush: php">class Model_DbTable_Videos extends Zend_Db_Table_Abstract
{
	protected $_name = &#039;videos&#039;;	// database table name
	protected $_rowClass = &#039;Model_Row_Video&#039;;	// row class for extending
	protected $_dependentTables = array(&#039;Model_DbTable_VideoTag&#039;);	// videos depends on the many-to-many join table for tags

	protected $_referenceMap = array(
		&#039;User&#039; =&gt; array(
			&#039;columns&#039; =&gt; &#039;user_id&#039;,	// the column in the &#039;videos&#039; table which is used for the join
			&#039;refTableClass&#039; =&gt; &#039;users&#039;,	// the users table name
			&#039;refColumns&#039; =&gt; &#039;id&#039;	// the primary key of the users table
		)
	);
}</pre>
<p><strong>/application/models/DbTable/User.php</strong></p>
<pre class="brush: php">class Model_DbTable_Users extends Zend_Db_Table_Abstract
{
	protected $_name = &#039;users&#039;;
	protected $_rowClass = &#039;Model_Row_User&#039;;
	protected $_dependentTables = array(&#039;Model_DbTable_Videos&#039;);
}</pre>
<p><strong>/application/models/DbTable/Tags.php</strong></p>
<pre class="brush: php">class Model_DbTable_Tags extends Zend_Db_Table_Abstract
{
    protected $_name = &#039;tags&#039;;
    protected $_rowsetClass = &#039;Model_Rowset_Tags&#039;;
}</pre>
<p><strong>/application/models/DbTable/VideoTag.php</strong> (the join table for many-to-many relationship)</p>
<pre class="brush: php">class Model_DbTable_VideoTag extends Zend_Db_Table_Abstract
{
    protected $_name = &#039;video_tag&#039;;
    protected $_referenceMap = array(
		&#039;Video&#039; =&gt; array(
			&#039;columns&#039; =&gt; &#039;video_id&#039;,
			&#039;refTableClass&#039; =&gt; &#039;Model_DbTable_Videos&#039;,
			&#039;refColumns&#039; =&gt; &#039;id&#039;
   		),
   		&#039;Tag&#039; =&gt; array(
   			&#039;columns&#039; =&gt; &#039;tag_id&#039;,
   			&#039;refTableClass&#039; =&gt; &#039;Model_DbTable_Tags&#039;,
   			&#039;refColumns&#039; =&gt; &#039;id&#039;
   		)
	);
}</pre>
<p>The protected fields allow you to tell the framework the setup of the tables.  You can also extend the Row on Rowset by simply setting the $_rowClass or $_rowsetClass field.</p>
<p>In Model_DbTable_Videos, you see I have specified the $_rowClass field.  This means any row returned will be an object of Model_Row_Video.  In the class Model_Row_Video, I have added extra methods for easily retrieving the user of the video and tags belonging to that video:</p>
<p><strong>/application/models/Row/Video.php</strong></p>
<pre class="brush: php">
class Model_Row_Video extends Zend_Db_Table_Row_Abstract
{
	private $tags = null;
	private $user = null;

	/**
	 * @return Model_Row_User
	 */
	public function getUser()
	{
		if (!$this-&gt;user) {
			$this-&gt;user = $this-&gt;findParentRow(&#039;Model_DbTable_Users&#039;);
		}

		return $this-&gt;user;
	}

	/**
	 * @return Model_Rowset_Tags
	 */
	public function getTags()
	{
		if (!$this-&gt;tags) {
			$this-&gt;tags = $this-&gt;findManyToManyRowset(
				&#039;Model_DbTable_Tags&#039;,	// match table
				&#039;Model_DbTable_VideoTag&#039;);	// join table
		}

		return $this-&gt;tags;
	}
}
</pre>
<p>Because I have all the relationships setup, I simply need to call findParentRow() or findManyToManyRowset() to get the Row or Rowset of a related record.</p>
<p>Here is an example for the Rowset:</p>
<p><strong>/application/models/Rowset/Tags.php</strong></p>
<pre class="brush: php">
class Model_Rowset_Tags extends Zend_Db_Table_Rowset_Abstract
{
	/**
	 * @return array the tags in an array
	 */
	public function getAsArray()
	{
		$tags = array();

		while ($this-&gt;valid()) {
			$tag = $this-&gt;current();
			$tags[] = $tag-&gt;name;  // the actual tag name
			$this-&gt;next();
		}

		$this-&gt;rewind();

		return $tags;
	}
}
</pre>
<p>So to get the tags of the video with ID 23 all I need to do now is simply:</p>
<pre class="brush: php">
$tblVideo = new Model_DbTable_Videos();
$video = $tblVideo-&gt;find(23)-&gt;current();  // returns Model_Row_Video
$tagsArr = $video-&gt;getTags()-&gt;getAsArray();
</pre>
<p>Working with Zend Framework becomes very easy and pleasurable once you follow their setup.</p>
<p>Refer to the <a href="http://framework.zend.com/manual/en/zend.db.html">Zend_Db section of the manual</a> for more information about working with the database.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattmccormick.ca/2010/04/24/how-to-easily-create-models-and-table-relationships-in-zend-framework/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>You Don&#8217;t Want Money</title>
		<link>http://mattmccormick.ca/2010/04/15/you-dont-want-money/</link>
		<comments>http://mattmccormick.ca/2010/04/15/you-dont-want-money/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 04:21:10 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Money]]></category>
		<category><![CDATA[retirement]]></category>
		<category><![CDATA[values]]></category>

		<guid isPermaLink="false">http://mattmccormick.ca/?p=49</guid>
		<description><![CDATA[The other day, a young kid on the bus struck up a conversation with me.  During the conversation, he said he wanted to make a lot of money because he doesn&#8217;t get enough respect from his peers.  He thought if he could become rich enough, he could earn that respect.
Thinking about this conversation [...]]]></description>
			<content:encoded><![CDATA[<p>The other day, a young kid on the bus struck up a conversation with me.  During the conversation, he said he wanted to make a lot of money because he doesn&#8217;t get enough respect from his peers.  He thought if he could become rich enough, he could earn that respect.</p>
<p>Thinking about this conversation later, I realised no one really wants money.  Money is meaningless.  When people say they want money, they really mean they want something intangible which money can help them get.  This could be respect, as in the case of this young man.  For a lot of people, it probably comes down to happiness, security, love, power, respect or freedom.</p>
<p>Personally for me, I like freedom.  I like being able to work on what I want and having autonomous control over my time and activities.</p>
<p>For the past few years, I&#8217;ve had dreams of retiring early so I can spend time doing what I want.  I follow the blog Early Retirement Extreme of a man who retired in his early 30s by saving 80% of his salary and making smart investments which now cover his humble living expenses.  This was the path I wanted to follow up until my revelation after this conversation.</p>
<p>What I really want is freedom.  Money is just a tool that can be used to buy my time and freedom.  However, if I want to save enough to retire extremely early, I would basically need to postpone life.  Postponing life for a few years is a sacrifice to get to the goal.  But since money is just a tool to achieve freedom, I should just cut out the middle-man to achieve my goal faster.</p>
<p>After getting laid off in 2009, I ramped up my free-lance work.  It didn&#8217;t take long for me to find enough work to pay for my lifestyle.  I managed to survive just as most people manage to do.  It&#8217;s human nature to find a way.  That feeling of knowing that even getting laid off does not really affect me is priceless.</p>
<p>If you are working long hours or on something you don&#8217;t like for money, ask yourself what you are really working for?  Remember, you don&#8217;t really want the money. What do you want to use that money for?  Is it happiness?  Freedom?  Love?  Once you have the answer, understand that you can cut out the middleman and go right for it.  Don&#8217;t postpone life.</p>
<p>&#8211; </p>
<p><a href="http://earlyretirementextreme.com/">Early Retirement Extreme</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mattmccormick.ca/2010/04/15/you-dont-want-money/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Dirty Secret of Work</title>
		<link>http://mattmccormick.ca/2010/04/11/the-dirty-secret-of-work/</link>
		<comments>http://mattmccormick.ca/2010/04/11/the-dirty-secret-of-work/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 04:18:53 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Toastmasters]]></category>

		<guid isPermaLink="false">http://mattmccormick.ca/?p=46</guid>
		<description><![CDATA[This is my 4th Toastmasters speech.  Please evaluate this Toastmasters speech at Soapbox Guru.

Good evening Mr. Toastmaster, fellow Toastmasters and welcome guests.
How many people here work full-time &#8211; about 40 hours a week or so?
Unfortunately, I have some bad news for you.  You&#8217;re working too much.
What if I told you it was possible [...]]]></description>
			<content:encoded><![CDATA[<p>This is my 4th Toastmasters speech.  <a href="http://www.soapboxguru.com/speech/2671/Toastmasters-Speech-4-The-Dirty-Secret-of-Work">Please evaluate this Toastmasters speech at Soapbox Guru</a>.</p>
<p><code><object width="450" height="340"><param name="movie" value="http://www.youtube.com/v/BcpBZt6yzZo&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/BcpBZt6yzZo&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="450" height="340"></embed></object></code></p>
<p>Good evening Mr. Toastmaster, fellow Toastmasters and welcome guests.</p>
<p>How many people here work full-time &#8211; about 40 hours a week or so?</p>
<p>Unfortunately, I have some bad news for you.  You&#8217;re working too much.</p>
<p>What if I told you it was possible to be happier, to be more satisfied with your job and get more done while working fewer hours?  Now I know what you&#8217;re thinking, you&#8217;re thinking whoa, wait a minute Matt, work less and get more done?  This doesn&#8217;t seem possible.  It must define some kind of law of physics or something.  But it is true, if you&#8217;re working 40 hours, I believe you&#8217;re working too much.</p>
<p>Now to understand why, we need to go back and first look at the history of this 40-hour work week.  People, I think, are working much longer than they&#8217;ve worked for most of history. Prior to the Industrial Revolution, people mainly worked on farms and work was limited by natural factors such as the seasons and daylight. No one&#8217;s going to go out in the middle of December and start planting seeds because that&#8217;s just bogus.  Then the Industrial Revolution came and people flocked to the factories. Factory workers encouraged people to work as much as they could &#8211; work them to the bone, work them to death. So people worked 80, 100 hours a week.  Their lives, basically were work. And since then, we&#8217;ve backed off from that to now where 40 hours is considered a full-time work week. And the 40-hour work week came about mainly because of one man. And you know him because some of you probably drive his cars. That man is Henry Ford.</p>
<p>Henry Ford did over 12 years of productivity experiments about how he can get his workers to work the most effectively so he can get the most profit. He realised that by working people as much as possible, people get tired, people can&#8217;t concentrate, they make mistakes causing bad cars, they get sick easier and then it affects everyone else thereby reducing productivity. So he discovered that 40 hours seems about right for what people should be working. So in 1926, he let all his employees know that from now on we are only going to be working 5 days a week, 8 hours a day. No overtime. No more working Saturdays. Let&#8217;s just work this. So that&#8217;s where we are today.</p>
<p>Now there&#8217;s one problem with this.  How many people here work in a factory?  Exactly.  So the 40 hour work week is great for factory work but does it translate into work that most people do today which is, say, knowledge work or problem-solving work. And no, I don&#8217;t believe it does. I think the dirtiest secret of work is that people go to work for 40 hours but it is impossible to actually be productive at work for 40 hours.  I would say that people do about 20 hours of productive work a week at work.  Why do I say this?  It&#8217;s because what I about do.</p>
<p>I know there&#8217;s a risk in me saying this but I&#8217;ll say it anyways.</p>
<p>So why do I know this?  Because when I&#8217;m working I use a timer to track my productive work &#8211; the time I&#8217;m doing focused work on programming.  I run it and I found that doing 20 hours of work a week seems about right. If I try to push myself and do more, I notice that I become more depressed, I am not looking towards going to work anymore, I get sick easier.  But if I back it off a little, then I enjoy my work better, I feel I can concentrate more and I believe that I get more done.</p>
<p>The problem is that for most people they view work as something like this. The more hours you put in, the more productive you are. That every hour extra is another hour you can achieve more things. This is completely wrong.</p>
<p>What it actually looks like is like this. When you start off, you are pretty productive and then you reach a point. And as Henry Ford saw, this is about 40 hours for factory workers, a little less for problem-solving or creative knowledge workers and you actually start to lose your productivity. This has been done in studies in the game development industry for software.  There&#8217;s been studies done because they&#8217;re known for pushing their workers for working long hours to get the games developed to a deadline. And so they find that, sure, you can push yourself for a while, say if you want to work 60 hours or 80 hours for a couple weeks, it works ok.  That&#8217;s where people start to think they can keep pushing themselves. But as it works out that you will actually start to lose productivity in the long-run.</p>
<p>Work hasn&#8217;t changed much over the last 100 years since Henry Ford decided to go to a 40-hour work week but there is hope.  Some companies are working towards what&#8217;s called a Results Only Work Environment, where they don&#8217;t care where you work from, they don&#8217;t care how many hours you work as long as you get the work done. And I hope this is what we&#8217;ll see going forward as it will help make people happier, more satisfied with their jobs and you will get more done in less time. </p>
]]></content:encoded>
			<wfw:commentRss>http://mattmccormick.ca/2010/04/11/the-dirty-secret-of-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Productivity and Price</title>
		<link>http://mattmccormick.ca/2010/03/14/productivity-and-price/</link>
		<comments>http://mattmccormick.ca/2010/03/14/productivity-and-price/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 02:42:59 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Freelancing]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[pricing]]></category>

		<guid isPermaLink="false">http://mattmccormick.ca/?p=43</guid>
		<description><![CDATA[Recently I was approached by a former employer about doing a small task for them.  While working there, I was paid $X/hr.  For this task, I said I would need to charge roughly $2X/hr.  He came back saying it was way out of his budget.
I was fine with not having the work [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I was approached by a former employer about doing a small task for them.  While working there, I was paid $X/hr.  For this task, I said I would need to charge roughly $2X/hr.  He came back saying it was way out of his budget.</p>
<p>I was fine with not having the work because I obeyed the first rule of freelance work &#8211; <strong>always quote your rate so you are satisfied no matter if you get the work or not</strong>.  This is a great rule which hasn&#8217;t failed me yet when freelancing.  It helps  keep my rates fair.</p>
<p>This guy is not technical and doesn&#8217;t know programming.  This situation identifies the single biggest problem programmers have working for non-technical people &#8211; they can&#8217;t extract value from a rate.</p>
<p>It is well known amongst programmers that there is a 10x difference in productivity between the best and worst programmer.  I&#8217;m definitely not the best, but I consider myself fairly competent.  To toot my own horn, one time I was trying to solve a bug with the help of another colleague.  While I was showing him the bug, I identified another bug and fixed it up within minutes.  Later he told me that the bug I quickly fixed had been assigned to a senior developer who had been trying to solve it for nearly two days!</p>
<p>Unfortunately, non-technical managers do not understand programmer productivity.  My 2X rate as a freelancer actually works out to X as an employee.  Let me explain.</p>
<p>As an employee, there is a lot of inefficiency in going to work at an office for 8 hours per day.  In fact, out of an 8 hour day, I think most people only get about 4 hours of productive work done by the time meetings, interruptions, tiredness and breaks are factored in.  Charging 2X as a freelancer actually works out to the same deal, if not better.  As a freelancer, I have control over my work environment and would be working only when I felt like working which makes me more productive.  I can work when and how I want rather than being constricted by a set time and space.  If I am tired, I stop work, take a nap and then start again afterwards feeling refreshed.</p>
<p>Some programmers are simply just better as a result of their effort and experience.  For example, a friend of mine has paid someone $100/hr for some tasks.  He tells me he pays this because the guy gets things done much quicker than somebody else.  If he were to hire someone at $15/hr, the guy might take 15-20 hours to do what this guy can do in one hour.  The savings justify the high rate.  Expensive is cheaper.</p>
<p>To non-programmers, it is really tough to believe that someone could be that much more productive but it&#8217;s true.  A bad programmer can actually be negatively productive and push back progress.  If you were building a house, a bad programmer would be the equivalent of someone coming in and knocking down a few walls when the house was almost complete.  Bad programmers will introduce bugs and write hard-to-read code that will force someone else to spend time correcting it.</p>
<p>I don&#8217;t blame non-technical managers for not knowing this stuff.  They haven&#8217;t programmed before so the only way they could know this is by reading about managing programmers, which not many seem to do. However, if a manager was that ambitious, they would probably have already picked up a little programming knowledge.</p>
<p>To all non-technical managers: learn about how software is produced and what makes a good programmer productive.  The effort you put in will make good programmers want to work for you and it will help save you time, money and frustration.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattmccormick.ca/2010/03/14/productivity-and-price/feed/</wfw:commentRss>
		<slash:comments>0</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 [...]]]></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>
]]></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>
