Beyond the buzz, beyond the manifesto and the couple of books written on the subject: what does software craftsmanship mean for people who are really building software and how do they turn it into practice?

In a quest for answers, I flew from Prague to London where I attended the very first London Software Craftsmanship Community meeting at SkillsMatter (click to view the recording) and later met up with a number of London .NET User Group members for drinks, then attended the European Software Craftsmanship Conference in Milton Keynes the following day.

I recorded interviews with several software developers over two days in the hopes to add to the already-intense online debate about the subject.

Here’s a preview:

 

Software craftsmanship is a lifestyle
where I am committed
to high-quality code. 
Sandro Mancuso

Listen to the interviews. They all sound like an anthem to passion for producing software, care for quality, and responsibility for the future. Software craftsmanship, it seems, is the answer to those for which coding is a passion to those for which it is a livelihood.

Many were attracted to the profession because the demand for programmers was so high. The bar for new hires was set low, and mediocrity reigned as complexity rose and quality fell. Corporate-types addressed the issue by adding “hordes of average programmers” controlled by a pyramid of managers and strict methodologies.

The agile community led the first attack on “the system” and targeted its bureaucracy: methodology does matter, they claimed, but not for the sake of the bureaucracy itself. Methodologies must help to produce software that works, not a pile of documentation that quickly falls into obsolescence.

I am very passionate about what I do,
writing easily maintainable code,
meeting deadlines,
hopefully producing software that will live
for many years.
Zi Makki

The attack on bureaucracy is now followed by an attack on mediocrity, and this is software craftsmanship.

Mediocrity is what you get when people do their job from 9 AM to 6 AM and don’t care about the real outcomes of their work. The key word of mediocrity is cover. Degrees, certificates, methodologies, fragmentation of responsibilities, 100% test coverage (any all other dogmas), are there to cover our asses.

I’ve been there too. I almost lost the fire of passion 5 years ago and know many who still feel the flame inside and struggle with this. Software craftsmanship, I believe, is when people say: “no, I don’t want to cover my ass. I know I could and it would be sufficient for me to survive, but I really do care deep inside about what I’m doing, and your external pressures won’t change this”.

Software craftsmanship is something
that every software developer should care about.
for me, software craftsmanship is about producing
high-quality, maintainable code.
Ben Hall

The most remarkable thing about software craftsmanship for me is that it states an internal imperative to deliver the best of myself, not because my manager told me so, but perhaps because a man is judged by the quality of his work. What the community tries to express by the word ‘craftsmanship’ is perhaps nothing more than the personal responsibility of the workman in his work.

Caring about the quality
of the code you produce.
Jason Gorman

This is why the word passion was repeated so many times. What drives us to produce good software is deep inside, and this drive is called passion.

As Geoff Colvin eloquently demonstrated in his book Talent Is Overrated, what really separates word-class performers from everybody else is long and obsessive deliberate practice. Only passion gives you the drive to program during the weekend just to solve a problem.

People caring to do their job
to the best of their ability
to produce a beautiful object.
Richard Fennell

This journey to the UK was a great moment because, above all, so many passionate – geeks – could meet at the same place. Meeting like-minded people is a formidable source of energy. I wish I could have met them when I felt my passion was being extinguished by bureaucracy.

Passionate developers: thank you so much for sharing your passion! You’re inspiring others to make the right choices. To get out of their comfort zone, and struggle for quality.

A couple of questions emerged from my journey, however:

If software craftsmanship is, above all, a personal attitude: how to turn it into a operational concept? It’s great to meet and energize each other, but what can we do, and how should we structure our communities?

Then, just after I landed back in Prague, David Harvey fired-off this argument: metaphors matter. Are we sure, we professional software developers, we want to compare ourselves, literally, for better or worse, to craftsmen?

That is what I’ll try to answer in Part 2 of my post.

To watch all of the interviews I recorded in their entirety, go to the SharpCrafters Channel.

Comments (7) -

Peter "Shawty" Shaw
Peter "Shawty" Shaw
10/18/2010 6:30:11 PM #

Almost brought a tear to my Eye, Passionate Developers of the world unite, we have a voice.

Seriously though EVERYTHING that you've said above is absolutley spot on, I started back in the early 80's beacuse I had a passion for it, today I sit back and get very disheartened when I see what is happening to the industry.

It's all very well covering your ass, and it's all very well to jump in now and be an average programmer, learn your drag and drop and quick to market tactics, good luck.

BUT it's also good to understand why programmers of today have the systems they have, and why they are able to produce software as fast as they can, and it's all beacuse of decades of "Passionate Programmers" and thier craft of software engineering.

I fully believe that the Craft should be taught in schools & colleges more, or at least students should be given some background and history so that there is some appreciation for the skills needed.

and for those who sniffle and snout at my comments, take the humble blacksmith, you can still see the craft of forging alive and well even though Iron & steel is dominated by huge multi million pound industries, and econmomic studies courses in most establishments of learning still cover this topic, so why not do the same with IT.

