Craftsmanship is not art and we care like craftsmen do

Drawers to Heaven

Some rights reserved, by Felix E. Guerrero

I’ve read Dan North post Programming is not a craft and I have to say that I have mixed feelings about it.

I’ve always been against recognizing beauty in software in general and in code in particular. I don’t think that coding is an art and I don’t think that any programmer can be characterized as an artist. Code has no aim beyond solving a problem and providing some utility to a user (where a user can be another system, an organization, etc., not necessarily the end user alone). Good code is code that solves a problem AND it’s easy to change, highly cohesive and decoupled, without duplications, etc. Bad code is code that doesn’t express those qualities. So it would be a stretch to talk about good code in terms of beauty, IMO.

And I agree with a lot more from that post. For example, I like and agree with the analogy of the samurai. And I do actually believe that: “It takes a real expert – a real craftsman – to see the elegant simplicity buried away inside the mess we call enterprise software, for instance, and tease it out.”

Having said that, I also disagree with his characterization of craftsmanship, especially in artistic terms. I think that our work, the way I see it, the way I do it every day, has a lot in common with what master craftsmen used to do in Italy during the Renaissance. And a lot of it clearly wasn’t art at all, it’s just good work well done.

Back in 2002, I had a lot of troubles trying to communicate to friends and family my passion about writing code. Passion is not even the right word, “care” is more appropriate. I do care a lot about the code that gets written. And for me, the idea that code must solve a problem, is a given. Speculative coding is like onanism: you get tired of it very soon. So, taking for granted that code must solve a problem, why do I care about how the problem is solved?

Literature to the rescue. In that period I was reading a book from Erri De Luca, callend Montedidio (by the way, it has been translated in English, I recommend it). A passage just drilled in my brain:

Mast’Errico mi ha messo a stendere il turapori e a carteggiare. Alliscio le ante di un armadio per vestiti. [...] Oggi ha provato la chiusura della prima anta e quella ha combaciato così bene che ha fatto il rumore del soffio, l’aria se n’è scappata da dentro. Mi ha fatto mettere la faccia vicina al battente, ho sentito una carezza d’aria. [...] Poi mast’Errico l’ha smontato e l’ha coperto, è un’opera importante, aggiusta tutta un’annata. I cassetti sono di faggio, gli incastri a coda di rondine, una soddisfazione vederglieli uscire da sotto le mani. Controlla gli squadri molte volte, ingrassa le guide, sfila e riinfila i cassetti senza rumore, come la lenza in mare, dice, che sale e scende muta in mano a lui. Mast’Errì, dico, siete un fenomeno, un ebanista pescatore.

A rough translation in English would be:

Mast’Errico put me to spread the filler and sanding. I smooth the doors of a wardrobe. [...] Today, he tried closing the first door and it matched so well that it made the sound of the breath, the air has escaped from inside. It made me put my face close to the door, I felt a caress of air. [...] Mast’Errico then has dismounted it and covered it, it is an important work, it fits an entire year within. The drawers are made of beech, the joints are shaped like dovetails, such a pleasure watching him crafting them with his hands. He checks out the alignments many times, he greases the rails, and he pulls the drawers back and forth without noise, as the line at sea, he said, rising and falling silent in his hand. Mast’Errì, I say, you’re a phenomenon, a cabinetmaker fisherman.

So, this is my take at software craftsmanship almost 9 years ago, recorded in a message to the Italian XP mailing list on 12/3/2002, years before anybody even started talking about it. 
My message back then ended with the following:

A software engineer is a postmodern version of a craftsman. The death of a craftsman can be violent (due to lack of competence, negligence) or because of starvation (overengineering, gold plating). When a technique is overcome a skilled craftsman must reinvent itself or die.

PS: I’ve stopped trying to explain to people my work. In a social context I typically say: “I work with computers”. If I’m really in a good mood I may even say: “I write software”. That’s it. I get less frustrated this way. 

About these ads

Tags: , , , , ,

11 Responses to “Craftsmanship is not art and we care like craftsmen do”

  1. Craftsmanship is not art and we care like craftsmen do Says:

    [...] in software in general and in code in particular. I don’t think that coding is an art… [full post] thinkingbox The thinking box bookxpagileart 0 0 0 0 [...]

  2. Carlo Pecchia Says:

    Nice post… I have to admit that find coworkers that “care” about code is a difficult thing however.

  3. José Says:

    Good point: CARE. Because we didn’t / couldn’t / haven’t take time / etc. to take care in our work, the software industry has so bad reputation

  4. thinkingbox Says:

    Ah ah, LOL! => http://www.artisanalpencilsharpening.com/
    :D :D :D

  5. V Says:

    Oggesù, the pencil sharpener… and you get the shavings too! :D

    well, talking about your post, when I was younger I really thought that coding was an art, because it happened more than once that I caught myself looking delighted at some piece of code and thinking “the one who wrote this was a genius”
    I really thought that sw could be an art.
    Then I grew up and I soon understood that code must solve a problem and people rarely care about how the problem is solved.
    I think it’s a bit (mind, I said only a bit!) like the difference between the painter who paints the walls of your house and Michelangelo: they both use brushes and colours…
    I’m not saying that a piece of code could give you the same feelings of watching the Sistina Chapel, but, as every activity that comes from the creativity of a human brain, it can give you more than just a solved problem.
    Unfortunately I’ve never found that feeling in enterprise sw…

  6. Giacomo Says:

    I agree with V. In all fields, the craftsmanship fades to art.

  7. Andrea Martano Says:

    I completely agree with your post. I’ve always considered myself as a software gardener despite the fact when I’m asked ‘how do you earn the money to pay your bills?’ I answer ‘I’m a sw engineer’.
    I put care and passion in my job, my mantra is ‘make it easy make it work’.

  8. Babele Dunnit Says:

    After 30+ years of writing SW, I still believe that CAN be an Art. I agree with V, difficult to spot it in enterprise SW or in Mozilla codebase, but hey, how would you call those 4k demoscene artifacts, which clearly DO NOT solve any “problem”, if not some kind of Art?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Follow

Get every new post delivered to your Inbox.

Join 258 other followers

%d bloggers like this: