Software Developers aren’t Doctors, and they shouldn’t play one on TV

Continuing on the theme that David Harvey talked about, where one can and should be in favor of ‘craftsmanship’ while being skeptical of Software Craftsmanship (TM pending), I’ve created a category to that effect, and want to continue the discussion here.

Jan Van Ryswyck (hope I spelled that right, he doesn’t have an easy last name like “Nuechterlein”, further mentioned as “JVR”) has a post up on Elegant Code where, inspired by a tweet, he discusses the division of software developers between laborers and professionals.  As I’m going to paraphrase the hell out of it, so you might want to read the original, as paraphrasing necessarily tends to lose something in the translation.

JVR begins with the usual execrable dichotomy between the ‘laborers’ and ‘professionals’, where the former are unintelligent and mindless and don’t care about code standards, while the latter are “very passionate about their craft, that want drive innovation and also want to continuously learn and improve.  If you’re a developer and you’re reading this blog post, you probably fall into this category of developers.  The former can be characterized as “Nine to five, no thinking, narrow focus, like soldiers in the military obeying orders to make a big mess.”

<digression><rant>It’s hard to even begin to describe how many ways this dichotomy sucks.  The insult to the military is the least of it, but is eye-opening.  The last thing the military needed when the beaches of Normandy were stormed were soldiers not obeying orders.  Ignoring that though, there seems to be this continual basic idiotic thought that software developers who don’t care to spend every waking hour outside of the normal working hours of a business reading blogs (for God’s sake, blogs?) are somehow mindless laborers.  In just about any industry, there is a fact that you have to spend hours outside of normal working hours to get ahead and improve yourself.  But this idea that you somehow rise to the level of being a “professional” because you read ElegantCode blogs is just self-serving garbage.</rant></digression>

The Easy Target: Management

Next, JVR moves onto a very easy target, one that almost anyone, at least without careful thought, is going to feel a visceral dislike of, and that’s managers.  Oh, the poor Software Craftsman, all they want to do is improve their craft, only to be stymied by those managers!:

“Although they don’t get their hands dirty with writing software, most managers do feel compelled to impose all kinds of political decisions regarding business requirements, software architecture/design, tools and technologies to the development teams they are ‘managing’. I for one want to make it clear that this has to stop. In order to lift this industry to the next level, we as software professionals need to free ourselves from the leash that is currently being held by management. “

Who can’t agree with that?  Um, yeah.

Without a doubt, there are places and situations where you find yourself dealing with incompetent managers.  Everyone has been there and done that.  But, anyone with any real experience in software development knows that good project managers play a vital role.  In one of the environments that I work in, we have c# code, java code, SQL Server code, Oracle code, and other processes that are part of the software development process.  No Software Craftsman is going to be able to manage the interplay between the groups that manage these different processes, as the Software Craftsman is too busy feeling good about themselves reading blog posts. 

In fact, the JVR posited Software Craftsman disdains that sort of thing.  He’s too busy “improving his craft.”  Which is something the good project manager has to deal with:

“Any business that wants to survive in this hard world economy and even wants to get ahead of its competition has to free its professional developers from management. It’s that simple. “

Exactly wrong.  Management needs to protect the business, the business that wants the software they need to do their job, from the whims of the Software Craftsman who changes what he thinks is good software development practice based on the latest blog he read.

Software Craftsmen aren’t Doctors

JVR thinks this is a compelling picture:

“Can you picture lying in an operating room when a manager in a suit bursts through the door, yelling at the surgeon that he’s not allowed to use technique xyz to save your live?”

The hubris of this is amazing, and funny.  The Software Craftsman is really saving the life of someone?  Yeah, not really.  And as an analogy, it doesn’t work either.  The Software Craftsman cares more about his self-development than he does about helping the business.  He’s more about “screwing up the courage” to dump .NET development altogether and moving onto Ruby, or whatever the current fad is.

It is precisely because of this that the Software Craftsmanship movement is bad and should be rejected.  The individual Software Craftsman doesn’t care about the legal liability in a corporation for using unapproved Open-source software, he’s more interested in himself.  The individual Software Craftsman doesn’t care about building consistent software that can be used across a group, as he’s more interested in following whatever fad catches his fancy.  The individual Software Craftsman doesn’t care about any of that.

Summary: Embrace craftsmanship, reject the Manifesto

Building well-written and maintainable software is hard to do.  It requires a lot of effort across many individuals across many teams.  There are established practices of how this can be done, however difficult it may be.

Software Craftsmanship, at the manifesto level, is a bad idea, and should be fought against.

posted on Thursday, November 04, 2010 9:28 PM Print
# re: Software Developers aren’t Doctors, and they shouldn’t play one on TV
Mark Nijhof
11/7/2010 9:54 AM
In my definition a Software Craftsman finds delivering value the biggest reason to deliver quality, because he knows that stuff will change and these changes will be easier to deal with in quality deliverables (not just code). The continues learning is because he knows that in order to succeed in the above taks he needs to know his options and needs to practice his skills. And finally it is about more then just yourself it is also about those arround you, if they improve than what you build together will be of higher quality and thus will you deliver more value.

And yes in order to deliver value _now_ you may want to reduce quality, just know and explain the consequences as in the end business decides where the real value lies. And they can only make an informed decision if you inform them properly.

# re: Software Developers aren’t Doctors, and they shouldn’t play one on TV
12/16/2010 7:53 PM

I don't disagree with anything you've said in terms of how you define "Software Craftsman", but I question whether the manifesto definition is the same.

Last night, we had an informal end-of-year gathering at a local bar for the Chicago Alt.NET group (which was highly enjoyable) and two things related to this stand out.

1) I made a comment about how having a good Project Manager can make all the difference in having a project succeed and one person (essentially) questioned whether "good Project Manager" was an oxymoron.

2) I have to say I agree with at least the gist of a point that Scott Bellware makes, and made it at the gathering, that the success of a software development project has almost *nothing* to do with the actual writing of code. Developers (and I include myself in this group) like to tout improved coding techniques and whatnot, but the success of software development projects really centers around ease of migration, production maintainability, etc. Some in the group agreed with this, others did not. Needless to say, the people who agreed with me were right...LOL.

Anyway, if you look at the manifesto itself, there is a lot about "well-crafted software" but unless you read into "steadily adding value" what you correctly talk about, individual self-proclaimed craftsmen often seem oblivious to point 2).

And JVR's comment about getting rid of management simply ignores the obvious real-world fact of point 1).

This is why I am so against the manifesto. It's a movement that works against improving software development because it seems entirely focused on what I understand Bellware to be saying about 'local optimization' and completely ignoring how this can be harmful.

It *seems* idiotic to question a movement that wants to increase software craftsmanship, and I'm well aware of that. How the hell can anyone be against writing better code? But, the manifesto encourages what I believe to be tendencies that lead to bad results.

Post Comment

Title *
Name *
Comment *  
Please add 5 and 3 and type the answer here: