Some people say that a university degree is not required to work as a programmer. Why did you decide to get one?
While at school, I took part in many contests, including some national competitions. As a result, by the time I graduated, I was already quite skilled at writing algorithms and making them time- and memory-efficient.
But even then I knew that programming contests and real industrial challenges are quite different. In my home city of Perm, there were no competitive programming coaches or proper study clubs, so I had to figure everything out on my own. That’s why it took me a long time to realize that the way I wrote code – using Pascal – was not really efficient.
With all that in mind, I decided to go to a university to get proper training, since learning programming all by myself was pretty difficult. I considered applying to Moscow State University, Saint Petersburg State University, or ITMO. However, only ITMO had a modern intuitive website – the entire application process was so easy that it took me just five minutes.
What are you studying at ITMO?
I study at the Information Technologies and Programming Faculty. I will graduate this year. In the beginning, I wanted to learn concurrent programming, but I ended up landing a job as a front-end developer, so my work and studies are not really one and the same. But the overall architecture is still similar.
The things I learned at university, such as the fundamentals of writing code or concurrent programming, came in handy at Yandex. Meanwhile, my work served as a basis for my thesis.
I think it is also extremely important that ITMO makes an effort to help students find a job by either helping them look for internship opportunities or organizing special courses in collaboration with tech companies. In fact, I first came to Yandex via one such course.
How did a second-year student manage to get a job at Yandex?
While studying, we could choose from several courses created by various IT companies, including one on front-end development by Yandex. Over the course of a semester, we were taught the basics of JavaScript and HTML and CSS coding standards.
I chose that particular course because I was looking for a job at the time and I heard that Yandex was recruiting new interns. It seemed like a safe bet, and, as it turns out, it was.
When the course was over, I received an email from Yandex with an internship offer. But first, I had to pass several rounds of interviews.
What were the interviews like?
The first round was a test that all prospective employees have to take. However, completing the course at ITMO was considered an automatic pass, so I skipped it.
I still had to go through several interviews. Various Yandex employees asked me questions that mostly were about basic algorithms. For instance, I had to code a short program and explain in detail how and why I wrote it that way. Examples of such tasks are available online via Yandex’s website (available in Russian only).
I personally found the tasks rather simple. I think that any ITMO student that completed the courses on algorithms and data structures would have easily solved them.
The internship lasted from May until the end of August. It was supposed to end in September, but I got a job offer before that. I’ve spent the next year and a half working at Yandex.
What do you do at the company?
My team is responsible for Yandex Cloud. This service provides users with access to virtual machines that can be used for computing or as server infrastructure, while Yandex takes care of all the maintenance. I do front-end development, which means that I create the service’s user interface. But my job doesn’t end at simply using HTML and CSS to figure out how the website is going to look. My team also has to anticipate all the various ways that users will interact with the product and program everything to work in accordance with that logic. Since that logic can be tricky at times, my tasks often go beyond simple front-end development and I resort to my knowledge of algorithms and the fundamentals of coding.
For instance, we write not in JavaScript, but in TypeScript. It is a sort of add-on to JavaScript that allows us to work with types. Types are useful because they prevent developers from making stupid mistakes, such as typos or code discrepancies. You can use these types to write almost anything.
Our team wasn’t all that familiar with how to write complex types, so I had to use the knowledge that I acquired at university to make sense of it.
Why do you think you managed to get the offer before even graduating?
I think I was just good at the job. I picked up new skills and got the hang of things quickly. Just a couple of months into my internship, I was told that I could handle tasks that should’ve been out of my league.
In terms of practical advice, here is what I can share:
-
Go to as many interviews as you can
Otherwise companies won’t even know that you exist. The feedback you get will show what you are already good at and what you need to improve. Additionally, the more interviews you go to, the less nervous they make you feel.
-
Be good at your primary programming language
You need to know your primary language inside and out. In interviews, you will be asked about both its basics and its intricacies. If you don’t know them, you will fail.
By the way, one language is usually more than enough. For front-end development, it's usually JavaScript, for mobile apps – Kotlin, for software – Python or C++, and so on.
-
Have a good grasp of basic algorithms
If you are an ITMO student, then you already should know all of the necessary algorithms, so you won’t find the tests too difficult.
-
Be ready to solve tasks
During interviews, you will be asked to solve a task while explaining in detail why and how you did it. You can prepare by using Yandex’s own catalog of similar tasks.
-
Learn English and all the relevant terminology
English is a must in IT. Luckily, you can improve it immensely at ITMO. Before university, I was a complete beginner, but now I can easily read technical documents. Also, you must be familiar with proper terminology in both languages.