[LRUG] Software Craftsmanship

Eleanor McHugh eleanor at games-with-brains.com
Tue May 12 09:17:12 PDT 2009


On 12 May 2009, at 07:16, James Adam wrote:
> While this is a lovely conversation, I'm not sure what the point is.
>
> Firstly, who has disagreed with the notion of "Software  
> Craftsmanship", and what are their actual objections?
>
> Secondly, why is it even meaningful to discuss whether or not it  
> exists? Anything can be a craft, or a mechanical chore. Painting can  
> be the result of a tortured artist pouring their heart out onto a  
> canvas, or paint-by-numbers. The results may not be easy to discern  
> from each other, and equally effective both as functional artifacts  
> and acts of expression.
>
> Everything is a craft, and everything is work. Whether or not you  
> consider yourself to be a craftsperson, an artist, an engineer, a  
> scientist, or a romantic is largely meaningless to anyone except  
> yourself.
>
> I'm not sure to whom the existence of "craftsmanship" in programming  
> is relevant.

Primarily I guess to those who feel it's important to their own sense  
of what programming is and why they do it. I'm happy to admit that the  
reasons I code have very little to do with commercial needs and are  
almost entirely related to addiction/obsession - there's just no other  
way to explain an activity that often consumes every waking hour  
regardless of whether or not I'm being paid.

> It's unlikely to be the consumer of our work, because they only  
> really care that it does the job it should; let's never forget that  
> the majority of us are in the business of building tools that  
> perform specific, reasonably-clearly-defined functions, which is  
> unlike most art, whose purpose is rarely even defined.

You make a valid point and I'm not sure it really matters if a  
creator's internal motivation is recognised by the users of their  
creation. However I'd argue that the majority of software development  
actually has very little to do with building clearly identified tools,  
hence why requirements change and creep have bedevilled the industry  
since its earliest inception.

How we mitigate these problems on our projects necessarily is  
influenced by how we see ourselves and the world around us, which  
regardless of our outlook will always be at best a distortion of  
objective reality and in some cases a complete fiction. An engineer  
sees a problem and they have one approach to solving it, an artist  
another, a scientist yet another. Perhaps ideally we'd all be capable  
of all modes of thought, but if we're not then at least there's a way  
of drawing value from the ones we are capable of.

> IMHO, it's meaningless to talk about software craftsmanship as if  
> there's some struggle to attribute that label. I see no army of  
> thought-police looming to smash our beautiful abstractions and  
> elegant algorithms, and nor do I see the populous clamoring to  
> admire our refactorings and marvel at the poignancy of a particular  
> subroutine.
>
> There is beauty in programming, and that's hard to see for some  
> people, but there is beauty in modern art that others struggle to  
> fathom; art in the building of bridges; elegance in the mechanism of  
> a drug; ... you get the idea. It's not like things are either  
> engineering or a craft, but never both. I don't understand why some  
> people feel that their creativity is under threat. Please elucidate  
> me!

Feeling is so subjective I wouldn't even dare to speculate for anyone  
else. However I have worked in environments where the insistence on  
engineering discipline as the only way to proceed negatively impacted  
on the level of contentment experienced by the developers working  
under that regime so I can understand those who fear their creativity  
isn't as valued as they might like. On the other hand one of the cool  
things about Ruby is often engineering and other sensibilities seem to  
work together more often than they're in conflict.


Ellie

Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net
----
raise ArgumentError unless @reality.responds_to? :reason




More information about the Chat mailing list