15 Year Carreer in Hindsight I: First Job!
Tags: career, education, beginners
Published: 2023-01-05 00:12:34

# Series

I’ve reached the point where I am officially considered old in the IT industry. Over the past 15 years, my career path has not been straightforward. I didn’t follow the typical route of starting as a junior in a specific area, improving, and eventually becoming an expert or architect in that field. Instead, I’ve worked on many different things and started from scratch in various technology niches.

Recently, I’ve found myself talking to people about interesting things I did in the past that are unrelated to what I’m currently doing. In these conversations, I realized two things. First, I don’t remember well what I did 10 years ago. I never consistently kept a journal, so the fun stuff I did in 2008 with GCC is now spotty in my memory. It will be even worse in another five years, and I’d like to avoid that.

Second, I enjoy working with beginners and juniors. As a senior engineer, I am also a member of [Junior Guru](https://junior.guru/). This Czech community helps those starting or switching careers in IT. Writing down what I did at different career stages can help me with mentoring. It could also help others, as some of the things I did were clearly beneficial for me, and some were not.

That’s why I’m starting this series. I think about my career in stages. There was always a period when I was focused on something, a job, an area, or a goal. That took some time, and then it typically changed. So I will base this series on these stages, with each article covering one stage. This first article is about how I studied IT, how it went, and how I landed my first job.

# How Did I End Up in IT?

Many good programmers start coding very early, captivated by the power to make a computer do what they want. I didn’t have that experience. When I was a child, all I did on our family computer was play computer games. However, in the era of 286/386/486 CPUs and DOS/Windows 95 operating systems, playing computer games often required some computing knowledge. So, I naturally learned things like hardware setup and LAN networking. I even remember translating some games to Czech by hand-editing strings in binary files using a hex editor. I grew up as a “computer kid” at school but never really learned to program. I wasn’t even that good at math!

When I was thirteen, I joined a youth club that taught 3D art and animation using [Lightwave 3D](https://en.wikipedia.org/wiki/LightWave_3D). In reality, though, we mostly played Starcraft and [HOMAM3](https://en.wikipedia.org/wiki/Heroes_of_Might_and_Magic_III). After a year, the club ended, but I still wanted to play Starcraft, so I joined another computer club that taught C programming. Fortunately, I managed to pick up at least some C between all that Starcraft.

# Schools

I never actually planned a career in IT or otherwise. I didn’t know what it entailed and wasn’t particularly ambitious. I was smart enough to pass school easily without much effort, and I didn’t care too much about getting good grades. I put in a bit more effort when I was told that grades were essential for getting into a good school. I ended up applying to two excellent high schools in Brno, one that focused on IT and programming (because I liked computer games, right?) and the other more general. I got accepted to both, but I chose the IT school, which turned out to be a great decision.

The programming and IT curriculum at my high school were excellent. I had a slight advantage because I already knew some C, but we did a lot of programming over the four years. They also taught us topics from the computer science curriculum, such as algorithms, formal grammars, database concepts, and graph theory. The education was so good that I could get a bachelor’s degree at the university later with the education I got in high school, without much effort. I knew most of that stuff already.

After finishing high school, I wasn’t sure what my career would look like. But a university degree was apparently a good thing, so I applied for two computer science university programs and was accepted to both. I selected the more technical one (in Brno, where I lived and still live, multiple universities offer IT-related programs).

# Testing Anti-Virus Software

In my second year of university, I found myself with a lot of free time because I didn’t have to put much effort into my studies. At the same time, like many students, I needed money for important things like beer and hobbies. I’m not exactly sure how I found the job ad for a part-time tester position, but I decided to apply and soon found out the position was with Grisoft. It may not be a familiar name today, but Grisoft was a well-known Czech anti-virus software vendor at the time. Their product was called AVG, and in Czechia, AVG was synonymous with anti-virus software. Grisoft was later renamed AVG and eventually acquired by Avast, another Czech AV vendor.

Finding out that I could work with a highly reputable company was a breakthrough for me. It’s hard to explain, but I never realized I could work on a big, well-known, prestigious software product or for a big name in the industry. I simply didn’t know that was possible. I wasn’t ambitious and had almost no idea what my career would look like. I just followed some path and focused more on beer and hobbies.

My first interview was a lot of fun. I had no idea what I was doing. I don’t remember it too well, but I answered half the questions with answers like “I don’t know, so I would google it.” I didn’t even feel bad after the interview. I didn’t know what an interview was supposed to be like, so I just winged it, as I did with most things. I showed up, used my brain, and something happened. In hindsight, it was hilarious. But they hired me anyway.

The tester job was as entry-level as they come. We were a cheap team of testers, all IT students. We showed up each day, received printed-out test scenario forms, and manually tested them on the day’s build. If we found a problem, we would file a Bugzilla item. Sometimes, our task was to validate that a reported bug was fixed in a new build.

It sounds menial, and it often was, but I learned a lot. Even in a low-level job, I saw how the software development process works: builds, bug reports, quality engineering, and communication between developers. I also picked up some technical skills, like working with virtual machines and a bit of Python programming. I learned a lot about Linux too. Checking the Linux builds was a task that most of my colleagues didn’t like. Most IT students at the time came from a gaming (therefore, Windows) background, and Linux was still relatively fringe. I didn’t mind and eventually became the “Linux guy” in our testing lab.

# Winging School

The first job changed my life a lot. I made some real money for the first time. It was almost a laughable amount by today’s standard, but among students, I felt rich. I also learned a lot very fast. And even better, I learned a lot of things that I could use immediately. This was a big contrast to learning stuff at school, where it was much more abstract. It was often unclear why certain things were important, especially theoretical subjects like math. So I became a bit cocky and stopped investing effort into school beyond the basics necessary to pass the courses. I thought focusing on practical learning in my job was more valuable. My study results got worse.

One thing worth noting is that the job was full-time. After several months of balancing a full-time job, university study, and hobbies, I decided that work could wait. I did not prolong my contract and started to focus on school again. Some damage was done, though - I failed some courses, which meant I would need to repeat them after a year. Because of the university credit system, I knew I would need to prolong my study by one year. I did not mind, though; there were some exciting courses. I also picked up an interest in learning new programming languages. I continued learning Python, and I experimented with C++. I even enjoyed tinkering with some of the more arcane languages required by some courses. The AI class made us work with Lisp and [Prolog](https://en.wikipedia.org/wiki/Prolog), and the hardware courses required [VHDL](https://en.wikipedia.org/wiki/VHDL). I remember doing something in [Smalltalk](https://en.wikipedia.org/wiki/Smalltalk) and [Self](https://en.wikipedia.org/wiki/Self_(programming_language)) as well.

Having an even modest IT salary changes your lifestyle as a student, though. After a short while, I ran out of money. I put up a listing on an online job board where I wanted to find a one-shot project for the summer break. I got two offers the next day. The first one was very close to the hardware (programming drivers for some industrial equipment), which I did not enjoy, so I declined. The second offer was from a recruiter hiring for… Red Hat, who was starting an engineering team in Brno. This led to my Red Hat gig. I ended up spending 10 years there, and it defined my career. I will dedicate the second post of this series to that.

# Takeaways

It is hard to identify takeaways from how things looked twenty years ago. The world was so much different back then! But if I had a time machine and could send a short message back to my 15 or 18-year-old self, I would focus on two things:

1. Working in tech opens up a world of possibilities. With talent and hard work, you can achieve anything. It may sound like something from a Paulo Coelho book, but I believe it’s not far from the truth. Dream of space exploration? Give SpaceX a shot. Love games? Send your CV to a game studio. Want to get rich? Join an early startup. It’s like playing football and knowing that if you put in the effort, you can play for Barcelona. In football, this is just a dream for most players. But in tech, the dream is very much real.
2. Boring university courses don’t have to be a waste of time. Even if they don’t have an obvious application, investing effort into theoretical classes can pay off. Having a solid foundation of knowledge is valuable and applicable. You start to recognize patterns, relationships, concepts, and systems and learn how to think about them. People often say that learning the fundamentals is a waste of time because you never actually use them, and you can always look up what you need. But to do that, you need to understand the domain you’re navigating, think about it, and know what details to look for.

Alright, this is the end for now. I have been working on this post for a while. I’m still not completely satisfied, but I think it’s better to publish it and move on than to keep editing. It’s still a long post; I wonder how many people will actually read it 😀 If you did, I hope it was helpful!

My plan for the second post of this series is to describe my experience of going from junior to senior, leading a team, and then not anymore.