Why did you decide to apply to ITMO? And what interested you in that specific education track?
I applied on the basis of the results of a national academic competition in computer science and maths: the onsite round of this competition was held at ITMO, and a participant’s diploma gave additional bonuses when applying. I chose the then Department of Computer Engineering at the School of Computer Technologies and Control because it offered the opportunity to work with both software and hardware. I liked the fact that there were several development options, and was attracted by the opportunity to work with hardware.
All the way through, I studied at the same place: my Bachelor’s major was Computer Science and Computer Engineering, my Master’s was focused on Design of Embedded Computing Systems.
How would you characterize your Master’s program: was it fully practice-oriented or was there enough theory, too?
Each semester featured subjects aimed at the development of a small project, so it could be said that the education was more focused on acquiring practical skills. But, of course, there were subjects of a theoretical nature too. For example, the subject I enjoyed the most was the one in which we studied high-level tools for embedded systems design. The head of our track and our lecturers actively follow the latest advances in the field and always possess topical information that they share with students.
Proactive students were actively engaged in various research and development projects. For instance, we examined to what degree open source hypervisors for embedded systems met real-time requirements. A hypervisor is an operating system for launching many other operating systems simultaneously on one computer.
We also had a group of proactive students who, guided by lecturers, tried to develop a quadcopter from scratch: some dealt with its construction, some programmed microcontrollers for engine control, others focused on computer vision. But as far as I remember, the project was never completed because higher-priority tasks came up. Personally, I never had enough time for side projects because I also worked while I was studying.
Please tell us about your career. Has it always been directly connected to your specialization?
My career journey could hardly be called direct, since I’ve managed to work in completely different fields. First, I got employed at a company dealing with information security: I participated in the development of a software complex for trusted boot systems. This is a kind of board which, as the computer boots, checks whether it has been compromised by unauthorized access and whether it is suitable for secure work.
During my Master’s studies, I worked at a company founded by the department’s lecturers: we carried out commercial orders on the development of embedded systems. This featured the full range of works: from the development of systems based on field programmable logic devices (FPLD) and microcontrollers to the development of PC software. FPLDs are microcircuits which could be configured to perform specific functions, however, they can be reconfigured many times to perform other tasks. Their programming differs from programming of general-purpose processors, it’s more similar to the process of developing an integrated digital circuit.
Before Yandex, I also managed to work in several other fields, for example, I spent a year developing games at the St. Petersburg branch of Wargaming.net. There, I developed a game client in C++. I left because I realized that I liked designing devices more than games.
I got into Yandex about a year ago, just via an ad. Prior to that, I worked at a company which dealt with the development of an advanced driver-assistance system (ADAS). But it was different from what I initially thought, though I got to like the field of self-driving vehicles and car control systems. That was why I started to look for another job in this field and ultimately found this job at Yandex.
How difficult was the job interview?
For me, the job interview at Yandex was the hardest one of all I’d ever participated in. The first one was aimed at testing the breadth of my technical knowledge: there were questions both on programming and hardware. Its results defined the topics for face-to-face interviews where you had to write code on a piece of paper or on a board. Actually, there are lots of articles online dedicated to this process – this is publicly available information. And Yandex is hardly the only company where you’re asked to write code at an interview.
What are you doing now?
I’m developing system software and drivers for a self-driving car hardware, more specifically lidar. A lidar is a sensor which gauges the distance to objects by measuring the time between the “shot” of the laser and the time of arrival of the signal reflected from the object. Lidars provide a self-driving car with a cloud of points so that it would understand which objects are in its vicinity. You can read more about this here (in Russian). I write code which controls lidar components: for example, a program for managing the scanning module, configuring the laser’s parameters and monitoring its state. I also participate in the development of a hardware and software math module which analyzes received signals and calculates the distance to an object.
Did this work live up to your expectations?
For me, this is the best place I’ve ever worked at. I probably could call the project I’m currently working on my dream project. I have the opportunity to apply all my engineering skills I acquired at university and my previous jobs, and contribute to the development of a self-driving car – considering that for now, no one has a fully completed and functioning solution. To be a participant of this search and this development is extremely interesting and engrossing.
In your opinion, could you be in the same place without the relevant education?
My work has to do with the specifics of hardware design and development – I think that without a university education, this field is quite difficult to study. How general-purpose processors are built, how to develop specialized processors and microcircuits – all this is hard to learn on your own. This field has a much higher entry barrier than the field of programming. That’s why it’s rather tough without a university degree.
With any luck, after your Bachelor’s studies you probably can find an employer who is willing to invest in your education in the workplace, but a disadvantage of such an approach is that usually this is a narrowly specialized activity, while university provides you with a breadth of knowledge.
University has experienced lecturers that will steer you on the right course, and expensive equipment which you can practice working on. It also offers the opportunity to use commercial development tools – they’re hard to find and expensive to use on your own. There are some free tools for basic tasks, of course, but sometimes this isn’t the case. Apart from design tools, at our department we had lots of different boards which we could study and train on. These were quite powerful and serious calculators.
What would be your advice to current students?
I find it very interesting to do what I’m doing. I’m willing to dedicate a lot of time to my work – and can achieve better results than if I were forcing myself to do my work. That’s why I believe that you have to look for something that inspires you and do only that.
Looking back, I think that during my studies I didn’t make use of all the opportunities the university offered, for example, I didn’t apply for internships. Because of that, I’d recommend students to be more proactive, try out as many different fields as you can and search for your own path in them.