In part six of my series on software craftsmanship I have a look at how software craftsmanship is sometimes portrayed as an apprentice’s journey up a guild heirarchy to the elevated rank of “master”.
Analogy to Medieval Guilds
The term Software Craftsmanship comes from the title of the 2001 book by Peter McBreen. This book introduced the analogy to medieval guilds and the progression from apprentice, through journeyman to guild master.
This analogy takes a lot of heat in the blog sphere and often when people are opposed to the software craftsmanship movement they are really objecting to the guild analogy aspect of this book.
For example Ravi Mohan: Nostalgia for Guilds and other Dangerous Ideas says:
The basic problem with the book [McBreen, 2001] is that it proposes what is essentially a medieval socioeconomic structure as a solution to a 21st century problem ,and selectively focusses on the virtues of the old ‘guild’ system where practitioners of a craft were classified into 3 categories – apprentices, journeymen and masters.
Mr Mc Breen, on the one hand says that a methodology originating in the 1960s and continously evolving since then (software engineering) doesn’t work for software development in the 21st century so we should go back to the 14th , for solutions ! Interesting !
Dave Harvey thinks the guilds suggestion is a form of “romantic mediaevalism”:
The implicit (actually, sometimes explicit) appeal to form guilds suggests the romantic mediaevalism of fantasy literature, and an appeal to some sort golden age of craft that would deny both the issues and the opportunities that exist in the grown-up world of now.
Even Hoover & Oshineye (2009), who are strong advocates of software craftsmanship, call McBreen’s book inspiring but flawed. They argue that McBreen does not “make a clear enough distinction between his vision and medieval notions of crafts as highly skilled industries overseen by secretive guilds”. They also acknowledge that medieval work practices and structure don’t quite work today.
As you can imagine, this [medieval guild] system was open to abuse and is impractical, if not illegal, in today’s world. We do not wish to repeat the mistakes that moved this model to the margins of modern society.
The Guild is Dead; Long Live the Guild
Having trounced the analogy to medieval guilds you’d think the whole thing would go away. But no.
Although Hoover & Oshineye (2009) abandon the analogy to medieval guilds they retain the ranks (apprentice etc). But they add the rider that “the definitions of apprentice, journeyman, and master discussed here are not the kind you would find in any dictionary. This is something new.” The main difference is that, whereas in the medieval world only the master had control, an apprentice in the modern context has control of their own destiny.
This doesn’t work for me as it is overloading terms that already have a common meaning.
Okay, I wanna be a master
Unfortunately there is no agreed mechanism to advance through the ranks. Hoover and Oshineye (2009) define themselves as journeymen and say there are no software masters. The argument for this is that claiming mastery is easy but justifying it is hard.
At least one brave soul has, however, claimed mastery. John Daniels asked Am I a Master? and seems to have triggered the tall poppy syndrome. This syndrome is very common in my country of origin, New Zealand. It involves one person daring to rise themselves above their peers and being cut back to size by those peers.
In response to John’s claim to being a "master" Ade Oshineye responded with:
We don’t have any sensible way of detecting mastery. Anyone who seriously claimed that distinction would suddenly find themselves having to explain why they were better than everyone around them. Someone could attempt it but they’d need a lot of ego and a diminished capacity for self-doubt and self-awareness.
Ade Oshineye, quoted on Software Craftsmanship: John Wood
It seems to me that Ade’s arguments against self-defining as a master apply equally to self-defining as a journeyman. If a candidate master can’t explain how they are better than everbody else, how does a journeyman do it? Ultimately, if you follow this line of argument, then everybody is an apprentice and can only remain an apprentice. Which doesn’t help much.
I’m a Journeyman; Now pay me more
Luckily nobody is, yet, seriously suggesting using "apprentice", "journeyman", and "master" as pay grades.
What do I make of it all
I’m not sure I’d go as far as Dave Harvey who classifies the focus on guilds as “adolescent self-absorption”.
Putting guilds aside, I don’t see the need for a universal system of software developer ranks. My observation is that developers quickly, within hours, discover the pecking order of ability. No one has to label themselves as "apprentice", "journeyman", or "master". They quickly figure out who to go to for help with problems … and who is likely to need help.
In the end I would argue that if the analogy to guilds doesn’t work, needs redefinition as "something new", and inspires a lot of criticism then you should abandon the analogy.
In subsequent posts I’ll look at other definitions of software craftsmanship.
Hoover, D. & Oshineye, A. (2009). Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman. O’Reilly. [Available on-line http://ofps.oreilly.com/titles/9780596518387/]
McBreen, P. (2001). Software Craftsmanship: The New Imperative. Addison-Wesley.