When did you start programming and how did you realize that this was the field you want to pursue?

Ramazan Rakhmatullin: I come from Kazan, where I graduated from the Lobachevsky lyceum of Kazan Federal University. I transferred to that school because of the intensive computer science training it offered. I started programming in 2014 right after I finished seventh grade at school. Before then, starting from my sixth grade, my main area of focus was maths. At first, I really enjoyed solving problems, but my interest rubbed off pretty quickly: there wasn’t much variety in what I was doing. That’s why I get such a big kick out of programming: it’s very competitive and dynamic, as theory goes hand in hand with practice.

Mikhail Anoprenko: I’m from St. Petersburg. I studied in the Presidential Physics and Mathematics Lyceum №239, though all of my programming accomplishments stem from my studies at ITMO University’s Olympiad programming club, which I started attending when I was in seventh grade. Prior to that, I participated in the Summer School of IT, and that’s when my coding adventures started: I really enjoyed my time there and decided to keep on exploring that field.

I used to focus my efforts on maths as well, but didn’t see much success in school competitions in this subject, which impacted my motivation. Besides, it didn’t seem that exciting on the whole, especially compared to programming: when you write code and really see it working, when you come up with something that could solve a real-life task, you get such a sense of fulfillment that no paper-written mathematic solution could ever offer.

You both had experienced mentors by your side, a luxury that many programming novices aren’t so lucky to have. Would you say that it’s possible for people your age who live in small towns and don’t have access to many opportunities to make it in programming?

The 2018 International Olympiad in Informatics. Credit: ioi2018.jp
The 2018 International Olympiad in Informatics. Credit: ioi2018.jp

Mikhail: There’s lots of learning material online these days, from books, videos, and lectures on theory to online platforms where you can practice the knowledge you acquire. And these resources are constantly growing in size and in quality, so the opportunities for learning programming are always on the rise. Saying that, I do agree that’s easier to get a start in programming when you live in a big city with lots of skilled mentors to guide you on your way.

I began my journey with Pascal because that’s what everyone is usually taught in school. From there I moved to Python, which I found even more fuss-free than my first programming language. It’s easier on rookies, especially those that don’t have to think about fundamental coding problems. All programming languages have something in common, and you have to play with these similarities to win at programming competitions: it’s not your encyclopedic knowledge of a language’s syntax that’s at test. Learning a language is pretty straightforward, you just skim through a textbook and hey presto. What’s important is how you apply this language to developing practical solutions.

Ramazan: Kazan is a well-developed city, but it’s still not as big as Moscow or St. Petersburg. You do get opportunities to bring your programming skills to a decent level, which will be enough if all you want is to, say, win a national programming competition. But if you aspire to more than that, these kinds of opportunities simply won’t cut it. That’s why, for the past couple of years, I’ve been training myself by solving tasks from various international competitions, which you can easily find online.

The 2018 International Olympiad in Informatics. Credit: ioi2018.jp
The 2018 International Olympiad in Informatics. Credit: ioi2018.jp

If the solution doesn’t come naturally, study the framework ones, they’re all out there in the open. By that point, I’d already worked up enough experience to find my way around another person’s code. The secret is in long and persistent training. Even if you get tired or bored, you have to keep telling yourself that you have a goal which you must accomplish on your own.

All participants of the International Olympiad in Informatics undergo an extremely rigorous selection process; only four people make it to a national team. Did you manage to do it at your first attempt?

Mikhail: Ramazan and I had participated in the IOI summer school, which is the first step towards the actual Olympiad, for four years straight, and it was only this time that we got admitted. I did get into Russia’s second team before, but that isn’t as big as making it to the country’s top-four. Competition at an event like this is very intense and there are lots of participants who are worthy of a place on the winners’ podium.

Ramazan: In my second time as a participant I was this close to being accepted to the national team, but fell flat in the last round. I was extremely nervous and didn’t get much sleep, and that took a toll on my performance. But this year, I managed to get my act together and decided that it was high time for me to rise up to the challenge. I’d gone through a lot of training to prepare, and that gave me a good footing.

