what makes programming great?

Most of the time, when I'm actually doing it, I love my job. There's a reason that computer programming (or "software engineering" if you're highfalutin) attracts so many people, and it's not just the unsustainably high salaries at overvalued tech companies or the promise of free gogurt in a corporate cafeteria. I want to take this post to try and make a case for what makes it so great.

The first aspect I wanted to discuss, which I think is pretty well covered, is that programming is fundamentally a creative act. Even in the worst slop-house where you're writing boring Java or Go code that converts one form of ProtoBuf to another, you are making the decisions on how to do that, you are structuring the code, and you get to enjoy the satisfaction of building something yourself. Creating and building something is one of the most essential human joys there is, and is essential to human satisfaction1. Most of the time, there's more than one way to do it, and even for the simplest program, the design space is enormous enough that no two people will come up with the same approach. Exploring this space and deciding how to tackle a problem is beautiful.

The next aspect that I want to cover is that computers are close to perfect, something that's true in so few other fields. Computers have ridiculously low error rates2, and are perfectly deterministic unless you go out of your way to make them do something pseudorandom. If you write a program correctly, it'll respond the same way every time. Now, of course, you may still have bugs based on different inputs, or different states of the machine; I'm not trying to say that we all live in a strongly-typed pure-functional utopia. But compare this to other creative endeavors — no two pieces of wood that you cut will be the same every time; even if every ingredient looks the same, the dish is always going to be different. But when you program computers, you have this wonderful opportunity to hone a single project without worrying about variance or materials degradation.

Finally, and most important to me, everything in computing is knowable. Computer science is a small, shallow field that is deliberate about building reliable layers of abstractions. There was a blog post going around a few days ago whose conclusion is that, basically, slopcoding only makes things slightly worse because nobody actually understands the whole stack already. I couldnt't disagree with this more vociferously. Yes, obviously nobody knows everything! But somebody knows each thing (because these are all systems built by humans), and the beautiful thing about working on computers is that you can know any thing! I've had times in my career when I've had to work on kernel interrupt scheduling code; I do have a pretty good idea how the memory model of ARM processors works; I have built processors by drawing MOSFETs in Magic. And, yes, I don't know everything listed off in that blog post, but I know how to learn them if and when I need to. Because my job isn't just to produce widgets of output for some corporate masters; it's to grow and improve as a person and as at my career, so knowing how to learn new things and improve myself is perhaps the most key skill.

Obviously, this is a post about LLMs, which are pseudorandom lie factories which require their users to do you do the least-creative mind-numbing activities on the planet3 and encourage humans to adopt a kind of learned helplessness — to convince us all that the unexamined job is worth working. Maybe this is the future of my industry, the inevitable enshittification of creative work into a satire-of-a-satire, where former knowledge workers pull levers on an expensive slot machine until something that they don't understand comes out that meets a Business Need and makes some executive 0.003% richer, but I damn well hope it's not a future I'll ever participate in.

  1. people keep telling me that there are huge classes of people, called "managers", who get more satisfaction from ordering someone else to do something than from doing it themselves. This seems like a defect if true, but based on the general level of dissatisfaction and alcoholism in all the managers I know, I kind of think it isn't true.

  2. although obviously high enough that you can become a prominent computer person by working around them

  3. "prompt engineering", a.k.a. trying to randomly guess a series of english words whose highest-probability autocompletion will be the output you want


Want to comment on this? How about we talk on Mastodon instead? mastodon logo Share on Mastodon