I’m writing this after finishing a small utility script to find duplicate files across two massive folders (sure, there are plenty of off-the-shelf tools that do this, but my specific matching criteria went way beyond simple hash comparisons). But this post isn’t about the tool. I just want to reflect a bit on the act of writing code.
How I got into programming
In high school, I learned Pascal. It was part of the standard curriculum, but after finishing the basic material in the textbook, I bought myself two more books. Once I finished those, I felt ready to write programs beyond “Hello World” or simple math scripts.
Over the following months, I wrote a chemical equation balancer, a Tic-Tac-Toe game, a Hangman game, and my proudest achievement - a Morse code learning app (some of which were written in Delphi). I sent the apps to my friends, but no one seemed impressed, which disappointed me a bit. However, I realized I had a lot of fun during those months of writing code, reading manuals, and fixing errors when the code wouldn’t compile. (I later learned that software development is much more than just writing code, which is fine. Passion has to start somewhere, right?)
Enjoying the process more than the result
If you are a recreational fisherman, chances are you find the moments of silence more enjoyable than the brief second of catching a fish. If catching fish were the only goal, people would just buy them from the supermarket. If you are a hobby knitter, you know that you knit mainly for the process, not just for the scarf. Knitting is an additive activity. Once you start, you can’t help but keep going. You knit for the sake of it.
A gardener enjoys the moments of digging soil, planting seeds, breathing in the the smell of wet dirt after watering, and watching a plant grow over time more than having a blooming garden right from the start. If a finished garden were all one needed, they would just go to a park. A mechanic enjoys choosing the tools, diagnosing the engine, and tightening the screws more than simply seeing a functional machine. As a cyclist, being able to teleport wouldn’t provide the same joyful feeling as riding up a bridge and then easing off the pedals on the way down.
Professional software development vs Hobbies
There are several differences between making software professionally and doing it as a hobby.
When I work on pet projects or tiny scripts, I can complete them whenever I want and write them in whatever style, paradigm, or ideology I like. I can spend an entire day jumping down rabbit holes just to write three lines of code. I can spend hours optimizing code just to make it a few seconds faster. I can spend weeks refactoring so it reads nicely and poetically despite the fact that I may never read it again. When I press a key to name a variable or save a file, I think of the long chain of contributions, all the way back to pioneers like Turing and von Neumann, and the talented people who built the systems that make that keystroke possible. I feel appreciative and happy. I enjoy every bit of coding as a hobby.
I still find that excitement when working professionally, but only to a certain extent. For example, I don’t spend time rewriting code if there is no clear benefit to the company.
Then, as you know, the AI wave arrived and significantly changed how software development works. I haven’t written a complete function by hand at work for several months, and I feel less happy because of it. Don’t get me wrong. I’m lucky to work for a company where AI is fully embraced and where employee research into AI is encouraged. It’s just that one of the processes I enjoy most is no longer there.
On the other side of the spectrum, what I love about professional development is seeing the software used by real people. I can see how many users it serves and build systems that would be impossible to create without a large team. I see how complexity and performance are handled at scale. I feel accomplished when the company succeeds because of our work. I love how fast we can roll out a new feature by coordinating teams, making key architectural decisions, and trusting my junior colleagues to turn ideas into reality. And when it comes to AI, I love seeing prototypes built quickly, sometimes just minutes after an idea pops into my head.
I use zero AI when coding my personal programs. That is how I stay joyful. On the professional side, I maximize AI use to be as productive as possible. In the last month, I used up my entire monthly quota within the first two days. That is how heavily we utilize AI at my company.
While AI took away some of the simple pleasures of coding, I’ve gained different kinds of satisfaction in return. I suppose I have the best of both worlds now. They complement each other quite well.
There is still a question that bugs me to this day: if AI was around back then, would I ever fall in love with programming?