Programming: Between industry and craft
Begin I grew up around people drawing, sewing, building, gardening, etc. I admired crafts and trades — it’s cool when people create and design things by hand. And not just by hand, they put skills into it, attitude, sometimes pride or love. In a way, they go beyond “just doing something” and tap into art territory. Years ago, when I stepped onto the IT path, I expected software engineers to be like craftsmen (like watchmakers or woodworkers, for instance). But recently, I realised I’m in the world of fast fashion. Between industry and craft I understand we’re a few industrial revolutions away from the original crafts. We’re in a start-up world with a low germination rate. We MUST be fast or someone else will eat our part of the cake. I understand that modern watches and wooden furniture are rarely made by hand. Most apartments I’ve been to in Berlin looked like IKEA catalogues. But I’ve seen beautifully crafted furniture and watches. My question is: Where is beautifully crafted code? I’m guilty of this myself. Just look at the recent Gleam video: on multiple occasions, I leave shitty code and a promise to fix later. I wasn’t always like this. I used to be a better engineer just a couple of years ago. These days, I’m a “better engineer” but only for the business — I deliver faster and know what to focus on (as far as business is concerned). But why don’t I focus on the craft anymore? And it’s not just me — I notice this in others more and more. Some of it is industry’s fault, but some is our own. Not built to last Memes about rewriting stuff to Rust are funny, but it’s not funny that we normalized rewrites for no major reason. A watchmaker can service a pocket watch from 1887, a woodworker can service a mid-century modern chair, both are likely to enjoy the process, and the results will last for years. There is admiration for well made older (vintage) stuff. And what do we do in our industry? We label code “legacy” the moment it leaves our local machine. What else do we do? We make “quick prototypes” that are never planned well but always end up in production… stay there for years… until we “rewrite it”. Of course, it rarely goes well and we never learn from our mistakes.

Begin
I grew up around people drawing, sewing, building, gardening, etc. I admired crafts and trades — it’s cool when people create and design things by hand. And not just by hand, they put skills into it, attitude, sometimes pride or love. In a way, they go beyond “just doing something” and tap into art territory.
Years ago, when I stepped onto the IT path, I expected software engineers to be like craftsmen (like watchmakers or woodworkers, for instance). But recently, I realised I’m in the world of fast fashion.
Between industry and craft
I understand we’re a few industrial revolutions away from the original crafts. We’re in a start-up world with a low germination rate. We MUST be fast or someone else will eat our part of the cake.
I understand that modern watches and wooden furniture are rarely made by hand. Most apartments I’ve been to in Berlin looked like IKEA catalogues.
But I’ve seen beautifully crafted furniture and watches. My question is: Where is beautifully crafted code?
I’m guilty of this myself. Just look at the recent Gleam video: on multiple occasions, I leave shitty code and a promise to fix later. I wasn’t always like this. I used to be a better engineer just a couple of years ago. These days, I’m a “better engineer” but only for the business — I deliver faster and know what to focus on (as far as business is concerned). But why don’t I focus on the craft anymore? And it’s not just me — I notice this in others more and more.
Some of it is industry’s fault, but some is our own.
Not built to last
Memes about rewriting stuff to Rust are funny, but it’s not funny that we normalized rewrites for no major reason.
A watchmaker can service a pocket watch from 1887, a woodworker can service a mid-century modern chair, both are likely to enjoy the process, and the results will last for years. There is admiration for well made older (vintage) stuff.
And what do we do in our industry? We label code “legacy” the moment it leaves our local machine. What else do we do? We make “quick prototypes” that are never planned well but always end up in production… stay there for years… until we “rewrite it”. Of course, it rarely goes well and we never learn from our mistakes.