Programming without ego
Reflections on building things for fun
Once, when I was in highschool, I was convinced that I wanted to become a writer, a great writer of fiction. Art, you know, none of this low-brow pulp fiction full of excitement and action. I wanted to plumb the depths of the human soul with my fiction, like Dostoevsky, or Faulkner, or perhaps Steinbeck. I was so concerned with producing Art (the capital “A” here is important), that I struggled to write much very quickly. Writing was like squeezing blood from a stone for me: I was so concerned with producing art that I produced very little at all, and slowly. Looking back, it seems clear to me that I was more interested in viewing myself as an “artist,” as a matter of identity, than I was in the actual act of writing — an act which to be successful, I think, has to be more focused on the reader than the writer.
It wasn’t until a few years later when I learned to abandon my ego somewhat, and simply force myself to write down a couple thousand words a day on topics that I found interesting, that I really made much progress as a writer.
I feel like I’ve gotten myself into a similar spot as a programmer, in the sense that I’ve lost the fun of programming out of more “meta” concerns about what it means to produce quality software. I naturally gravitate towards systems-level programming, and “building things from scratch”, partially out of preference, but also partially out of the belief that doing things that way produces better software — software that will last longer, that will be easier to maintain, that will be a responsible steward of our limited energy, and that will put as few layers between users and their purpose as possible. I believe that much of the modern software industry has lost its way, producing bloatware that has the only purpose of increasing shareholder value for the next quarter or so until it’s cast aside, with little regard for users or the environment. And don’t even get me started about generative AI.
But building stuff with these beliefs in my head all the time is hard. I feel like I’m too far up in my own head to actually write software anymore. I feel guilty for building things in higher level languages. I’m not having as much fun as I used to with things like javascript and python because there’s a nagging sense of guilt in the back of my head that in a perfect world, these technologies wouldn’t be as pervasive as they are. Perhaps by trying out the latest javascript framework, I’m becoming a part of the problem. Perhaps by using a library instead of implementing a protocol from scratch, I’m not learning as much from a project as I could. Perhaps, perhaps, perhaps.
I want to drop the ego and have fun with web tech again. Sure, it’s not the most efficient, but it can be fun, and sometimes, that can be good enough. Sometimes software can just be adult legos: you don’t have to worry about whether you’re contributing to Great Architecture, you’re just slapping stuff together because it looks cool and scratches an itch in your brain.
I’m not abandoning my ideals. But I need to set aside my attachment to how my ideals make me feel about myself. I need to put aside the ego that says I will be a worse programmer for pulling in an npm package every so once in a while. I need to put aside the pride that that makes my sense of self-worth depend on not building software in garbage collected languages like all the “web developers” do. Then maybe I can actually build software that meets my ideals I claim to care so much about.
I don’t know what the conclusion is here. There’s plenty of other things in life that prevent me from building software, and at some level, none of it really matters anyway. But I want to have more fun with my craft. I want to build little things for real people, without worrying so much, and getting so far into my own head. But I also want to contribute to a software culture of efficiency, good stewardship, and care for humans. I’m not quite sure how to do all that.