<?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>voyce &#187; programming</title>
	<atom:link href="http://www.voyce.com/index.php/tag/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.voyce.com</link>
	<description>Programming and debugging tidbits</description>
	<lastBuildDate>Sun, 15 Jan 2012 13:10:46 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Programming is like a bad analogy</title>
		<link>http://www.voyce.com/index.php/2009/11/11/programming-is-like-a-bad-analogy/</link>
		<comments>http://www.voyce.com/index.php/2009/11/11/programming-is-like-a-bad-analogy/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 00:19:22 +0000</pubDate>
		<dc:creator>ian</dc:creator>
				<category><![CDATA[Rant]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www2.voyce.com/?p=388</guid>
		<description><![CDATA[The joy of programming can be a difficult thing to describe. I take a look at some of the bizarre things people have compared it to.]]></description>
			<content:encoded><![CDATA[<p>The <a href="<a href="http://www.amazon.com/gp/product/1430219483?ie=UTF8&#038;tag=wwwvoycecom-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1430219483">joy of programming</a><img src="http://www.assoc-amazon.com/e/ir?t=wwwvoycecom-20&#038;l=as2&#038;o=1&#038;a=1430219483" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> is hard for anyone to precisely define. At least, it&#8217;s hard for programmers to define, and seeing as nobody else understands what the hell it is anyway, that&#8217;s pretty much the same thing. However a few people on the interweb have tried quite hard to describe just what the feeling of developing software is by comparing it to things in &#8220;the real world&#8221;.</p>
<p>A quick google reveals some of the funny, interesting and downright weird things that people have compared programming to. Let&#8217;s take a closer look at some of them&#8230;<br />
<span id="more-398"></span></p>
<h3>The Classics</h3>
<p>&#8220;Programming is like sex&#8221;<br />
The most common version of this is, of course, that &#8220;One mistake and you have to support it for the rest of your life&#8221;. Very true. Unless you can manage to change jobs every six months, and then it&#8217;s more like &#8220;You can have lots of fun and then leave somebody else to clear up the mess&#8221;. There are lots of other variations too, including the controversial: &#8220;Sometimes you have to pay a lot of money to get someone who&#8217;s good at it&#8221;. </p>
<p>&#8220;Programming is like <a href="http://compsci.ca/blog/programming-is-like-lego/">LEGO</a>&#8221;<br />
<img src="http://www.voyce.com/wp-content/uploads/2009/11/lego.png" alt="lego" title="lego" width="150" height="150" class="alignleft size-full wp-image-531" />Hmm. As far as I can see this just means that, yes, you can put the pieces together in any way you like, but nothing you make will look <em>quite</em> as good as the thing you make by following the instructions. The impression of infinite freedom is an illusion. And if you&#8217;re not careful you&#8217;ll end up losing important bits down the back of the sofa or hoovering them up.</p>
<p>And, hang on, if it is like Lego, then how come we&#8217;re always talking about programming &#8220;glue&#8221;?</p>
<p>&#8220;Programming is like <a href="http://ebersys.blogspot.com/2009/07/programming-is-like-chess.html">chess</a>&#8221;<br />
Not sure about this one. The biggest similarity I can see is that a lot of Russians are quite good at it. </p>
<p>Or maybe you could compare the interminably long games with the average duration of an enterprise software project? In fact, maybe having a <a href="http://en.wikipedia.org/wiki/Game_clock">chess clock</a> would make pair programming more fun; you get 30 seconds to write a line of code before it&#8217;s the other&#8217;s turn.</p>
<h3>The Outliers</h3>
<p>&#8220;Programming is like <a href="http://winpdb.org/2009/07/ice-programming/">Ice Sculpting</a>&#8221;<br />
What?! This has to be one of the most bizarre comparisons. I mean, yeah, it makes my hands really cold too. And my coworkers keep asking me why I bring that razor-sharp <a href="http://en.wikipedia.org/wiki/Ice_pick">ice pick</a> into the office on code review days.</p>
<p>&#8220;Programming is like <a href="http://www.independentdeveloper.com/archive/2009/03/17/programming-is-like-a-dream">a dream</a>&#8221;<br />
Unfortunately sometimes it&#8217;s like a really bad dream, the kind that you get from falling asleep on your keyboard during your afternoon sugar-low, dribbling on your mouse and getting an imprint of the enter key on your forehead. The kind where you wake up screaming after a nightmare about finding a bug in a 600-line long function with one-letter variable names and no comments. Only to find it&#8217;s not a dream after all, but where you will spend the majority of your waking hours for the next six months.</p>
<p>But of course, it can also be the kind of dream where you&#8217;re so far in the zone that you feel like you&#8217;re flying, effortlessly gliding over the terrain, appreciating the bigger-picture before swooping down into the details and watching how everything meshes beautifully together. Ahhh. </p>
<p>But it&#8217;s probably not the, erm, y&#8217;know, <em>other</em> type of dream. </p>
<p>&#8220;Programming is like <a href="http://www.gameproducer.net/2006/03/03/sometimes-programming-is-like-playing-an-adventure-game/">an adventure game</a>&#8221;<br />
<img src="http://www.voyce.com/wp-content/uploads/2009/11/zork_text1.png" alt="zork_text" title="zork_text" width="150" height="150" class="alignleft size-full wp-image-535" />Yes indeed. I often find myself having to go back over ground I&#8217;ve already covered, in order to perform repetitive and mundane tasks purely so I can level up (I think it&#8217;s known as &#8220;getting promoted&#8221;).</p>
<p>Sometimes I think that compiler writers treat their error messages as some kind of sadistic text-based game:</p>
<p><code>You are in an open field west of a big white house with a boarded front door. There is an unterminated string constant to the west, and an undefined external symbol to the east. There is a header file on the floor in front of you.<br />
&gt; include header<br />
You include the header. You are in a forest with incredibly long STL error messages all around.<br />
</code></p>
<p>On a serious note, I think part of the reason programming is so difficult to pin-down is because it requires such disparate skills; a combination of creative, intuitive right-brainedness and the logical, analytical left. People can take a lot of different things away from it depending on where they start from. </p>
<p>Anyway, that&#8217;s my selection of gems. Got any other interesting ones?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.voyce.com/index.php/2009/11/11/programming-is-like-a-bad-analogy/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

