Published December 3, 2009 by John
I think most people have a pretty good image of what “craftsmanship” connotes: skill, care, attention to detail, and beautiful results, usually from someone like a cabinet maker or a violin maker. But it’s encouraging to see the same ideas being used to try setting a similar path for professional development in programming. The idea of software craftsmanship has been around for a while (Pete McBreen wrote a book on it in 2002), but it seems to be taking root and growing in the last year from some of the serious Agile movement fellows.
I’m not sure if it’s exactly an outgrowth of the agile ideas, but it seems to spring from a similar aesthetic: that there is tremendous personal and product value in caring deeply about the work you do, and that growing in skill as a software developer is more than just keeping up with the latest language and tools.
The 8th Light folks have a good post on the characteristics of craftsmanship, and make a point that I see few others acknowledging: that for programmers, the code is not just writing, but is thought of, worked with, and talked about as a very tangible thing.
Code is a physical thing. Though technically code is nothing more than some states stored on a fast spinning magnetic disk, it is just as physical as a lump of clay. Consider the language used when talking about code. It is touched, shaped, moved, broken, cut, pasted, fiddled with, tweaked, and played with. It is the physicality of code that enables the feedback between the hand and the eye. It is touched and a change is observed.
It’s this feature that makes beautiful code seem more like a statue than a story to me; it doesn’t evoke so much a mental image or feeling like words of a master author, but more of a sense of right proportion and balance that you get from something you can touch and feel and see.
Of course it doesn’t really matter just why a well crafted piece of software is seen as such. And it’s not even important whether “software craftsmanship” becomes a global movement in that name or not. What’s really valuable is that people are continuing to explore what it can mean to truly care about the software they create and its effect on the world around them.
Filed under Software