• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

‘It Was a “Survival Course” in Software Engineering’

It is said that a young professional must choose between an academic career or a career in business. Faculty of Computer Science alumnus and Ilya Segalovich scholarship recipient, Mikhail Fomichev, succeeds in both. Mikhail told the HSE News Service about his work at HSE University and Yandex.

How to teach a course that you recently took yourself

In IT, any scientific task comes from a problem posed by business. Information technologies are developing rapidly, and I have experience withsoftware development at a company, which is a big plus in teaching an applied subject. It is interesting for me to show students exactly how certain kinds of technology are used in practice and what is currently in demand. This motivates the students to study the subject further. I can’t say that combining these things is easy; one has to sacrifice both free time and sleep.

There is no recipe for how to do everything. There is only time management and a desire to do a lot

I’ve been conducting seminars for a course called ‘Software Design’ for three years now, and I started as a teaching assistant. When a student now tells me that we can make this course many times better, I am always happy to see them as a teaching assistant next year, although I know that the experience will disappoint them a little. They will try to bring in something new—and this is good and even necessary. But at some point, they come to understand that within the framework of the course, everything is, in fact, logical. Yes, it can be improved, but you cannot completely change it. I went through it myself.

Each year, this course is adapted to take into account previous experience: we look at the mistakes that were made in designing the syllabus, in conveying the material, and which topics caused difficulties for the students. If you have to explain the same thing several times, that’s an indication to me that I’m doing something wrong. It’s not that the student didn’t understand; it’s that I didn’t explain it right.

I consider myself a fair teacher. Although when it comes to administrating final exams or tests, it is very difficult to lower someone’s grade when I see only minimal errors. Especially if it is obvious that the student is capable of more.

Not for school, but for life

I got into the department of software engineering in the Faculty of Business Informatics. I was applying as a prize winner of Olympiads held by the Bauman Moscow State Technical University and the Moscow Institute of Physics and Technology (MIPT). In addition to HSE University, I got into Bauman—it was tough choosing between the two. In the end, I chose HSE. There’s no drawing and phys. ed. here, and there’s an emphasis on English. Another pretty important factor was that a lot of my classmates from my high school also got into HSE University.

When I finished my second year there, there was a reorganization, and the software engineering programme became affiliated with the Faculty of Computer Science. But most of the teachers didn’t change, and the faculty is determined to a greater degree by its instructors than its name.

My first scientific article was co-authored with Mikhail Ulyanov. We wrote it based on the results of a course paper I wrote in my second year on the problem of the traveling salesman. I knew a lot of people who already had scientific journal publications in their second or third year — this is quite common for the Faculty of Computer Science.

After my second year, I interned at a company, FORS-Development Center, and even managed to work there for a bit. Then, for almost two years, I worked at KIT Consulting. Among other things, our team, which was commissioned by the Innovation Center of the Russian Olympic Committee, was engaged in the development of a prototype of ‘SportJet By Sukhoi’. We created an aircraft prototype for athletes that would take various medical measurements during a flight from one country to another. On the team, I was a major software developer and took part in a demonstration of an airplane in Rio de Janeiro at the 2016 Olympics. This was an unforgettable experience. Some parts of it were stressful: for example, we had to present our development to the Prince of Monaco, and it was necessary to set up the system in a short time.

How to understand that a team is not a team, and a product is not a product

Then I worked at Alfa-Bank for two years, part of which I served as a team lead. In the banking sector, there are a number of complex structural and architectural issues. Plus, there is more teamwork.

It was then that I was fortunate to work in the scrum teams, because at Alfa Bank, all projects are developed using scrum and agile management methods. And we achieved our main goal, namely to increase advantages for the customer.

IT is not just about certain technical aspects. We should strive to make the user happy. This is the main thing

It's no secret that employees in the IT sphere are expensive. One way to mitigate costs is to provide direct services through product development. If we want a client to use our product, the client first needs to like the product, and then we can convert other factors. We live in a capitalist society, so we have to consider these things.

Now I work in Yandex, where I am developing a product for Yandex.Afisha. Yandex.Afisha is a ticket sales aggregator. Getting tickets from partners and selling them to users is not an easy task. It requires a large number of systems. You have to understand where to send what and what to do if one of the systems declines. These are not simple business scenarios, and they are not easy to work out. Nonetheless, our service is one of the leaders of the industry.

How to become a cool developer

If I think about all the subjects I studied in college, I can say that each one contributed to the set of skills I use every day. But, ultimately, it all comes down to the ability to learn. It’s not always easy to understand all kinds of technology; it’s always changing.

The most useful skill I got from the Faculty of Computer Science is the ability to sit down and learn what I need to know

HSE University taught me how to clarify what I need to learn in order to solve a problem and how understand my strengths and weaknesses and the tools I can use. It was a ‘survival course’ in programme engineering, spanning from my first to my fourth year of study.

You don’t have to be afraid. You need to understand your goals, and, based on that, choose the university that’s right for you. The main thing is having self-confidence and being motivated. A programme engineer is a person who is able to complete all stages of product development, including its utilization. If an applicant understands why this kind of work is interesting to him or her, then they need to join our programme.

Confucius said, if you choose a job you like, you will not have to work a single day. I love the work that I do at Yandex, and I love working at HSE. In this sense, I can say that I am a happy person.