Get a Better Word for Software “Craftsman”
Ade Oshineye complains that proponents of Software Craftsmanship misunderstand it:
Ill-informed proponents of Software Craftsmanship tend to make the following mistakes:
- they don’t read anything except the manifesto and a smattering of blog posts. [...]
- they focus on how Software Craftsmanship can benefit masters rather than apprentices.
- they think that signing the manifesto is the most important part of becoming a software craftsman.
Liz Keogh suggests that opponents of the movement also make the same mistakes. This was all triggered by Dan North’s post “Programming is not a craft“. Martin Fowler, Robert Martin and others have chimed into the debate.
My take on this is that the use of the word “craftsmanship” is unfortunate. It is a word that already has a specific meaning. (Or, if you prefer, this). Many supporters of Software Craftsmanship know this and they freely borrow terms from the guild system, including the terminology of “apprentice” and “journeyman”. And because of this association, it has connotations of elitism and suggests that is exclusive rather than inclusive despite the protestations of the supporters.
Look, I get it. I understand what people are trying to do. Let us try to write better software. Let us write code that we can be proud of. Let us deliver high quality products. Let us not let deadlines and external pressures force us into compromising the integrity of the software. All great ideals.
But the term “craftsmanship” expresses that very poorly. What it is communicating to others is an exclusionary message that you are not a real programmer unless you are writing “excellent” code after spending years practicing the “craft of programming”. And frankly, that is at odds with a world where 20-something developers are creating software that is used by hundreds of millions. I saw a picture today where Twitter would be the 6th largest country if you used user accounts. And everyone is familiar with Twitter’s engineering problems.
The truth is that you *can* (not “will”) deliver working, popular software even if its code is completely horrible. The end user doesn’t see the code. They see the behavior of the code and that is what sells. If the spaghetti code manages to hang together without disruptive bugs and deliver some useful functionality, it may succeed. And we see this all around us. A simple fact being that many of you reading this may be working on maintaining some code in some system actually being used by users (maybe thousands of users). Yes, that is right – if you are maintaining some horrible code, that code is being used by people, otherwise you wouldn’t be working on it.
The Software Craftsmanship movement (and other quality movements) is living in a cocoon which denies this basic fact. It also denies that quality incurs immediate costs in additional personnel, oversight and training (which may or may not be recovered back in the short or long term). It also doesn’t understand real world economics in which there are few salaried white-collar professional jobs as programming offering a good middle-class life (and the possibility of massive riches), and therefore it attracts a huge segment of the population who are less interested in being craftsmen than in the money and the lifestyle.
We need a more humble message that understands these realities and addresses the real problems. Let us take one example. As I said in the last paragraph, there are many (millions?) of programmers who only view programming as a livelihood. They stick to the clock and for them, programming ends the moment they leave the building and only resumes when they enter it again. They don’t think about programming, they don’t read books, listen to podcasts or see TekPub videos. This is a perfectly valid way of life – after all, many white-collar professions (e.g. clerks, customer service) do the same.
How do you get a programmer from that group to write quality code? Do you do that by holding out the promise of being a “craftsman”? Grow up. Do you fire any such programmer and only hire “craftsmen”? Wake up. What you need is more than internal personal drive. You need good processes and good managers to handle them. Not just copy-cat processes from some methodology, but what makes sense in your company environment for your kind of employees for your type of projects.
There is a lot more to criticize about the Software Craftsmanship Movement and similar methodologies, but let me end here by stating the obvious: If you need “further reading” not to misunderstand what it is about, then maybe you need to change the name and the manifesto.
From http://www.thoughtclusters.com/2011/01/get-a-better-word-for-software-craftsman/
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)






Comments
Erin Garlock replied on Thu, 2011/01/27 - 8:54am
Sure, we maintain code that is terrible and it is still a business success. But I have to ask you this, To have a successful software product, must it be terribly written?
This is craftmanship.
Jonas Olsson replied on Thu, 2011/01/27 - 10:14am
How can it be elitist to state that you get better at something if you're continously improving and have done so for a long time? Of course things are better if built by better builders, but there is also a threshold for success (things only needs to be "this" good to succeed, although that might be far from a "perfect" system).We'll always need to accept"less than perfect", but I'll be going for "good enough" instead of "bare minimum" and I think that's my version of craftsman, taking pride in my work producing not only value, but good value.
I've signed the Software Craftsmanship Manifesto, but I'm not "all that". I signed because I agree with the principles and I am committed to trying to get there. It's not a club membership signup, it's a signature of agreement!
Krishna Kumar replied on Thu, 2011/01/27 - 10:35am
in response to:
Erin Garlock
Shailendra Pandey replied on Sat, 2011/01/29 - 2:04am
Quentin Le Henaff replied on Tue, 2011/02/22 - 11:30am
I don't know if you stay in India or not but from my small experience from there (nearly 1 year), you point out what is the problem of some projects performed in India - and I see that in Europe also :
- strong turn-over, ie no strengthen in skills
- less help between developpers, ie negative concurrence
But maybe I am wrong about this and my thinking is out of the process. And don't think I hate India, I love it ; but many maintenance projects where brought there with poor skills required and poor methods in order to improve the global developper community. Yes, my 2 cents.That said, let's talk about something else. One (among many :-) ) remarks about what you wrote :
What "we" call "Software Craftsmanship" is NOT a methodology ; just the need to say : So : That's no more. Oh yeah, this seams elitist. And the word is perhaps not "perfectly" chosen. But this is because no word exists right now for us. So we do what we know : we borrow one concept from the real world and try to stick with it. Therefore we feel better. Hey guys can we be happy about our work? :)Thomas Kern replied on Thu, 2012/09/06 - 10:53am
Krishna, I expect a new term from you.
”
What the “Software Craftsmanship” message after I read the manifesto and blogs is:
for graduates: “It’s a bumpy ride. Graduation means you just start education til you become a manager
for juniors: “You need to push more. Don’t even think of spending weekends away from your computer.”
for masters: “Sky is the limit”
for who think they are engineers and not programmers: “Wake up, you are a programmer and you have nothing to do with engineering”
http://www.java-tips.org