how it all works

Yandex's corporate master's program has been running at ITMO for the second year. The ultimate goal of the program is to provide practical experience necessary for working in commercial development even at the training stage. Master's students in the program do not solve abstract tasks from a textbook, but implement projects that are then put into production in Yandex projects, including Open Source. In this article, we explain how everything is arranged and what students work on.

Why did the Master's degree program appear?

Russian universities have long been trying to collaborate with large companies: they hold joint hackathons for schoolchildren and students, open basic departments and joint educational programs. Ideally, universities receive industry practitioners and real tasks for students from their partners, and companies receive personnel from universities who do not need to be retrained after graduation.

ITMO University is following this path. The university cooperates with many IT companies in Russia. And the partnership with Yandex is one of the longest and most diverse. It includes joint educational programs – the university implements an accelerated bachelor's degree with Yandex Practicum, a student camp in “Software Engineering” and a scholarship support program for the best students of the Faculty of Information Technology and Programming (FITIP). And ITMO graduates, in turn, while still studying get there to work at Yandex.

Although cooperation had already developed in several areas, there had been no curriculum at the master's level dedicated specifically to high-load systems until recently. So the decision to start a new joint initiative was quite organic.

Master's degree “Software for high-load systems” is implemented at the Institute of Applied Computer Science. The curriculum has become the point of intersection of two requests. On the one hand, the industry's request for strong developers, on the other hand, the students themselves want to graduate not as juniors, but as middles. To implement this, the academic discussion approach implemented at ITMO is combined with practice at a commercial company (in this case, Yandex).

Students with the program's director Alexander Kraynov, director of artificial intelligence technology development at Yandex

Students with the program's director Alexander Kraynov, director of artificial intelligence technology development at Yandex

How the training is organized

The full-time joint master's program operates entirely online. Half of the program team are Yandex employees, the other half are ITMO professors. Lectures and practical classes are given by both – this gives two views on the issue at once – from the fundamental side and from the business side.

Yandex provides a platform for organizing distance learning (calendar, links to previous lectures, FAQ, academic performance), and also financially supports the program's teachers and students by paying additional scholarships. ITMO conducts the initial selection of applications and admission to the program. Students indicate priorities for the projects they want to get into, after which Yandex conducts additional interviews.

As part of the training, students are divided into teams or work individually under the guidance of mentors from Yandex. Yandex has taken full responsibility for supervision – the company's specialists meet with the master's students weekly and discuss the results obtained since the last meeting, suggesting optimal solutions.

The training projects use tasks not only from Yandex's own internal kitchen, but also from products that the company makes publicly available. This experience helps students to fill out their portfolios and receive feedback from external users, and, as a result, develop professionally faster.

For example, this year a team of students worked on a project with the help of Yandex specialists DivKit ― is an open source cross-platform framework for backend-driven UI (BDUI), which is used not only by Yandex itself, but also by other companies. The tool allows you to draw the interface from the backend, and, accordingly, update it without reworking the entire application. A couple of years ago, Yandex had an article describing the main capabilities of DivKit at that time: you can read more about it Here.

How Graduates Added SVG Support to DivKit

There are many interesting tasks in the DivKit backlog. One of them is support for SVG vector graphics, which was implemented by ITMO Master's students as part of a semester project.

Previously, for devices with different screen resolutions, the backend sent links to ready-made images in PNG or Webp, and sometimes base64-encoded images if it was necessary to show it without accessing the network (for example, important icons). But the developers wanted to add support for vector images, which would reduce parsing time and reduce traffic.

SVG support was expected by both the company and the community. Two first-year master's students took on the task, each working with their own platform (Android and iOS, respectively).

The main problem with SVG support is that there are very few ready-made libraries and none of them cover the required functionality completely. DivKit needed synchronization between different implementations (for iOS, Android and web) so that the format would be supported equally everywhere. The developers did not plan to force clients to install any third-party libraries, which means that SVG support had to appear directly in the framework core.

Already in the process of work it became clear that it would not be possible to implement SVG support in the same way as it was done for raster formats. Mainly due to the limitations imposed by the very essence of vector graphics. Some of these limitations were, for example, the labor intensity of applying filters and changing the color of the image at runtime. These parameters are encoded in the source code of the image, and to change them, it is necessary to modify the code with subsequent re-decoding and rendering of the image, which is inefficient in terms of computing resources.

To solve the problem, students suggested in some cases decoding SVG into a raster format and working with it (and this is a feature of the SVG vector format itself).

An important part of the project was research into the performance of the developed solution. On Yandex's part, the solution had to pass the team's own performance tests and not worsen them. The review on GitHub was conducted by the DivKit team, and there were no edits from the community.

In addition, it turned out that the declared merge request breaks the backward compatibility of DivKit versions: binary compatibility of calls is broken, since the return value of one of the functions has changed. When this problem was fixed, SVG support was implemented in the rendering pipeline DivKit. Merge request.

On the left is a PNG file, on the right is an SVG. Even in this example, the PNG file is 5 times larger. The raster file can be slightly reduced by recompressing it to JPG (then it will be 3 times larger than the SVG), but the original quality will be even worse due to the peculiarities of the JPG format.

On the left is a PNG file, on the right is an SVG. Even in this example, the PNG file is 5 times larger. The raster file can be slightly reduced by recompressing it to JPG (then it will be 3 times larger than the SVG), but the original quality will be even worse due to the peculiarities of the JPG format.

What's the bottom line?

This was the first project of this kind for the Yandex mobile development team. This experience helped the Yandex team to unload its own backlog. And the students were able to work with a framework that is non-standard by BDUI standards – DivKit is significantly different from other existing solutions. The project went beyond a simple technological task and helped to participate in commercial development and offer a specific solution to a business problem: the participants had to not only interact a lot with the team to synchronize the implementation of SVG support between platforms, but also figure out the licensing of the ready-made code used, since DivKit is an open project, so not every other person's code can be added to it without consequences in terms of licenses.

The authors of the joint master's program, both from the university and the company, assess the experience as quite successful. Therefore, other joint programs have recently been opened – DevOps engineering And UX design (the programs are implemented jointly with Yandex Praktikum).

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *