I’ve officially worked as a software developer since August 2016, and by now I have a fair share of stories to tell from those years. But those are stories for another time.

Today I’d like to focus on where it all got started.

The early days

I never considered myself good with computers, or a nerd, or anything like that during my childhood. All my computing experiences can be summed up in a pretty short list, and most of the memories are around computer games.

I was simply too busy petting the kitty.
I was simply too busy petting the kitty.

Starting off, there was that one Windows 95 box with no internet connection at home. Me and my younger brother defaced the startup screen in Paint because it was just one of the images on the drive, and there wasn’t anything else interesting for us to do there.

Then there was that one laptop the family had temporarily. It ran Windows XP, which felt really modern because the user interface had actual colors.1 I remember being fascinated by one game on it: Siia sinna läbi linna. It was a simple educational game where you had to follow traffic rules as a pedestrian and walk around. I had the most fun with it when I tried to illegally cross the road and barely miss the cars.

My aunt had a desktop PC that I rarely could play with, but it had some great games, like The Need for Speed (the very first one!) and a PC port of Sonic the Hedgehog 3.

Later on there was a Compaq Armada 1592DT. It ran Windows Millenium Edition, which is commonly regarded as the worst Windows release ever. It was not great, I can tell you that.

It was around this time that I also got into gaming more. I played through the demos of Need for Speed III Hot Pursuit and Sports Car GT2 hundreds of times. Free demos was all I got, and not many games even ran on the laptop. The two games in question also ran slowly, but I still loved them.

Then there was a Windows 98 desktop PC that I got around 2004-2005. This time in my life was characterized by family drama, so it was great to have a place to escape. My fondest memories include finally playing the full version of Need for Speed III Hot Pursuit, and hours and hours of RuneScape.3 I still remember one random event occurring in RuneScape where a tree pops up and you have to interact with them or try to kill them, however my computer froze at the time and no amount of hitting it with my foot helped. Lost my full mithril armor that day. The computer eventually gave up with what I assume was a hard drive failure.

Then we got an actual new computer for the first time in my life. It was 2006 and we got a Fujitsu tower PC with an AMD Athlon 64 X2 4200+ and an Nvidia GeForce 7300. The GPU was passively cooled and died soon, and the warranty service put in a Nvidia GeForce 6500 instead. That ran much better. This was the era of more unpleasant life events, working summers as a newspaper seller4, and playing a lot of GTA San Andreas and Need for Speed World. I could spend 9 hours playing every day while still keeping my grades up at school.

I had the time of my life playing games, and it’s probably what saved me from making stupid, irreversible decisions.

School, computers and me

I went to first grade in 2002.

The first time I could use a computer in a classroom was in 2010.

There was one classroom full of Windows XP boxes, and with something like 256 MB of RAM in them. The UI was very gray, likely as a result of switching to a “classic” theme to save some resources.

I remember two items from the curriculum:

  • creating a Word document
  • creating some pixel art in Paint

We had to remember which computer we used and hide our files somewhere in the folder structure if we didn’t want to lose it between classes. USB sticks were very expensive and not that popular as well.

Our teacher was what you’d think of when you thought of the most stereotypical sysadmin: probably good at their day job, but maybe not the best teacher. At least they did show us the insides of a PC, and I remember how they were raving about their IBM ThinkPad T20-series laptop and how the new ones were trash. I guess some things never change.

There was also a short robotics course where we could do things with LEGO Mindstorms robots, but we never quite understood what we were doing.

Not all schools in Estonia are made equal, and I experienced it first-hand. My next school was a completely different experience, as they had two computer classes, and the machines they were replacing were still years ahead of what we had at the previous school.

I’m very happy to see that we have companies like GreenDice who are motivated by similar experiences and want to make sure that everyone has access to computers. Most media consumption happens on phones, but the real work still gets done on PC-s.

The part where I started programming

When I went to 10th grade, I did so at a new school. It is considered one of the “elite” ones in Estonia, and I got there by pure accident.5

Ah, 2011. The iPhone was new, smartphones were evolving fast and I definitely did not know how to talk to girls.

Around 2012, our class teacher sent out a notice saying that Tartu University was offering a free extracurricular course named “Teeme ise arvutimänge” (roughly translates to “Let’s build computer games”). It was fully online with no scheduled mandatory hours and I liked games, so I signed up.

The course was about 7 weeks long. Every week you’d focus on one area, starting with the basics of Python 3, building up your knowledge with more complex parts of the language and creating a text-based game. At the end of the course you had the choice of building a text-based game or a 2D game with Pygame.

I had discovered retro gaming around this time, so I went ahead and recreated the final boss level of Sonic the Hedgehog 3. I “borrowed” sprites and the official soundtrack from various places online, and at the end I had something that didn’t run very well, but it ran.

And it still runs on my Fedora Linux 40 laptop!

I got a bit excited replaying this.
I got a bit excited replaying this.
"original content do not steal"
"original content do not steal"

After the final project was completed, everyone who participated shared their games with the group. I liked seeing a few games there where it was obvious that the author had put actual effort in and loved working on it.

I passed, in spite of the obscene number of copyright violations that I had committed.

It's clear that git was not part of the course.
It's clear that git was not part of the course.

