<?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>Nothing and More &#187; art</title>
	<atom:link href="http://www.xmonk.org/category/art/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xmonk.org</link>
	<description>Not much, not less</description>
	<lastBuildDate>Fri, 06 Mar 2009 00:18:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>The art of programming</title>
		<link>http://www.xmonk.org/2007/06/21/the-art-of-computer-programming/</link>
		<comments>http://www.xmonk.org/2007/06/21/the-art-of-computer-programming/#comments</comments>
		<pubDate>Fri, 22 Jun 2007 02:01:09 +0000</pubDate>
		<dc:creator>xmonk</dc:creator>
				<category><![CDATA[art]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://www.xmonk.org/?p=35</guid>
		<description><![CDATA[There has been a lot said about code being art, and there are quite a few different reasons for this, but I won&#8217;t go into them here. There is truth, in that code is art, the problem is that in most cases, programmers misunderstand the term art, and believe that art is whimsical, people look [...]]]></description>
			<content:encoded><![CDATA[<p>There has been a lot said about code being art, and there are quite a few  different reasons for this, but I won&#8217;t go into them here. There is truth, in  that code is art, the problem is that in most cases, programmers misunderstand  the term art, and believe that art is whimsical, people look at a painting done  by <a href="http://en.wikipedia.org/wiki/Jackson_Pollock" title="Jackson Pollock" target="_blank">Jackson Pollock</a> using his drip technique and they go:</p>
<p>&#8220;Oh, but I can do that!, it just paint splashed in a canvas! How hard can it  be?&#8221;</p>
<p>The same happens when they hear a cool Rock song:</p>
<p>&#8220;Oh! I&#8217;m going to be a guitarist, and land me some chicks! How hard could it  be to play guitar?&#8221;</p>
<p>Well as it turns out, it&#8217;s easier to play three chords on a guitar, than to  paint like <a href="http://en.wikipedia.org/wiki/Jackson_Pollock" title="Jackson Pollock" target="_blank">Jackson Pollock</a> or <a href="http://en.wikipedia.org/wiki/Picasso" title="Pablo Picasso" target="_blank">Picasso</a>. But the premise of art being simple, does  not make it easy, the same way, that it being complex, does not make  it hard.  Learning a programming language, is not an easy task, it takes weeks or days to  &#8220;learn&#8221;, but years to use it correctly; just like some one can learn the notes  on a pentagram, and the scales, in weeks, but it will take them years for them  to write a Symphony.</p>
<p>There is a lot more to just sitting down and banging words out on a keyboard,  you need to:</p>
<ul>
<li> plan or design.</li>
<li>structure the information your code is going to handle (data structures)</li>
<li>the efficient use of said information (algorithms).</li>
</ul>
<p>There are those that believe, that all the above is only needed for big  projects &#8211;They believe so because they read articles on how Linus wrote GIT on  a few days, or how &#8220;X&#8221; wrote &#8220;Y&#8221; in three days. They are wrong.</p>
<p>The truth is that you won&#8217;t see me with a UML program, doing diagrams, use  case scenarios, and class diagrams, not because I don&#8217;t like them, I like them,  and use them, when communicating ideas to others, but for the most part I the  design in my head, and can visualize it.  Before I even consider writing code, I  work out the different scenarios in my head, this is easy to do for me, but it  might not be easy for you, and that&#8217;s fine, sometimes I need to do an outline,  or a brain map, before writing code, this is all part of the process of  writing.</p>
<p>It&#8217;s the same way for a composer when he&#8217;s got a commission for a new piece,  composers can&#8217;t wait for the muse to come when they have a due date for the work  &#8211;oh, yes composers, writers and painters have due dates.</p>
<p>Composers devise ways of making themselves efficient, and be able to complete  their work with enough time, to proof read, re-write, revise, etcetera.. It&#8217;s  here where some programmers deviate, once the code is written, compiles and runs  as expected, only a bug , will make the programmer look at the code again.</p>
<p>Programmers don&#8217;t proof read, and they sure as hell don&#8217;t like to re-write,  and revising is not liked much either. Some do unit testing, which in some cases  can cause the programmer to go back, and refactor/revise the code, but in most  cases, the programmer just fixes the bug, and does not even care to investigate  why the bug was there in the first place, also programmers don&#8217;t really look for  the most efficient way to code, they avoid making their life easier.</p>
<p>This brings me to the fact that most programmers don&#8217;t think about their  craft; there are hundreds of books about the craft of music composition, writing  a novel, and very few that deal with the craft of programming.</p>
<p>Most programmers don&#8217;t even realize that programming, goes beyond the  language being use, the language is just a tool; you don&#8217;t see painters having  flame wars on whether the smaller brush, is better than the bigger brush, for  doing a sky line? I&#8217;ve never seeing construction workers arguing about which  brand of hammer is the best for the job, but you will see that with  programmers.</p>
<p>After a long time working on different teams, with different tools  (languages) I&#8217;ve concluded that most programmers don&#8217;t take their craft  seriously, and in most cases they sabotage themselves, by not taking the time to  look for ways of being more efficient with their time, and their code.</p>
<p>Programming is an art, there is no question about it in my mind, but for it  to reach the level of recognition, of the other arts, there is still a long way  to go. The knowledge of algorithms, logic, design, and the abilities to do this  things well, are worth nothing, if they are not accompanied by thorough,  efficient and intelligent coding, do not fool yourself into thinking, that you  will be able to make a finished product in a few days. Care for your code, at  the end it&#8217;s your creation, it exists because you exist, and you made it.</p>
<p><a href="http://en.wikipedia.org/wiki/Fred_Brooks" title="Fred Brooks" target="_blank">Frederick Brooks</a> had the following to say in his book, &#8220;The Mythical Man Month: Essays on Software Engineering&#8221;:</p>
<blockquote><p>The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of  the imagination.  Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.&#8221;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.xmonk.org/2007/06/21/the-art-of-computer-programming/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
