Programming is terrible so learn to enjoy it

I ran across an anonymous opinion piece on how programming is terrible. It was posted a while ago, but it resonated with my own journey through programming. From when I was young and nothing was impossible and everything was magical, through disenchantment once in the real world, and through finding joy and solace in my craft. But what I learned through my journey has helped me find the joy again.

I sympathize with the anonymous author. I have felt as he does, dejected and bored that a new project was not an exciting wonderland of beautiful hacks, or a movie montage of elegant code spanning the screen. My expectations were too high. I thought we would always do the right thing to rear software all grown up ready to take on the world.

When I first learned how to program, how to build websites, I felt like a powerful magician. I felt the energy flow through me as I created, as I built and molded towers of, at the time, ugly code. But it was beautiful to me. I basked in my creations. Like a young kids building the tallest Lego tower. This is what I wanted, this was joy was what I wanted out of life.

My first job as a programmer was an eye opener for me. I was exposed to the reality of getting the job done. When the realization set in I got angry. First at the project then, at myself. I held it tight knowing someone was to blame. Anger lead to depression, which sparked more anger. But depression won, and eventually lead to a painful realization that programming wasn’t the magical world I wanted it to be. So projects became just another website to build. It became a numb experience.

I never wanted my work to be just a project, just another website. The clients don’t know a bit from a byte. They don’t know the nuanced details of how all the parts of a web page interact. They couldn’t care less about how it works, or what I coded, just as long as it works. For a time I believed they were right. I just made it work.

I moved from project to project, small sites and large; holding onto the little bit of anger. Pissed that the project wasn’t perfect, or that the client didn’t know anything. Over time not much changed. I learned more about programming and development; I got better. The more I learned the less the clients knew.

The author of the pastebin describes a similar journey. I can see the parallels; our high expectations. When talking about his first real world job he says: To put it simply, I wasn’t really learning much. . He says he fought the tools, he hated the tools. His expectations, as were mine, were monumental. They were so large as to allow for very little to be right.

As I learned and grew in skill, as I worked on website after website, I longed for the days of joy; when I would come away from a project excited for what I had created. I wanted to find the magic again. I felt that life and programming had to have more than just a dull rote creation of site after websites. I came to the realization that clients (and account executives) would never know as much as I do. That was not their job; it’s what they hired me to do for them. I realized that my job was more than just programming, I should be also a teacher and an advisor. Clients looked to me to help them make decisions.

I also learned to embrace the process of programming websites. I came to know that programming (websites in particular) was not about creating an end product, a final perfect form. It is a journey of discovery and solution finding. I embraced Wabi-sabi; the idea of the imperfection and incompleteness. The websites I made were not done, not finished; but they were done enough. They were “good enough” to be launched to the world.

It used to be that “good enough” was a dirty word to me, a black mark. It was a sign of failure. I’m not sure if through practice or years, but I have come to embrace “good enough”. To embrace the ugly imperfect tool that does the job and pays the bills. I have even come to see the beauty in the ugly that is PHP. To see how it can be used to make beautiful code out of it’s ugliness.

After time in a few jobs the author has settled on a reasoning: In the end, it’s just a job. You figure out what’s needed, write it, test it, fix bugs, get input from customer. Rinse, repeat. It is a sad reasoning, a poor end to the joy he used to hold for programming, for code.

I believe in the magic again. I learned that within the boundaries of a project I can create little realms of beauty. No one cares how I code so I can code to my own enjoyment. I’ve stopped caring what other people think, and I’ve stopped looking to the job and outside world to give me enjoyment and I’ve started looking inside myself. To find the joy in my own actions, in the moment.