Before I went to university, I also attended a one-off extracurricular programming class offered by the school. During that time, I showed my game to a classmate there and they were absolutely horrified at the code. For good reason. Whatever I did there, it was horribly inefficient. At least my modern CPU can now chomp through all that inefficiency.

With that feedback in mind, I rewrote the game from scratch, made fewer stupid mistakes and added new features as well. It was still around the same concept of the Sonic the Hedgehog 3 final boss level, but the obstacles and enemies were more varied and the game ran at 60 FPS even on an old laptop.

What’s funny is that the new version of the game doesn’t run. I had to manually set the resolution of the game, and even after that the game crashes randomly after 5-10 seconds.

Definitely not future-proof.
Definitely not future-proof.

But hey, it looks so much better!

I even commissioned a drawing for the title screen. Big budget stuff!
I even commissioned a drawing for the title screen. Big budget stuff!
Ain't nobody got time for replaying the whole game to debug the final boss!
Ain't nobody got time for replaying the whole game to debug the final boss!
The sprites are animated now!
The sprites are animated now!
Variety in bosses!
Variety in bosses!
A bit harder to hit now.
A bit harder to hit now.
The orange ones follow a sine wave pattern. Very advanced AI!
The orange ones follow a sine wave pattern. Very advanced AI!

This Pygame adventure also spawned the only two StackOverflow questions that I have ever asked: the one where I ran into limitations of the library, and another one where I couldn’t understand why my background was funny.

I also ended up attending an event6 where I could show my game to others, and the article about it is still up! You might need to use your favourite translation service to understand it though.

This one course is the sole reason I chose computer science in university and ended up as a software developer. This sequence of events is purely accidental, and yet it sparked this fire in me that thrives on building new things and troubleshooting issues. I loved the immediate visual feedback that I got when building the game and had a lot of fun trying to figure out how to make the computer do what I want.

A lot of what made me love programming was also what I enjoyed during my first actual job as a software developer. I started out as a front-end developer, working with Angular 2 right when it got the first official stable release. It wasn’t easy to start with something like that as a junior developer, but I loved the immediate visual feedback and learning how to use the browser tooling to troubleshoot issues.

For a few years I also considered pursuing a career in game development. I love playing games, I love programming, so it would have made perfect sense, right?

Unfortunately the only things I kept hearing about game development were negative ones, involving poor working conditions, “crunch time”, and how most game developers end up with mental illnesses and severe burnout, all because some people in suits want to make even more money.

Things I wish I knew

The lead-up to my first actual job as a software developer included a lot of unknowns, anxiety and comparisons to more successful students, which is why I’d like to share some tech tips for those just starting out in this field or IT in general.

It’s OK to try out this role and end up deciding that it’s not for you. I know quite a few people that started out as software developers, but ended up transitioning into a different role that suited their interests better, such as team lead, product manager or data engineering. Even I had a two-year gig as a team lead! Change can be scary, but it might end up being the right thing to do.

Don’t feel pressured to do anything. Some YouTuber just posted a video that you have to learn this new framework or programming language or you will never get a job? Someone on Twitter keeps insisting that the blockchain is the future and everything else is now obsolete? That is pure grade-A clickbaity bullcrap that plays on the fear of missing out. Don’t fall for it.

There’s also a subset of developers who have an expectation that you also write code in your free time and regularly contribute to open source projects. Unless you want to work at Google, Meta or any of the other “big tech” companies, then you really don’t need to cave in to this unreasonable pressure. You’ll be fine.

Do things because you love to do them. I have the opportunity to do software development stuff 32 hours a week7, why would I want to do even more of it? In my free time I want to do dumb experiments with my hardware and try out new ideas in my homelab. I also like writing a lot, so that’s what I end up doing.

Take care of yourself, and learn about the symptoms of burnout. It’s OK to take a rest if you need it. I wish someone told me this while I was in university, would have prevented quite a few chronic health issues.

Programming skills don’t matter as much as think they do. They still matter, don’t get me wrong, but it’s a relatively small part of the job. The ability to work well with others and a problem-solving mindset will take you very far, and you’ll figure out the technical details along the way.

Don’t do it for the money. The money won’t cover the therapy that you’re going to need to get over the soul-crushing agony that you experience every day if you secretly hate software development and everything around it. There’s a lot to dislike in the industry even if you like this role, so I can’t imagine how bad it might be as someone who isn’t able to enjoy the good parts of it.

I also have a list of good articles that will hopefully give you a better idea about the industry, the role and the expectations to a software developer.

Everyone has their own path to becoming a software developer, and this one is mine. Yours will probably be different, and that is perfectly fine.


  1. if you only knew grayscale interfaces all your life, then you’d be excited about a change like that as well. ↩︎

  2. Sports Car GT launcher also went from reporting 1 MB of VRAM, to -1 MB, to -1535 MB. For some reason it’s a core memory of mine. I don’t know why, either. ↩︎

  3. it’s called Old-School RuneScape now. I’m not old, you’re old! ↩︎

  4. and I was damn good at it, too. ↩︎

  5. it’s not a weird flex, I just never planned on switching schools, but the grades were good and the toilets in the new school weren’t thick with smoke, so I switched. ↩︎

  6. it’s been 10 years. That’s a long-ass time. ↩︎

  7. if you haven’t tried a proper 4-day work week, and you have the means to do it even with an effective 20% pay cut, then try it, it will be life-changing. ↩︎