Software Craftsmanship is some code-obsessed mishmash of martial arts and carpentry or plumbing
"Software Craftsmanship" is one of the big catch phrases in the software development community at the moment. There is an Manifesto for Software Craftsmanship, a few books (Hoover & Oshineye, 2009; Hunt & Thomas, 1999; Martin, 2008; McBreen, 2001), conferences and seminars, and lots of blog posts.
But what does software craftsmanship actually mean?
In his blog post Software Craftsmanship – More than just a manifesto Ade Oshineye proposes that any discussion of software craftsmanship should start by defining the terms. Easier said than done in this case as there are several competing definitions for software craftsmanship. Different people have different, often radically different, views of what software craftsmanship means. It could, for example, be argued that software craftsmanship is:
- Not software engineering
- Not writing crap
- Skilled software development in small scale production
- A community of practice with overlapping values
- An apprentice’s journey to guild-master status
- Zen-like ascendence to martial arts mastery
- Professionalism and a dedication to improvement
Which takes me back to the quote from Ade. I admit that I’ve done him a serious disservice by using the quote. Ade is an advocate of Software Craftsmanship, an active blogger on the subject, and is the co-author of one of the key books (Hoover & Oshineye, 2009). In fact the quote forms part of a catalogue of errors that Ade believes critiques of Software Craftsmanship fall into. The trouble is, to some degree at least, the quote is true. Have a look at the list of definitions above. You can see the elements of the accusation within the list: code, martial arts, carpentry (in the form of apprentices, guilds, and masters). Software craftsmanship is in fact all of them and none of them.
This is the first in a series of blog posts on software craftsmanship. In each of the subsequent posts I’m going to look at software craftsmanship from one of the perspectives above and see what lies underneath the definition.
You might like to subscribe to the It’s a Delivery Thing Feed to ensure you see the rest of the series.
Hoover, D. & Oshineye, A. (2009). Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman. O’Reilly. [Available on-line http://ofps.oreilly.com/titles/9780596518387/]
Hunt, A. & Thomas, D. (1999). The Pragmatic Programmer. Addison Wesley.
Martin, R. C. (2008). Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall.
McBreen, P. (2001). Software Craftsmanship: The New Imperative. Addison-Wesley.