<?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>The Meticulous Geek &#187; rant</title>
	<atom:link href="http://themeticulousgeek.com/tag/rant/feed/" rel="self" type="application/rss+xml" />
	<link>http://themeticulousgeek.com</link>
	<description>&#34;When you reach that upper level, your mind, body and soul will be one. It&#039;s a sacrifice. It takes hard work. It&#039;s a way of life.&#34;</description>
	<lastBuildDate>Thu, 24 Mar 2011 20:01:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>About Being Agile</title>
		<link>http://themeticulousgeek.com/2009/12/07/about-being-agile/</link>
		<comments>http://themeticulousgeek.com/2009/12/07/about-being-agile/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 23:18:56 +0000</pubDate>
		<dc:creator>basp</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[madness]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://themeticulousgeek.com/?p=308</guid>
		<description><![CDATA[The powers that be probably won&#8217;t like it all that much but programming remains an art. To those who want to argue that it is a craft instead I say: a craft is just a special form of art. So we are both right. That doesn&#8217;t have a lot to do with the stuff below [...]]]></description>
			<content:encoded><![CDATA[<p>The powers that be probably won&#8217;t like it all that much but programming remains an <strong>art</strong>. To those who want to argue that it is a <em>craft</em> instead I say: a craft is just a special form of art. So we are both right. That doesn&#8217;t have a lot to do with the stuff below but I wanted to get it out of the way nevertheless. The problem is that there is a large class of programmers who don&#8217;t share this opinion. There is even a special name for them: <em>non programmers</em>. In this post I like to talk about them for a bit.</p>
<h4>Programmers in Disguise</h4>
<p>If you consider yourself a programmer (maybe even a good programmer) then consider this: how many of the great people in our field do you actually know? For example, do you know who Jim Gray was? Alan Kay or Adele Goldberg perhaps? Martin Fowler? Edsger Dijkstra maybe? Yukihiro Matsumoto a.k.a. Matz? Why the Lucky Stiff? Guido van Rossum? Simon Peyton Jones? Alonzo Church? John Backus? Anders Hejlsberg? Not to mention a whole host of other giants. Most of them still active today. Note that I was about to link all those people to their respective pages but that was just starting to look like a giant search engine lure. If you really want to know more about them then I recommend Google videos. You&#8217;re abound to find some other interesting links too to start your research with.</p>
<p>Who doesn&#8217;t know about <a href="http://en.wikipedia.org/wiki/Douglas_Engelbart">Douglas Engelbart</a> with the <a href="http://video.google.com/videoplay?docid=-8734787622017763097&#038;q=engelbart#">Mother of all Demos</a> in <strong>1968</strong>!. Shame on you if you have not seen this before.</p>
<p>Some of the people I talk to and that pretend to be programmers haven&#8217;t even heard of these people. Now, that&#8217;s not too bad in itself. Knowing these guys doesn&#8217;t make you a better programmer but it does show something about the passion you have for the field that you are working in. It&#8217;s not whether you know them or not &#8211; it is about the desire you have to learn about them (you can abstract this to <em>it&#8217;s not whether you know [A; B; n] or not &#8211; it&#8217;s about your desire to learn about [A; B; n]</em>). Most of the times, they just shrug their shoulders and off they are, on their merry if-while-case away.</p>
<p>Often, I encounter this attitude with business people who know a little bit about programming. Maybe they programmed a VB app in the 90&#8242;s or maybe they know either the SQL Query Designer or (everyones favorite) FrontPage just a little bit too well. Sprinkle that with a suit and smooth talking skills and you have yourselves a business programmer. Usually, these guys are living in an ancient world where only <code>while</code>, <code>if</code> statements and global state seem to exist. The unfortunate fact is that they somehow seem to be able to <em>get things done</em> without any respect for the <em>art</em> (or <em>craft</em> if you insist). I can only use the words of Prince (as I ironically like to call him) when I say that those dudes still party like it it&#8217;s 1999. In fact, it&#8217;s even slightly worse but unfortunately that&#8217;s the best I can come up with so I&#8217;m being lenient.</p>
<p>A lot of times, these are the same guys that breed giganormous <code>if</code>-trees of <code>loop</code>, more <code>if</code>, <code>while</code>, more <code>loop</code>, <code>case</code> (we&#8217;re talking some serious VB here), even more <code>while</code>, more <code>if</code>, even some more <code>if</code>, another <code>while</code>, yet another <code>while</code>, yet even more <code>if</code> and then another <code>case</code> for good measure all in some humongous monster of donkey eating, steel shitting angry pile of smelly thing that those dudes like to call <code>Sub</code>.</p>
<p>Sometimes they even dare to call it a <code>Function</code> but at this point it doesn&#8217;t even matter anymore. You could just as well call it <code>SmellyPileOfCrap Foo</code> and nobody would even care. It would not even be <em>that</em> bad but the worst part is that all of this is copied meticulously over from another +6000 line method that does exactly the same as the other one except for one or two lines that are apparently not worthy enough to be duplicated. But then again, things only get really interesting when you find the same pile of crap duplicated across a bunch of other piles of shit. It&#8217;s like finding a cake of shit with other kind of shit sprinkled on top and then finding that same cake four or five times more in unsuspected places all scattered in something that resembles your house. It&#8217;s all one big fantastic <em>crapfestaciacious</em> vision of <em>crapunholiness</em>.</p>
<h4>Just Being Pragmatic</h4>
<p>Oh my sweet Jesus, do I like to talk about being pragmatic? Hell yes! See, you weren&#8217;t expecting for me to answer that question did you? You just <em>assumed</em> I was asking one of those fancy so called <em>rhetorical</em> questions? Well let me tell you sonny: <strong>assumption is the mother of all fuck-ups!</strong> And yes, I am aware that this quote is from an incredibly <a href="http://www.imdb.com/name/nm0091899/"><del datetime="2009-12-07T21:27:49+00:00">bad</del> movie</a>.</p>
<p>Still though, there is something magical about being pragmatic. Just look at the <a href="http://www.google.com/dictionary?aq=f&#038;langpair=en|en&#038;hl=en&#038;q=pragmatic">fucking definition</a> that Google gives us:</p>
<blockquote><p><em>pragmatic</em><br />
A pragmatic way of dealing with something is based on practical considerations, rather than theoretical ones. <br/>A pragmatic person deals with things in a practical way.</p></blockquote>
<p>You know those <em>agile</em> guys? They are being pragmatic. You know what? Those functional guys? They are being pragmatic too. Just in a crazy mathematical kind of way. Those Ruby guys? Pragmatic. Python? Pragmatic. Lisp fanatics? Pragmatic. Unix kernel hackers? Pragmatic. The absolutely waziliously huge PHP community? Just being pragmatic (well maybe not <em>all</em> of them).</p>
<p>Looking at the definition, that sounds like something a business person would love. It even goes so far as to tell us that a pragmatic person deals with problems &#8220;based on <strong>practical considerations, rather than</strong> <em>theoretical ones</em>&#8220;. Now what&#8217;s not to like about that from a business perspective? In reality though it means a bunch of so called coding <em>craftsmen</em> working their ass off with the simple tools they have. From my perspective, it&#8217;s like watching a bunch of cavemen trying to rebuild the Twin Towers with a rock and a stick. The only unfortunate part that I am one of those cavemen. </p>
<p>So apparently, at least from this perspective, being pragmatic means behaving like a software cavemen and treat everything with familiar tools: a rock and a a stick. Or respectively, in our case, a <code>while</code>. and an <code>if</code>. The sad conclusion is that most of the industry is either not doing <em>it</em> or we are <a href="http://knowyourmeme.com/memes/youre-doing-it-wrong"><em>doing it wrong</em></a>.</p>
<p>Those business people should like <em>being pragmatic</em> too but unfortunately they don&#8217;t think <em>being agile</em> is cool. They also don&#8217;t like someone <em>hacking</em> on their <em>precious</em> code. I can&#8217;t tell them a piece of code is shit anymore. I have to tell them that it is not exactly what I would&#8217;ve written. Even if the piece of code is something I wrote myself a few weeks earlier. They like guys who are being pragmatical by throwing a bunch of copied <code>while</code> and <code>if</code> loops at a problem until the problem seems to be solved. Then, when a few weeks later the issue regresses it is registered as new and solved by throwing yet another rock and stick, doing the lucky dance and hoping that no new bugs crop up.</p>
<p>The powers that be once told me to implement a look-ahead search for one of our websites. Unfortunately, the look-ahead would need to function with a particularly awkward set of columns and I knew this wasn&#8217;t going to happen with our current setup. First, I tried to convince them to building a set of indices for that particular set of columns so we could get to the results more efficiently. The fact that stuff would not be <em>real time</em> was just too much. Then, I tried asking for more raw power but in the end, the reply I got was a casual: &#8220;Google can do it too, so we can too&#8221;. Now <em>that</em> is being pragmatic I tell ya. Those so called <em>pragmatic</em> guys I mentioned before should take a page from his book and just take a look at Google.</p>
<div style="text-align:center">
<img style="border: solid 2px #5f5f5f;  margin-right: 16px" src="http://themeticulousgeek.com/wp-content/google-can-pub.png" />
</div>
<h4>Bonus</h4>
<p>In fact, there&#8217;s another useful abstraction that I think of now that I&#8217;m writing this. If you are wondering whether some [A; B; n] is the right thing to do, ask yourself this: what if everyone did [A; B; n]? If the outcome is a positive vision then its probably the right thing to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://themeticulousgeek.com/2009/12/07/about-being-agile/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