If there was more coverage of the art of software engineering, then maybe more new programmers would join the proffession for the passion of it, rather than just beacuse it's percived as a modern day job.

And... while i'm on my soap box... :-)

Programmer/Developer does not equal Web Designer, Iv'e lost count of the amount of people that respond by saying "Oh so you design websites for a living then?" when I tell them what my profession is.

Keep up the good work

How do we get this as an operational concept, easy... push push push, and make a lot of noise, before it's too late and the Art & Craft of software engineering disapears for ever.

Gael Fraiteur
Gael Fraiteur
10/19/2010 10:53:21 AM #

Hi Shawty!

Thank you for commenting on my blog.
Actually, I'm not well positioned to say what's inside the software engineering degree because I did something fully different: mathematical engineering. There's always been a discussion in engineering faculties, whether they must teach concrete or abstract skills. The question is not specific to software engineering. Consider mathematical engineering. I specialized in systems control. It spans control of rackets and other vehicles, chemical reactors, river/dam flow, data network routing, and so on. I just learn the maths. I did not learn any of the devices actually used in control of chemical processes. Why? Because it was not a part of the degree. Period.

But there was another kind of engineers, called "industrial engineer". They attented different engineering schools, considered less "difficult" and more "useful" for the industry. They learned to program specific industrial devices and were probably not able to proof the correctness of Laplace transforms on non-smooth functions (sampled data are never smooth functions).

So what happens? Industrial engineers need much less on-the-job learning to become useful for their employer. Abstract engineers (oddly named 'civil engineers' in Belgium even when they are computer engineers) need a couple of months more to become operational. But guess who has the greatest ability to innovate? The guys with who received the most abstract education. (I'm not telling that folks with no abstract education are unable to innovate, of course, it's just that they are less likely and less prepared to do it.)

So I think it's ok if the craft is not fully taught during formal education. Universities do not have to provide off-the-shelf programmers. The industry can do a little of training itself.

But what we do need is a stronger professional discipline so that, inside companies, we can struggle for higher quality. As Robert Martin often mentions, it's ok if managers struggle for low cost and tight deadlines: it's their job. But we should learn to build a counter-force, of equal (or greater) intensity. In order to feel more self-confident, we need a better professional organization.

For instance, we should be able to tell: "I cannot accept this assignment given, because I don't feel able to meet the quality criteria that the organization X, whose I am a proud member, requires from me". Lawyers or doctors would be able to tell that. And us?

Dave Archer
Dave Archer
10/19/2010 10:20:31 AM #

While I honestly think pushing software craftmanship as an ideal is a good thing, I have a few concerns about the completeness of such a movement.  Anyone can talk about quality and maintainability of code. These are prerequisites we read about everywhere on the web and in books. I think most people want to give their best especially within programming as profession/passion.

As programmers we spend a lot of our time at a level of fairly deep detail.  I think that caring about software craftmanship requires an understanding about software craftmanship.  A lot of us start out with little supervision.  We build sites and applications that "work", so we think we've done well.  We move on through jobs and side projects meeting (and mentoring) programmers who have grown up in similar environments and we end up patting each other on the back for a job well done.  Unfortunately the code is still rubbish.  We believe it is good and are passionate about what we have done, but this is not enough to warrant craftmanship.  This is a path that is walked without genuine understanding.

Some of us like to think of code as pieces of a machine fitting together and working smoothly.  Some think of code as poetry.  These are fantastic mindsets to have but are meaningless without being able to break apart that understanding into its components.  

I would think a campaign about software craftmanship should require a bit more meat: Answers to questions such as why and for whom is maintainability, what does quality code look like, and why is code that is good in one context perhaps bulky or overkill in another, exactly which aspects of code and its meta data need to be considered to make code maintainable.

Again, this is a great idea and one that should be progressed.  Perhaps it still needs a bit of refactoring. Apologies for the nerd joke :-)

Gael Fraiteur
Gael Fraiteur
10/19/2010 10:27:06 AM #

Hi Dave,

Thank you for your comment.
I tend to agree with you, as I mentioned in the last paragraph.
I'll try to elaborate an answer in the next post.

-gael

Banang
Banang
10/19/2010 10:23:45 AM #

Great post, Gael! It's very inspiring to see that there are so many people out there passionate about quality software.  I'm looking forward to the next installment.

Gael Fraiteur
Gael Fraiteur
10/19/2010 10:29:24 AM #

Hi Maria!

I think I recognize the picture but I did not know your online alias :).

For those who read comments: Banang's blog name is "Espacing Mediocrity"! http://banang.wordpress.com/

-gael

James
James
10/25/2010 2:42:06 AM #

I think it will be hard to put Craftsmanship into an operational concept because, like you say, it is a "passion". You either do it or you don't. It is also a concept that needs support from other areas of a Business and quite frankly they have their own concerns and probably want "craftsmanship" in their fields of endeavour. Unless "craftsmanship" helps them they probably wont champion it.

I take craftsmanship seriously and as a person endeavour.

Pingbacks and trackbacks (3)+

Comments are closed