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.
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,
hopefully producing software that will live
for many years.
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.
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.
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.
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.