Krishna Kumar is a software development manager from New Hampshire. He writes on topics related to software development, programming, project management, and business management. Krishna is a DZone MVB and is not an employee of DZone and has posted 41 posts at DZone. You can read more from them at their website. View Full User Profile

Get a Better Word for Software “Craftsman”

  • submit to reddit

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.



Published at DZone with permission of Krishna Kumar, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)



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

A => B does not imply B => A But I agree with you. You don't "have" to write terrible code. At the same time, starting from a clearly wrong premise is not a good way to preach your way of thinking.

Shailendra Pandey replied on Sat, 2011/01/29 - 2:04am

Good processes and Good managers cannot produce good Quality Software without Good developers and Good Architects. Infact a self organized team of good developers is the best bet. You should probably read How facebook Ships code.

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 :

...Software Craftsmanship Movement and similar methodologies...
What "we" call "Software Craftsmanship" is NOT a methodology ; just the need to say :
"hey managers, bosses, clients, we have a profession ; we have tools, mentors, schools, innovation, creativity and we make tools for the others ; and some of us try to make them right (not just beautiful or working)"
So :
"We exist as a community of workers, our work counts"
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”

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.