Today marks the fifth anniversary of the Software Craftsmanship manifesto. Doug Bradbury asked me the following question:
Do you think that the bar of professionalism has been raised in the 5 years since the Software Craftsmanship Manifesto was published? Why or why not?
My short answer is “yes” – and “no”. Being around since the early days back in November 2008 when I joined the Software Craftsmanship mailing list, and having been involved in the different thoughts on the Ethics of Software Craftsmanship, my longer answer hides in this blog entry.
Where we raised the bar
Overall, I think we raised the bar to some extents. Here is a brief list of stuff I see attached to the Software Craftsmanship movement.
There are lots of conferences where we share our work. I was lucky enough to attend the first Software Craftsmanship conference in 2009 in London. It was a blast. Gladly, we didn’t stop there. Since then other conferences popped up, like the Software Craftsmanship conference North America, and the German Software Craftsmanship and Testing conference (SoCraTes), that also start to spread to the UK recently. It’s a very good thing that we keep on conferring, exchanging our thoughts, and sharing what we know to other peers in the field. Clearly a value that we put forth from the manifesto.
There are also a couple of books available on the topic. Uncle Bob Martin’s Clean Code and the lesser known Clean Coder to start with. Dave Hoover’s and Ade Oshineye’s Apprenticeship Patterns are lesser known. So is Sandro Mancuso’s Software Craftsmanship book. (I am guilty, I haven’t read it, yet, as well.) Not to forget Emily Bache’s excellent Coding Dojo Handbook. These books collect the Zeitgeist of our movement today. I hope to see more books coming up in the next years.
Then there are events like Code Retreats and Coding Dojos. Corey Haines popularized the former one; for the Dojos there are several people around that started them. These help persons of the craft of software development to learn more about coding practices in the 21st century. For example, I remember a code retreat where we had a couple of students attending. At the end of the day they thanked us all since they learned so much on this one day that their professor couldn’t have taught them in years of study at the university. Then there was this other guy that claimed that he would be looking for a new job on Monday – and he did. These events make people of the craft aware about more effective (and efficient) ways to program in this century, and how to overcome sacred beliefs about coding habits.
On a side note, I think that the same goes for the larger testing community out there. As I see it, the context-driven testing community is very close to both, the Agile and the Software Craftsmanship community. I get a lot out of all of the three communities, and I think that we could do better if we managed to join forces.
Last, I think the biggest impact the Software Craftsmanship movement came out of the very first SoCraTes conference. We got together, and thought “this can’t be it for another whole year; we need to maintain this momentum”. We created the German Softwerkskammer to spread the word about Software Craftsmanship. One year later, we found out, that we had started ten local user groups with this. Each group met between once per quarter up to several times per month. They shared their knowledge among each other. They helped convince the larger world of software developers out there, to do create well-crafted software by steadily adding value, and nurturing a community of professionals that understand how to create productive partnerships with their customers.
Where we lowered the bar
There are also things that trouble me, and I think we can do a bit better than that.
Early on, there was the Wandering book. I think it floated around between various craftspersons quite a lot. I think I was number 42 on the list when I signed up, and it took a year or so until the book made it to my hands. Unfortunately that book is – so is the revival book that I started about a year ago in Germany. It’s a pity, to some extent since if we can’t value our treasures, our words of wisdom to the extent that we put it aside, and forget to share our wisdom with the future generations of craftspersons sent out. If we do that with our words of wisdom so tragically, what do we expect our code bases to look like?
Recently Uncle Bob Martin had an answer to that question – and the community is heavily discussing it. The idea is the one of a dedicated foreman that has the right to reject certain changes to the version control system. I think – like all rules – we shouldn’t try to apply that rule without unthinking faith. Personally, I think we should answer the question “how does that help to advance the craft?” before we implement that foreman.
Then there is another thing that makes me worry. I have worked with a couple of companies in the past few years. In that, I saw a pattern emerging. There is this group of software craftsperson that think they are the elite. So they form their own central core team where the best code of all time is produced. This is pattern that is clearly not in line with the manifesto as I interpret it. As Software Craftspersons we should be able to share our tales, share our stories, share our practices. Creating an elite team that thinks they build the best code in the company is creating an artificial barrier that will prevent other folks from joining the elite club. It shuts down the sharing aspect that we held so dearly in the manifesto. Learn how to get along with your colleagues is the way to go.
How to move on?
As I see it, there are good aspects of software craftsmanship around – and there are bad ones. I would be surprised if craftsmanship was a silver bullet after all. I am glad that we could make more people aware of coding practices they never learned in the 19th century in university, and we are starting to reach out. From my perspective it’s still the tip of the iceberg, and if we don’t learn how to overcome some of our elitist thoughts, we are probably ending our history after five years. Let’s avoid that, and keep on fighting crappy code that we created.