Today, I’d like to talk about the pervasiveness of the craft guild metaphor in today’s software development landscape. Specifically, I want to talk about how I think we’ve jumped the shark with this and how it now harms more than helps. I recognize that I’m probably going to inspire some ire, and get myself in trouble here, but please hear me out a bit.
First of all, some words of caveat. I don’t say this from a place of any hostility or even criticism. In other words, I don’t take the position, “you’re all making a mistake with this and being silly.” Rather, the more I wrote in Developer Hegemony, the more the guild metaphor came to feel wrong to me. But only during the course of the last few days did I figure out how to articulate why. So now, I post from the perspective of, “I think we recently took a slight wrong turn and that we should stop to reconnoiter a bit.”
Before I get to building my case, I want to spend some time applauding the guild metaphor for what I believe it has provided us. I believe it important that I do so because it clarifies my position. You can’t make a “wrong turn” without having started on the right track.
Also, note that I don’t believe anyone has stated what I’m about to say as the reasoning for the metaphor. What you will read next comes from inferences I have made.
Prequel to the Guild Metaphor: Drilling Holes in Sheet Metal
Corporate software development, by and large, got its start helping organizations capitalize on efficiency opportunities. Some VP of something, looking at a typed spreadsheet, would say “if we could speed this process up by 25%, we could hit our third quarter numbers! Poindexter, come in here and do that thing you do with the computer and make it so!”
Poindexter would then leave and come back a few days later. “I flipped the bits and bypassed the mainframe and transmogrified the capacitor and –“
“In English, Poindexter!”
“Oh, right, sorry Mr. Rearden. I was able to do a 30% speedup.”
“Good work, Poindexter!”
In this world, you had business people who would create a strategy and delegate cost savings to geeks in bite-sized morsels. The geeks would diligently execute their tasks.
Because of this historical and ubiquitous communication deficit, the business people misunderstood the nature of geek work. Their mental model of software development paralleled it to building construction and manufacturing. The geeks occupied the role of line level laborers in their particular domain. And so decades of horribly mismanaged software projects ensued.
“Come on, Poindexter, I need your codes for the next speed up by Friday or we won’t make our numbers!”
“But, Mr. Rearden, you don’t understand – it’s not that simple! We can’t just – “
“Look, Poindexter, it’s not rocket science. Just code faster and copy and paste the thing you did last time. Think of yourself as a guy who drills holes in sheet metal, Poindexter. Get a stronger drill bit, and lay the last sheet over the new one, using it as a template. Do I have to think of everything?!”
“But, Mr. Rearden, it doesn’t work that – “
“Shut up Poindexter, or I’ll find a cheaper, offshore Poindexter!”
Sanity and the Value of the Guild Metaphor
To me, the core value of the guild metaphor comes from the alternative metaphor it offers to the one above. It arms poor Poindexter to say the following:
“Actually, Mr. Rearden, you have the wrong conception of software development. Like VP-ing, software development constitutes knowledge work. Whenever we write code, we write something unique that no one has written previously.
Your ideas about sheet metal and templated holes are thus misguided. What we do is less like factory work and more like hand-crafting unique works. Think of us not as factory laborers at car assembly stations, but as artisans building custom furniture. Rushing us won’t work, and asking us to do things like ‘crank it out’ or ‘copy and paste it’ won’t work. Measuring us by the amount of wood we purchase or produce is similarly absurd.
The sooner you adjust your mental model, the better we’ll all do.”
Slowly but inexorably, the world has responded by adjusting its mental model. I believe that both the agile movement and the software craftsmanship movement have played vital roles in the prompting of this mental adjustment. Thanks to participants in these movements, people recognize software development as knowledge work and have altered project management techniques, practices, and expectations accordingly.
But we haven’t limited ourselves to using the guild metaphor as a counter to the manufacturing metaphor, have we? We’ve developed an intense and sometimes competitive focus on our “tradecraft” to the point where we consider it an end unto itself. The “craftsman-apprentice” dynamic now pervades the industry, with this terminology sometimes replacing “mentor-mentee.” And we’ve fused guild membership levels and roles with organizational structures and salary bands.
This enthusiastic embrace of the metaphor strikes me as somewhat curious, though understandable. The realm of software developers has no shortage of people that appreciate the fantasy genre of books and movies, which seems perpetually stuck in the Middle Ages. We also like to view ourselves as loosely affiliated with organizations, making our way through the world as skilled journeymen/craftsmen. So why not go from laboring Poindexter-grunts to wandering artisans, taking such pride in our craft as to define our own profession with its system of rules? We probably have enough clout.
Craft in Our World
Let me pause here and reflect on the reality of Medieval craft guilds (what our industry apes, as opposed to merchant and service guilds). I’ve read a lot about this topic during the course of my research for Developer Hegemony on the history of commerce and the corporation.
If you actually stop and let the guild metaphor wash over you, you’ll probably conclude that it’s a specific form of marketing that applies to our industry but extends beyond it as well. If you do word and image association with terms like “artisan” and “craftsman,” you might imagine someone with a beard down to his stomach enjoying gourmet cheeses served on a cedar plank, with a partially ironic Pabst Blue Ribbon to wash it down. That does not happen by accident.
In modern times, craft applies to things we requisition by hand because of superiority and authenticity. Anyone can buy furniture at Ikea, but a real enthusiast wants handcrafted furniture. They might also eat local, organic foods, work with their hands whenever possible, grow things in their gardens, and listen to records. If they want a quick sandwich, they’ll eschew the frozen variety from the burger chain and head for a sub shop where a “sandwich artisan” assembles something involving fresh kale. Society chooses craft over mass production as something of a status symbol.
The Reality of Medieval Guilds
But back in the time of the Borgias, people bought “hand crafted” because that was the only option. Mass production wouldn’t make its presence felt in the lungs of Industrial Revolution child laborers for a few hundred years yet. And in that time, guaranteed quality represented, at best, a side effect of the true purpose of craft guilds.
If you look into the etymology of the word, “guild,” you will, interestingly enough, find an old Saxon word, “geld,” meaning “payment.” When you consider the actual purpose of a craft guild, this makes sense. Craft guilds filled the genealogy tree with a common ancestor for both labor unions and modern cartels. They existed to create monopolies on goods and extort better situations for their membership from local political forces. They did this by carefully controlling supply, price, and quality.
Craft guilds and collegia, their forebears, shepherded their membership through the centuries from a world where merchants occupied lower societal strata, to one where they wielded power. Local lords with armies to muster could demand crippling taxes from some random farrier. But they couldn’t do the same to all farriers, or they would find themselves without cavalry. Craft guilds formed to bargain collectively.
Over the centuries, their purpose would evolve. They became increasingly involved in civics and fueled by religious ritual. Eventually, around the time of the Industrial Revolution, their existence became one of pure rent seeking as they sought to stifle innovation, resulting in an ignoble end for a historically important institution.
But throughout their history, they served the interest of their established members (masters) in a zero sum game with outsiders.
Apprentices as Children
So let me get back to modern times and start talking about why I like this metaphor less and less for our industry. I’ll tackle this by first discussing apprentices then and now.
Apprenticeship in the modern software world embodies the spirit of voluntary subordination in exchange for work. For instance, you might go through some kind of boot camp and then throw yourself upon the mercy of some institution as an apprentice, with requisite declarations of “I’m not worthy — teach me!”
We humans love a good narrative, and “from humble origins, of humble demeanor, sweeping floors, paying dues, working his way up” fires so many endorphins into our brains that we want to binge watch Disney movies with kleenex at the ready. A rather famous novelist named Horatio Alger made an entire career of tugging thusly at our heartstrings.
But the craft guild apprentice entered service at the age of 12 or so, to be reared to manhood by the master. That doesn’t apply to a 22-year-old leaving college, and it certainly doesn’t apply to a 50-year-old career woman, looking to start a new path.
I have come to find this imagery infantilizing in a professional context. I’ve been writing software for the better part of 2 decades, and maybe you’re just starting. By all means, learn from me, but I’m not going to spank you when you mess up and send you to bed in the attic without dinner. You’re an adult and should be treated as one, years of experience notwithstanding.
The Guild Pyramid
In the craft guild, apprentices entered as children and toiled as laborers for the master for some years. Eventually, they achieved journeyman status and a measure of freedom to work where they chose, under a master of mutual choosing. After many years as a journeyman, they might, with sufficient means, become masters with their own shops.
Masters (i.e. “craftsman”) acted as the guild’s ruling council. And masters operated in their own best interests and therefore, those of the guild. They thus designed the system to cater to themselves, including ensuring the stability and relatively low supply of the “master” position.
As I outline extensively in Developer Hegemony, and posts on this blog about the journeyman idealist, we in the software industry love to convince ourselves that we participate in meritocracy. And the guild, with its pyramid shape, topped by masters, provides a convenient, matching apparition.
Were the masters better at their craft than the lower members of the guild? On average, probably, due to more practice. But was this the defining measure for advancement ceremonies? Absolutely not. Guild stability ruled above all else. This meant cushy positions at the top that proved worth a long, long wait.
What does this mean to us here in modern times? It means that adopting the craft guild metaphor at many institutions practically begs for the introduction of expert beginner culture. “I’ve been doing this for a lot of years, apprentice, so shut up and copy-paste that code in there.”
Mass Production Versus Hand Crafting
These first two objections exist mainly in the realm of HR. You can counteract and culturally eliminate infantilizing less experienced people and creating seniority mills. These are perils of the guild metaphor, but not logical conclusions of it. So now, let’s get into a logical conclusion.
Recall that the value of the craft guild metaphor stems from the contrast to the manufacturing metaphor. We’re not squeezing burgers out of a tube here, Mr. Rearden, we’re lovingly hand-crafting sandwich art, one hoagie at a time. That buys us a reprieve from terrible project management. But we leap out of the kettle of bad projects and into the fire of fundamentally missing the point.
Craft, in this day and age, is a marketing concern in a world where we can indeed choose between mass production and hand assembly. This allows us to write software well by using that same marketing dichotomy. Do you want a lead-filled, mass produced toy for your toddler to chew on, or would you rather have a lovingly hand-crafted doll, made by an artisan down the street? I bet I know. Now, what do you want for your new website, Mr. Rearden?
What have we sold, then? We’ve basically sold art over utility. Hand-crafted consumer goods are not a necessity — they’re a status symbol that elevates the consumer good to art.
And that is now what we do with code. We forget that the main purpose of our profession lies in automating, increasing efficiency, and saving time. We get caught up in “hand crafting” beautiful code.
Your code is not a doll. People don’t buy it to admire its form and painstaking attention to detail. They buy it to reduce operating cost or increase revenue. And the craft guild metaphor practically begs us to lose sight of that point. After all, if we consider ourselves artists (artisans), isn’t well-crafted code a goal unto itself and a higher calling?
I see this one most pervasively in the industry, and I see the craft guild metaphor pouring gasoline on the fire of our own short-sighted perfectionism. Concern over building sustainable software becomes a quixotic obsession with writing “beautiful” code and choosing all of the most fashionable, perfect techs. And we perpetuate this by conferring line level programmer rank on the basis of form and not function. Some beautifully written code will get you a better title than helping your company or clients make and save money.
(As an aside, I understand this trap as well as anyone since I am pathologically incapable of not constantly trying to perfect my own code. I escape this only by doing this as a hobby, rather than on anyone else’s time or for anyone else’s dime)
The Irony of a Missed Point
Way back at the beginning of the post, I said that I finally figured out what bothered me. While I find the previous points compelling in arguing caution with the guild metaphor, I could have articulated those for a while. This last point is the one that just clicked home.
As I mentioned earlier, merchants at the beginning of the craft guild era had a raw deal. Nobility, local authorities, and military bodies all pushed them around with impunity. At least, that happened until the craft guilds formed and used the one asset at their collective disposal to improve their lot in life. Over the centuries, merchants used these guilds to elevate their own caste and go from downtrodden to power brokers.
But with our modern day adaptation of the craft guild, we have done precisely the opposite. We use the metaphor to describe adults as “apprentices” and justify competitive, value-destroying obsessions with arcane tradecraft. The local dukes ground their teeth as the farriers demanded better treatment under the law in exchange for well-outfitted horses. Modern dev managers and CTOs watch with surprised amusement as we demand that they dock journeymen that don’t even know what a Quicksort is.
And therein lies another essential difference as well. The craft guild’s masters owned all decisions related to the trade. We own none of them, which means that actual corporate power brokers will only allow us the guild parallels that reduce our wages and not the ones that bolster our influence.
How the Guild Metaphor Could Still Work
I don’t personally believe in creating unions or labor cartels for software development. As a profession in which we own the means of production and compete globally, I find the concept unnecessary and infeasible. So I would just as soon stop using a metaphor predicated upon the notion of software development cartels.
But if we want to continue to use the metaphor, I see only one path to that. You need to start software development firms — custom app dev shops — owned by software developers (“masters”). I don’t mean that the owners used to write code but have too many “business things” to do. And I don’t mean that they write code every now and then as part of some kind of patronizing nod to the rank and file. I mean that you have a shop owned and run by people that write code on a day to day basis.
This group of partners represents your masters. And non-partner, salaried individuals become the journeyman.
In the end, I thank the creators and proponents of this metaphor for moving the world’s conception of software development away from grunt work and toward knowledge work. I think this has helped us immensely. But I think we’re ready for a new metaphor — for one that empowers us instead of distracting us.