Code Craftsman, Code Warrior, or Just Sandwich Artist


So, there is some debate in developer circles about whether programming is an art, a science, or both. Recently, I have heard the word Code Craftsman and even Code Artist used by folks in the blogosphere. On the one hand, there is little argument that written code can be judged and appreciated on the merits of beauty, quality, and clarity. On the other hand, members of your team will not be amused by you finding new and extraordinary ways to manipulate standard syntax just to change it up. I think this is the danger of shackling ones self to analogies; at some point they just break down. Also, if you take yourself as too serious of a Code Craftsman you could end up in a physical confrontation like Michelangelo and Pietro Torrigiano.

When dealing with code, the tangible qualities of beauty, quality, and clarity are what we use to choose, for example, one free JavaScript library over another. But, is this so different from what we do when selecting any product? I think comparing code to art is an analogy that may have overstayed it’s welcome. Instead, why can’t we just talk about being good programmers who are professional and have forethought when writing code. I understand the attraction to analogies, they feel good. The problem is, they also limit our scope of thought in unforseen ways. I don’t think beauty alone qualifies something as art and I will detail some distinct differences between code and music to demonstrate my point.


Getting Creative

Clearly, the Python example below is not art. In fact, I suspect, any coder reading this post is cringing at the way I tested the editor variable. Your probably saying things like, “well those aren’t logically equal” or “that’s a horrible way to test” or “that is fragile and stupid”. But, they produce the exact same results at this very moment on my computer. In computer programming there really is no merit placed in finding creative ways of producing the same results if they are fragile. In music, there is no concept of frail.

print os.environ['EDITOR']

if os.environ['EDITOR']:
print os.environ['EDITOR']

if os.environ['EDITOR'] == "vim":
print "vim"

var = "vim"
if os.environ['EDITOR'] == var:
print os.environ['EDITOR']

Let’s take a similar example with music. Let’s say I am playing a standard 1/4/5 pattern which would commonly be found in a rockabilly song. One, four, and Five, simply designate the first, forth and fifth notes in the major scale are the main notes we will use to construct the song. Now, if you play guitar or piano. Make up something to this rough pattern, but stick to the pattern. Anything you can come up with is fine as long as you adhere to the basic notes. Now, when you get tired of playing the same thing over and over, change it up by adding a fill.

Verse: G, A, C
Chorus: G, C
Verse: G, A, C
Chorus: G, C
Bridge: B, C
Verse: G, A, C
Chorus: G, C

Instead, it is pleasurable to listen to music if sometimes the musician leads in and out of the chorus with different fills. Monotony is broken by using different notes each time the musician plays a fill. Could you imagine how annoyed another programmer would get with me if I used different standards every time I created a variable. Imagine, all CAPS one time, HAlf another, CamelCase another, like modern art for variable names. In computer programming adding fills is just ridiculous, but it would make a good blog title “”. Again the analogy breaks down because there are no standards when playing a song in my band, there are never written documents or tests to make sure the song passes.


The Danger of Analogy

These techniques of adding interesting entropy are similar in poetry, painting, sculpting, writing prose, dance, drawing and other arts. This is not true while coding. Now, I know you have the urge to say, “yeah but….”. Don’t! Stop making the analogy to music, or art in general, it is not useful when trying to uncover good coding practices. I will quote a paper written by Dykstra to assist in my point:

By developing a keen ear for unwanted analogies one can detect a lot of medieval thinking today

People make analogies to assist in their thought process, but I don’t think that they realize there is a trade off in analogy as opposed to qualitative description. Analogy by it’s self will take us back to medieval times. Instead, let’s just describe what makes a good programmer qualitatively using the properties that they actually have. Furthermore, I think it is dangerous for programmers to think of themselves as artists. I believe that it gives them the impression that they have creative license when they are bored. This leads to code that is fragile, untested, and difficult to read.



If people are so fond of these analogies, then I must take it to it’s logical conclusion. I am obliged to make a distinction between someone who composes music, and someone who can faithfully perform it on an instrument. There is creativity and art in both, but they are very different practices. Generally, pop and jazz band musicians are a bit of both composer and performer, I do not believe this is true with the programmer analogy.

I think that as a programmer, if you must be a Code Craftsman or artist, try to produce faithful renditions of the business specifications. Faithful rendition is the highest form of respect to the trade and the most productive way to code. When taking the analogy back to music, it fails because there is no productive way to play music. Likewise, there is no merit in putting in fills between bars when coding. So, let’s enjoy both, but as things that are distinctly different.



Read More

Has Web 2.0 had a Corrosive Effect on Democracy?

About two months ago, I watched a documentary on PBS entitled The Truth According to Wikipedia. As the title suggests, the film focuses on Wikipedia. But it’s really an exploration of how the Internet has enabled worldwide collaborative ventures, and how this has affected the way the world gathers, assembles, shares, uses, and discusses information. The creators were able to present in a clear, informative manner (a rarity for issues-based documentaries, in my experience) the reasoning of both proponents and critics of Wikipedia-style approaches to online media.

One of the critics featured in the film is Andrew Keen, founder of the defunct website, During the 90’s and early 2000’s, Keen was a strong proponent of Internet ideals, such as universal access to digital content, but more recently has developed a profound distaste for all things Web 2.0. In the past few years, he has gone on the offensive, arguing that the core values of the New Internet – decentralization, participation, and user-generation of content – have had an increasingly corrosive effect on our economy, politics, and culture. Consider the following excerpt from the film, where Keen addresses an audience of Web 2.0 architects and enthusiasts who believe that their,

