Journey of a Three-time TCO Marathon Champion
I still remember when I created my Topcoder account. I wanted to see the earnings of people in Component Design, so that I could estimate potential hourly rate from doing component stuff. I barely knew anything about UML and software design back then, but probably still more than I do know now. At that moment I was trying to organize my life, which usually involves finding a source of income. That was 10 years ago and during the 3rd year of my studies. I was absolutely bored with the studies. I had chosen CS, because I wanted to make computer games, and that was the closest major I could get. But I never imagined that I’d become so uninterested in my studies. Almost every day I’d devise a plan that would allow me to drop out from my university and do something else. And, like all of my ideas at the time, it died before I even started implementing it.
A few months forward, my plan was to create an amateur short movie. I was in the middle of writing the script and gathering people who could help me with it. That was probably the first thing that would come close to being done. I was meeting with many wannabe movie directors, operators, actors and sound engineers just to get a jumpstart into something that I have never done before. I planned to leave my university that year and then try my luck with getting into acting or directing school, even though it was highly unlikely that I’d be able to get into one. But then I discovered that it’s just way too hard for me to focus on a single task and one day when I was feeling bored (which means I had other things to do, but I didn’t feel like doing them), I launched up the arena and decided to participate in SRM for the very first time. To my surprise, it was hell of a lot of fun. Way more than I anticipated.
Programming contests quickly turned out to be my new hobby. I was lucky enough to start when it was still possible for mere mortals to qualify for the onsite finals. I managed to qualify for the finals of Google Code Jam in the same year, after only a few months of competing — something that I believe is impossible now, while in 2005 it didn’t seem like a big deal at all. Unfortunately, I wasn’t able to attend due to being sick at the time, but it still increased my motivation tenfold. Next year, I qualified for the Imagine Cup finals in India (along with other onsites), where I discovered that there are other types of algorithmic problems, although I had no idea that eventually those are going to become my specialty. But the biggest lesson I learned was that I absolutely love those onsite events. You get to travel, meet many interesting people, take part in thrilling contests and enjoy foreign culture. The only sad moment is when everything ends and you have to return to your normal life. So, naturally, my goal was to qualify for as many events as possible. Like a child, I wanted to have as much fun as I could and this was the best way to do it.
In 2008, after two failed attempts, I managed to qualify for the Topcoder Marathon finals. It was an interesting TCO for me for two reasons. First of all, it was the last time I was able to qualify in an Algorithm category — funnily enough, even though I stopped competing regularly 5 years ago, I’m still much better than I was in 2008, but I feel that getting into TCO (in algorithm track) is nearly out of my reach now. Second, and the more important reason, is that I was incredibly lucky, and I won the Marathon finals. I definitely didn’t feel like a contender for a champion title, so I was both very happy and surprised with the result. This was also the last finals where there was no close race for the first place. So why was this so important for me? It marked the point in time, where I finally started to believe in myself — for quite a long time I thought that I’m able to get decent results in Marathons because I put a lot of time into them, way more than anyone else.
My most memorable finals were just a year later. If you’re a long time competitor, you may have noticed that I often make submits without a proper “break” for sleep. I have a bad tendency for staying awake for very long periods of time. One such moment was right before the 2009 TCO. My plane to USA usually leaves somewhere between 6AM and 10AM and it happens quite frequently that I don’t sleep during that night, because I forget to pack my bags earlier and I’m finished with them only a few hours before the plane, so I opt for trying to get some sleep on the plane instead. In that particular case, my day started unusually early and (obviously) I didn’t have any sleep before the flight and (again, obviously) I couldn’t fall asleep on the plane. When I arrived, there was already a welcome reception going on and since I’m the guy who parties as long as he’s not forced to leave, I didn’t have too much sleep that night either. And, guess what? On the very next day, your 8-hour long finals start right in the morning. So, to sum things up, I was awake for a total of 40-45 hours and after less than 8 hours of sleep I had to compete in my exhausting competition. I still remember that feeling throughout the last 2-3 hours of the contest, where I designed all of my complex algorithms, but my body stopped cooperating with my mind and I could only do some very simple constant tweaking. Since the tweaks were all very simple, my solution ran very fast and there are no limits for submitting solutions during the finals, so I ended up with 147 submissions. Divided by 8 hours, it gives around 1 submission per 3 minutes. Apart from solving a Div-1 hard using assembler, that’s my biggest Topcoder accomplishment :)
Topcoder and programming contests continued to be my part-time hobby/occupation while I tried other things. Both of the two biggest adventures (I guess I could call those professions) were related to gambling. At first I tried myself at skill gaming (I still remember when I played final round in a tournament with 4K players and my mouse’s batteries died in the middle of the round — I easily broke my all-time record for the amount of profanities I said within a single day) and then later I switched to poker, which seemed like a great idea, since again it involves travelling to a lot of events. After many unsuccessful attempts, when I finally gained enough ground to call myself a pro, some very bad things happened to the poker world. This, with the addition of the Polish government introducing the bill that effectively delegalized all forms of online poker, motivated me to quit poker once and for all.
Again, I found myself with too much time on my hands. This time around I turned to Topcoder where I signed up as a co-pilot for a big project. My job required me to prepare contests, exchange tons of emails with the clients and last but not least, pretend that I know what I’m doing. So far, this was the closest thing to a real job that I have ever had. I had the pleasure to work with two both smart and nice people – mystic_tc and bchops. Even our clients were great — I always heard a lot of horror stories about ignorant clients that act like they are the only human beings involved in the project, while everyone else is just a stupid and replaceable machine. They were the absolute opposite. Imagine their situation — they are respected veterans in their field and suddenly they have to work with some random smartass half their age that they never met in person. But worst of all, despite having no expertise in their specialization, he quickly jumps into questioning the validity of the methodology they have been using for years (yeah, working with me is really painful). But even with those favorable odds, I still didn’t like what I was doing. It seems that after so many years of doing responsibility-free things and working on my own, I just can’t find enjoyment when working in organized structure.
So here I am now. More experienced than ever. Older than ever ;) And still clueless about what I want to do with my life. Topcoder allowed me to experiment. At first I rediscovered programming after being completely bored with it. Then, I understood that I love solving tough problems and I actually don’t really like coding — it’s just a tool that I’m obliged to use. It allowed me to finally drop out of my studies (which were invaluable since I met a lot of great people there, but they were total waste of time in terms of gaining knowledge), yet be considered an expert in the area in which I studied. It also showed me my weak and strong points, and I can apply this to other areas of my life. It allowed me to better understand myself.
One thing that I discovered, is that I like sharing knowledge. As a direct result, I started my own blog. Throughout my programming contest career, I had to learn almost everything on my own. While the internet is such a great source of knowledge, it still doesn’t contain answers for every possible question — usually there’s an abundance of answers to simple questions, but often lack of (or often even incorrect ones) for tough ones. My over-ambitious goal for this blog is to shrink this gap. In other words, I want to write about things that I’d find useful back when I was starting my adventure with problem solving. Despite the difference of several years, there is still very little amount of information available on many important topics.
Currently, my relationship with Topcoder is restricted to competing in sponsored marathons and qualifying for the TCO. Sponsored matches are a great mix of fun, learning and winning cash for me. They allow me to stay independent, while I still have a lot of free time to try other things. As for “other things” — remember when I said that I want to make computer games? I decided that now is a great moment to get back to my childhood dreams. I’m in the process of founding a small game studio, which will focus on indie PC games. Since I’m going to have a unique background as a game designer, the idea is to create games that will focus on AI and procedurally generated environments that will put every AAA title to shame. So, I’m both very excited and scared to death that I’ll fail miserably. But don’t worry, I’ll still have some time left for the contests. I promise :)