Comp Class As Soul Craft

Despite the influx of money over the past 20 years, no one has lost the perception of software engineering as a discipline of the basement dweller. A dark room with nothing but a screen reflecting onto a pair of bloodshot eyes that struggle to make contact with other humans'. The more people I meet in the industry, the more I see the truth and falsehood of this stereotype. To some extent, just as a roofer gets a sun tan and a pilot recieves a surprising amount of radiation exposure the software engineer is cursed to have poor posture and pasty skin. But the fallacy is that we want to live this way. The number of friends and colleagues who glare at their flashing cursor and dream of escaping their "sky prison" to till a field or raise a polite cow consistently astounds me.

I read a book recently. One with pages and paper. "Shop Class as Soulcraft" by Matthew B. Crawford. He makes the case that there's something special about the manual arts. Working with ones hands. That if I spent more time with a wrench than fiddling with my Emacs config I would gain some much needed virtue. He's a very charming author and it's hard to read his book without at least considering buying a motorbike (especially if you already wanted to buy a farm). But he spends a lot of time denigrating the white collor world that he left in favour of his entrepeneurial vehicular experiment. The case I'd like to make is that the noble software engineer who dreams of getting their hands dirty outside of their coporate bubble wrap is closer to M.r. Crawford's ideals than he or they would have you believe.

Autonomy Vs. Agency

Mr. Crawford draws a trade off (engineers love these) between what he calls autonomy and agency. To me these words feel philosophically loaded and from my leyman's perspective almost mean the same thing. I prefer usability and ownership. The example he gives is of an old motorbike. One that is difficult to ride (for some technical reason) but easy to work on. A simple mechanism that can be customised without having to think about all the fancy electronics. He's losing the usability of his bike since it doesn't have all of the fancy things you would expect from a modern bike but once customised this bike is truly his; hence ownership. He can pick each part. Each choice is his own. More than this you can imagine that the new bike might come to a point of obsolescence where it's no longer being supported by its manufacturer. The evil motorcycle corporation would much prefer you to buy a new bike compared to fixing your old one. Now the obvious connection here is to building your own pc. But I fear that the author would consider that a manual craft and not one of the white collored burocratic circle jerks that he loved to hate. No, I think open source software falls into this exact same dichotomy. Using OSS is difficult. The modularity of the Unix philosophy generally means you need to put together something on your own. Importantly however, this gives you far more ownership of the finished product. Your system works exactly the way you want it to. And then if something is not up to your standards or you want to change it in any way you can always create a fork and make the software exactly the way you want it to be.

Now you may not be a FOSS person just yet. Not all software engineers are. You may look at your App Store downloaded software and your VScode extensions and feel that your machine works exactly the way you want it to. This Mr. Crawford dubs: the "cake mix" level of ownership. According to him when they were initially selling cake mix they found that if they required people to add an egg they felt like they had actually cooked something. Myself, Mr. Crawford, the Unix folk and presumably a bunch of ready made cake mix executives all cottoned on to the same truth of human nature. Ownership is cool. There's some deep joy in creating something and making it your own. This is why you don't buy a teddy for your child you let them Build-a-Bear. You give them just enough freedom that they feel like they contributed to it. That they chose it. That it's their bear. If you are a software developer, try Emacs. And similarly, when your child asks for a Build-a-Bear give them a sewing kit and some fabric.

Skill and Community

Mr. Crawford's touch into the corporate world was as an abstract writer. He would have to, in a too-short period of time, summarise journal articles for a database. This is perhaps the worst example of meaningless, demeaning corporate jobs. He was removing value from the world by not having sufficient time to properly understand the article he was summarising. When he went to become a motor cycle mechanic he found something different: meaningful work helping people, an opportunity to get truly good at something and a community that he could grow into. His learning process he describem as pushing up against the immovable reality of the physical world. More than that, once qualified he didn't need to take orders from anyone. He was a specialist and he deserved respect. He started his own shop and was able to work on his own terms. Deciding himself what he worked on.

I'm not going to claim that software development as a job is some magical exception to the author's critiques of the corporate world. There are a bunch of talented, smart, practical people who are being held back from their productive dreams by people of smaller souls who believe they are making their subordinates more efficient. But the work. The testament to software development as a practice is that it lives in the most money centric soulless industries and still manages to bring joyful and meaningful work to its practitioners. You are pulled into a community of people who have seen your bug a million times and will lovingly belittle you if you ask them for help without reading the appropriate man pages. Just like being a motorcycle mechanic you are pushed up against an immovable reality. Instead of it being the laws of physics you are trained by the laws of logic and they are no soft teacher. The unbending and binary nature of a motorcycle working or not working is perfectly mirrored by a strict compiler keeping you on the straight and narrow. Moreover, this is one of the primary things that Mr Crawford posits helps to cultivate your soul about motor cycle repair work.

But I will go further. Repair work is nice. Creation is godly.

Creation and The Good Life

The book finishes with an ode to Aristotle. Motor cycle repair is especially good because motor cycle riding aligns with Mr. Crawford's idea of the good life. When people ride motor cycles he intuitively knows that what they are doing is good and distinctly human. Therefore his work is in service of the ultimate good. This is where software in practice falls short. I personally work in social media. Maybe sitting glued to your phone for seven or eight hours a day is someone's idea of the good life. It doesn't align with me. If anything I am helping to move people further from the life that they were created to live. But the art of software engineering isn't limited to the mere repair of the good or ill that has already been created. If motorcycles weren't in service of the highest good then the motor cycle repair man wouldn't be either. Software development is creation. It can serve ill as much as it can serve virtue. And hence, despite myself doing less for my own perception of the good with my craft than Matthew is doing with his, software engineering has the potential to create a good that motor cycle mechanicry can't match.