Why I Code

4 min read Original article ↗

Listen, I love building cool and useful things as much as the next person. You can look at my GitHub if you want proof. Building interesting things is why I got into programming in the first place. Being able to write words on my computer that turn into something that anyone, anywhere can access and use is so incredible.

But for me, the joy isn't merely in the final product. I get a lot of joy and meaning out of the process of creation. Out of shaping my code, figuring out what abstractions to use, making things beautifully extensible where needed, even in choosing which corners ought to be cut.

I see the process of writing code much like any other artistic process, like making a clay pot or painting a picture. The code is an output of building in the same way that the final product is.

I think most people understand this at least to some degree. Many of us, I'm sure, have written some piece of code that we've described as "beautiful". Maybe it was some clever abstraction, or a piece of code that was readable, concise, and extremely impactful all at the same time. Maybe it was something you wrote in the past that you came back to extend, and it was just so easy and simple. These are moments in programming that I live for.

For me, beauty extends not just to the contents of the code, but also to the way it looks. We all know that you can write the same logic in different ways, and those different ways impact understanding, legibility, etc. Multi-step conditionals can be written as nested ternaries, or nested if statements, or unnested statements that return early when a condition is matched, etc. etc. The type of layout you pick tells a story, and a good story makes it clear to other people (or you in the future) exactly what your intent was.

I even feel the same way about formatting. I find that formatting can often convey contextual meaning, but modern formatters mostly just clobber it away. And, probably less importantly generally (but still important to me!), formatting is a part of my artistic expression. Code written by me looks and feels a certain way. Because of this, I tend not to use code formatters on personal projects.1 My hands output formatted code anyways.

Of course, I knew not everyone saw programming this way. Like any industry, we have people who are just in it for the money, or status, or whatever else. But I really thought everyone else saw value in this aspect of programming, at least a little. Now, when I look at my primary sector of programming -- full-stack development -- oh, how my heart aches.

Who needs pesky "abstractions" when Claude can copy your logic over and over whenever you want to use it again? Who needs good types when an LLM can just make assumptions about what the input data might look like, and check a million things that have no chance of ever happening? Who needs a component library when you can just fill each and every element with pages of Tailwind classes? Who needs to think about how something could be implemented using an existing feature, when it could just be duplicated with a few tweaks for whatever user request exists right now? Why bother making code simple and elegant, when no person has any desire or will to read it?

These issues were rampant at my last job. And nobody else really cared. As long as they were shipping something in the present, the quality of the code itself wasn't even on their minds. To them, code quality was simply a means to an end, and they now had a different, easier path to what they saw as the same result.

I hear about LLMs every day. From my coworkers, my friends (both in and out of computer science), even my parents. They all love them. I don't know what to say to them. I don't know how to explain to them that the thing that used to bring me so much joy is being destroyed in front of my eyes. No more artistry. No more beauty. Just a means to an end.

I don't know how much longer I'll be able to take it. A career switch feels inevitable at this rate.

  1. Yes, I know this is unworkable for projects that involve more than one person. I know. That's not what I'm talking about.