Apart from the intensive preparation, the competition itself is grueling to the highest degree: you’re completely out on your own doing three complex tasks a day with no additional material at hand. How did you manage this daunting environment?

Russia's national team at the IOI-2018. Credit: ioi2018.jp
Russia's national team at the IOI-2018. Credit: ioi2018.jp

Mikhail: With a huge competition experience like ours, it’s not that difficult to concentrate and keep your cool. In the grand scheme of things, these competitions don’t really matter. Besides, you already know what to expect and understand this process to a T. All this helps to relax and feel in your element.

The strategy depends on the nature of the tasks. Some come with baffling evaluation criteria and obscure definitions, and these are the ones you should consider putting off for later. It’s better to decide what’s to be done on the spot, after you read all the task definitions. My way of doing things is to give the tasks a quick think-through to get the minimum amount of points and then improve on these solutions as I move along.

Ramazan: The most challenging thing for me personally was to become part the team, then I decided to go with the flow and rely on my knowledge that had already got me to this stage. I trained twice as hard for the competition than I did for the qualification round, so I was positive that everything would work out just fine.

It’s often said that competition tasks are a far cry from real-world cases. Does the experience of participating in competitions and the knack for solving competition tasks ever help you in your day-to-day life?

Mikhail: It’s true that the tasks you get at programming competitions don’t have much in common with the ones you encounter in your daily life. They’re not better or worse, they’re just different and require a special approach. Strictly speaking, the ability to solve these specific competition tasks can come in handy in a small range of highly specific fields. But this is only a minor part of the whole experience. What really matters is that programming competitions make you a valued specialist who is receptive to new knowledge, quickly adapts to new tasks and environments, and can see to the core and come up with a fresh solution. It is these skills you acquire as a result of participating that influence your future development and professional performance.

Ramazan: I think that the main goal of these competitions is finding talented and hard-working people, and they do their job.

The 2018 International Olympiad in Informatics. Credit: ioi2018.jp
The 2018 International Olympiad in Informatics. Credit: ioi2018.jp

You have enrolled in ITMO University. Why did you choose to study in St. Petersburg and not in Moscow, for instance?

Ramazan: Moscow is notorious for its hustle-and-bustle, I like St. Petersburg better in this respect. Apart from that, I couldn’t disregard the fact that ITMO University is a seven-time winner of ACM ICPC, which is arguably the world’s most prestigious programming contest.

Mikhail: I love St. Petersburg, so the location of my future studies was a no-brainer, as, in many senses, was my choice of university: ITMO University is renowned for its programming successes and expertise. Ramazan and I have both enrolled into intensive training in sports programming, which is led by Andrey Stankevich (ed.note: associate professor at ITMO’s Information Technologies and Programming Faculty and coach of the university’s seven-time ACM ICPC-winning team. Andrey Stankevich also coached Russia’s national team at the IOI-2018 in Japan). Our next big goal is to participate in the ACM ICPC.

Have you already considered your life after university? What is more enticing: working for a big company, scientific research, starting your own business?

Mikhail: As of now, I’m not a 100% sure that I want to work as a programmer per se. Don’t get me wrong: I’d love to get a job in IT, but that doesn’t only boil down to coding. I can become a scientist, go into teaching, or conduct large-scale projects in a big company, among other things. I want to explore different opportunities and then make my choice, and I’m certain that my university studies will help me with that.

Ramazan Rakhmatullin and Mikhail Anoprenko
Ramazan Rakhmatullin and Mikhail Anoprenko

We’ve all heard that the programmer is the profession of the future (and present, without any doubt). But what is your understanding of a specialist of the future? How to be successful and keep afloat at the job market?

Mikhail: One of the most important criteria for making it in the contemporary world is learnability. You have to constantly be on the look-out for new things, keep up to date with the latest technologies and trends in your field. When you stop learning, you stop creating.

With that in mind, I wouldn’t divide people into those who write code and those who manage them. There are plenty of ways to do the latter: some managers just devise a strategic course to steer the company towards a certain goal, others mentor their team and are directly involved in the working process. I myself am interested in product development, but I believe that if you grow from that and become a team lead, it doesn’t mean that you can’t participate in devising new solutions.