‘MyWorld’ … will lead to ‘more democracy, more equality, and more freedom.’ Now I [i.e. Keen] strongly disagree; that’s the essence of my polemic. I argue ‘me’ – that this personalization of media, personalization of culture, the fragmentation of society, indeed, into ‘me,’ into everything becoming increasingly more personalized, is resulting in reality in less democracy, less equality, and less freedom. (The Truth According to Wikipedia, @ circa 12:15 – 13:01)

A bold thesis, to be sure. One that challenged me to evaluate my own intuitions on this issue and intrigued me enough to read Keen’s book on the subject, The Cult of the Amateur. I wanted to see how strong his argument was in support of his view. It essentially boiled down to this:

1. In order for our culture to survive. society needs “gatekeepers,” individuals whose judgments and abilities to perform certain duties can be trusted.

2. Experts and professionals are the gatekeepers of society.

3. But Web 2.0 principles destroy expertise and professionalism, since they require that one extol the anonymous amateur, elevating amateur judgment and performance to a level equal with and sometimes even superior to that of the expert or professional.

4. Therefore, Web 2.0 principles are a threat to the survival of our culture.

Keen spends virtually no time arguing for (1) and (2), instead opting to make the case for (3). He cites statistics about how, since the mid-90’s, profits have increasingly fallen in professional journalism and the music and film industries; he highlights cases where misinformation spread via the Internet has had damaging effects on people’s personal and professional lives; and he points to trends in marketing that increasingly blur the line between advertisement and content.  According to Keen, this evidence not only shows that blogs, social networking cites, and peer-to-peer file sharing technologies are responsible for lost revenue in journalism and the entertainment industry, effectively ruining the careers of media professionals the world over, it shows that amateurs and advertisers are taking over their roles and filling the Web with untrustworthy, low-quality content.

Of course, Keen’s own interpretation of this evidence is questionable: one could maintain that professional journalism and the music and movie industries are seeing reduced profits because they employ a legacy business model ill-equipped for the digital age, and one could dig in one’s heels and cite contrary evidence regarding the amount and quality of trustworthy content on the Internet. But debating the fine points about how Keen’s evidence should be interpreted is really a moot point. His analysis suffers from a more basic problem insofar as he has, at best, shown only that increased untrustworthiness of Internet content and decreased revenue in professional journalism has coincided with the implementation of Web 2.0 principles when what he needs to show in order for his argument to work is that the implementation of Web 2.0 principles has caused the supposed ‘destruction of expertise and professionalism.’

But suppose for a moment that Keen does establish a causal connection. Should it then be beyond any reasonable doubt that Web 2.0 threatens to unravel our culture? This hinges on the plausibility of Keen’s assumptions that gatekeepers are needed for the continuation of culture and that only experts and professionals can fill that niche. Now even granting that professionals are to be exclusively identified with gate keepers, it doesn’t necessarily follow that professionalization of a field or cultural activity will guarantee its survival. Indeed, as I have written elsewhere about my own field (i.e. philosophy), professionalization has largely proven to have a cannibalizing effect and the key to its survival may perhaps involve some degree of “informalizing” and “amatuerizing.”  So, contra Keen, Web 2.0 principles might enhance rather than threaten the survivability of culture in at least some cases.

Of course, Keen could admit that a healthy dose of amateurism is needed, while still maintaining that a society’s culture can’t do without its gatekeepers. But this begs the question: just what is it about the role of the gatekeeper that makes him or her so indispensable?  According to Keen, culture is about truth, and “the gate keeper is the key player in the truth, because the gatekeeper, whether they’re an editor at an encyclopedia, or a record agent, or a newspaper publisher, they’re the one’s who determine truth” (The Truth According to Wikipedia, @ circa 24:00-24:20) And in The Cult of the Amatuer, Keen draws on the work of anthropologist Ernest Gellner and political scientist Benedict Anderson to explain that gate keepers provide society cohesiveness by presenting the public a shared narrative and common worldview:

As anthropologist Ernest Gellner argues in his classic Nations and Nationalism, the core of the modern social contract is rooted in our common culture, in our language, and in our shared assumptions about the world. Modern man is socialized by what the anthropologist calls a common “high culture.” Our community and cultural identity, Geller says, come from newspapers and magazines, television, books, and movies. Mainstream media provides us with common frames of reference, a common conversation, and common values. Benedict Anderson, in Imagined Communities, explains that modern communities are established through the telling of common stories, the formation of communal myths, the shared sense of participating in the same daily narrative of life (The Cult of the Amatuer, p. 80).

The notion that truth, trustworthiness, and their intimate relationship (among other things) lie at the heart of culture should be unproblematic. However, Keen’s description of culture’s gatekeepers as determiners of truth sounds far less like our own cultural ideal – namely, a culture that is both free and democratic -  and more like the ideal state of Plato’s Republic. Indeed, Keen’s gate keepers are virtually indistinguishable from Plato’s description of the guardian class, whose role is to present a noble lie to an overwhelming mass of people inherently incapable of understanding truth. The culture Keen envisions is oligarchic, one in which societal control is placed in the hands of an elite class who have presumably exclusive access to truth and a monopoly on creativity. By contrast, a democratic society, whether it has professionals or not, leaves no room for Keen’s gate keepers. It assumes a fundamentally different epistemology and “technology” – one in which each person is presumed to be endowed with an inborn capability to discern truth and to utilize their creativity for productive purposes. Reality is supposed to be the determiner of truth, and it is through observation, conversation, and debate that we arrive at it. If anything, then, the principles of Web 2.0 would seem to compliment or support the ideal of democratic culture, rather than usher in it’s demise.

Creative Commons License
Has Web 2.0 had a Corrosive Effect on Democracy? by Nathan M. Blackerby is licensed under a Creative Commons Attribution-No Derivative Works 3.0 United States License.

Read More