By Radosław Miernik · Published on · Comment on reddit
Should programming be fun? With nearly 7 years of commercial experience, it’s still a really tough question. On the one hand, I’m doing what I really like. On the other, I should… Get bored already?
Programming is my hobby. (Actually, I wouldn’t be where I am now, if it weren’t.) As I speak to others, it’s not that uncommon among programmers. But what is also not uncommon, is the fact that it changes in the first few years of work. It’s simple – if your work is your hobby, then your hobby feels like work.
Burnout is a thing; I hope we all know that. But let’s start small, just when the spark goes off. At first, there’s no drive for doing side projects. Then there’s no interest in new and once exciting things. At some point, it’s no longer about programming; it’s about work. Something got lost in the process.
I really consider myself lucky. Having started with programming back when I was 13, only because I wanted to create a mod for one game, is probably one of the most important decisions in my life. Of course, there are other factors, but hey – I want to keep my story a little more magical than I should.
I quickly went into “general” programming, with C and C++. Learned a lot, but my main problem was that it was nearly impossible to share anything I did with others, as configuring the entire environment on my friend’s computer took a couple of hours. In the end, my two minute long platformer was not worth it.
Because of that, I started with PHP. Version 5 was not that popular yet, and so was the hosting. But as most of my friends used the same ISP, they could see my creations in a local network; the rest used Hamachi. It was easy to make, it was beautiful (once styled), and it was rewarding. It was fun.
I used to play flash games at least forty hours a week at that time. And while my profile on Kongregate gathered tens of achievements, I learned how games work. Tools like the (in)famous Cheat Engine were ideal for learning how the game state can be handled (or manipulated), but also that it is also important not to rely on the player’s input. (Some services still don’t know that today.)
In the meantime, the need for persistence somehow forced me to learn about databases. At first, it was a text file read and dumped to disk on each operation. It was slow and fragile as hell, but hey – it worked. And if the file was publicly available through an FTP server, anyone could change it. Really, the fact that I could configure the game I made while playing it was crazy. It was fun.
Time has passed, webdev was growing faster than ever, and PHP was getting bombarded with tons of hateful comments1. As I was considering being a programmer, I wanted to have a backup plan. I started with Python and Ruby, basically at the same time. It was weird, as on the one hand, it was better than PHP on so many levels, but on the other, it felt like cheating – Django and Ruby on Rails had everything I needed to get started, so I could focus on the content.
It also helped me to get better with proper databases – ORM was a blessing. I no longer had to remember all of the
mysql_* functions, and the tables were defined in the code! Migrations were finally tolerable, index management was easier, and it worked with MySQL, PostgreSQL, and SQLite at once. It was fun.
At this point, I considered switching to Linux. I knew I had to sacrifice most of the games I used to play2, but updating WAMP or a Python distribution took hours if everything was fine; otherwise, it could take days. Sometimes it broke randomly, and it was easier to format the entire disk and start fresh. For some reason, I vividly remember doing it six times one day.
Once I installed Debian, I was petrified. I couldn’t do almost anything with it, let alone get up to speed with programming. But after a few days of reading and crashing it constantly (ah, Nvidia!), I had everything to continue my journey. And when I needed one more Python library, I was not further than one
curl away from it. That allowed me to experiment with literally anything: networking, graphics, parallel processing, GUIs… It was fun.
In high school, we had both physical and electronic grade books. The latter’s interface was strongly limited for a student; while I could see all my grades, I couldn’t see any statistics, like the average. As a “chart person”3, I copied the grades from the browser into a text file, cleaned it up manually, and threw it at Excel. It worked but was both tedious and error-prone.
All that experience allowed me to earn a little in middle and high school. Most of that was thanks to a few random people on the internet that needed a bookmarklet, some Python script for work, or simply their homework finished by tomorrow. It wasn’t much, but it was honest work.
I got hired on the spot.
It took me four solid months to realize that I was on the edge of burnout. Now, as I look at it, it was more than obvious – I was irritated for no reason, getting up for work became harder than ever, and even when the project I led at that time reached an important milestone, it didn’t mean anything to me.
There’s no point in going into details about what exactly led to it, but I have to assure you that it wasn’t anyone’s fault. It was more about the direction that my role drifted in. In other words, I was no longer doing the work that I wanted to, and that made me unhappy. It was not fun.
After I finally realized what happened4, I talked to my boss, and we agreed that I could use some time off from the project. Of course, it’s unfair to jump off the next day for the client and the team; we planned a timeline of what it could look like. My time on the project was reduced month by month, down to two, maybe four hours a week. It was mostly planning and code reviews, and only because I wanted to do so.
While off the project, I focused on completely different tasks. I got more into consulting, which is the most interesting thing to do. I love being thrown a huge codebase I’ve never seen and figuring out what’s (potentially) wrong with it! That sounds a little sarcastic, doesn’t it? Well, it’s actually true.
Auditing the first few projects was great! I not only got to see how different teams approach similar problems but also how important team standards are. Honestly, I knew that already; I saw it in the teams I was in. But when you fast forward through a dozen teams in a month, it really puts you into perspective.
Besides auditing and consulting, I focused more on the Open Source Group I’m leading – we started working on v2 of
uniforms. It wasn’t as important as v3 almost a year later, but we did a lot of groundwork and planning only because I was feeling it yet again. Crazy how productive happy people are, huh?
Half a year later, I felt like I could get back on the project. I wasn’t pressured to do so; actually, it was the opposite. Still, as I learned to “read myself”, I felt encouraged and ready to try again. A few meetings defining my new role later, I was back on track.
Because I never fully left, there was no need to catch up with a lot of things. I continued one of the features I started before the break, but this time it was different. I was not only the person implementing it but also defining how it should work, look, and feel. I was in charge, fully. Of course, that’s far from a “standard” programmer’s work, but I wanted to give it a try.
The first version got released, and users were extremely positive about it! The amount of happiness it gave me was enormous. I remember being on a call with one of the users and hearing their ideas and comments on how they’d like to see it improve – they were honestly interested in my work!
That was the time when I realized how good the company and the project I was in were. The former helped me to change the things I was working on only because I wanted to; the latter let me take over a feature that literally made up more than half of the roadmap at that time. It was fun.
I’m thankful for the whole story. It hit me hard, but I was in a good enough place in my life then; enough to learn from it and grow throughout the process. Now, do I think it’s a universal truth? Hell no. But it may help, I think.
Thanks to what happened, I do care about the psychic state of a team more. It sounds trivial, but making sure that people you work with feel happy is crucial, and there’s no way around it. If you don’t know where to start, just talk to them.
Try keeping it fun. If needed, seek help. We’ll make it.
Most of them were not sophisticated enough to focus on the language itself but rather on blaming it for all of the poorly written services. Boy, it was so easy to get admin access back then!
I love charts. But just being presented with the data doesn’t make it for me. It has to be thought through, especially when the dataset is hard. Small things like annotations, value-dependent ordering, correct scale, or even a different color palette do have a huge impact. Data visualization is a thing.
I probably wouldn’t make it “on time” if it wasn’t for a few people. Having a second opinion on your own behavior is surprisingly important.