Грамотный баланс теории и практики: как обучаются студенты магистерской программы Университета ИТМО и JetBrains

В прошлом году в Университете ИТМО  корпоративная магистерская программа совместно с компанией JetBrains «». Одна из главных особенностей программы: помимо классических семинарских заданий, во время обучения студенты также выполняют проекты под руководством разработчиков JetBrains и компаний-партнеров, чтобы в конце каждого семестра представить результаты своей работы. Мы расспросили студентов программы о том, как работать над проектом вместе с ведущими разработчиками крупных компаний, каковы преимущества обучения в корпоративной магистратуре, чем могут быть полезны фундаментальные знания и «общеобразовательные» дисциплины для разработчиков и как выбрать направление для дальнейшего развития.

Владислав Кораблинов

Я окончил бакалавриат в Ижевске и, когда настал момент выбора магистратуры, чувствовал себя в довольно странной ситуации. С одной стороны, благодаря олимпиадному бэкграунду и самостоятельному изучению некоторых учебников и курсов я имел неплохие теоретические знания в области математики и компьютерных наук. С другой стороны, у меня напрочь отсутствовали какие-либо практические навыки. Поэтому мне хотелось найти программу, которая сочетает в себе сильную практическую составляющую с общей теоретической подготовкой в большом спектре областей. Большинство современных магистратур обладают хотя бы одним из двух существенных для меня недостатков: они либо просто являются довольно формальными, либо дают узкоспециализированные знания, в то время как мне хотелось развиваться «вширь». Поэтому, честно говоря, у меня не было других вариантов, кроме магистратуры JetBrains.

Как строится обучение на программе

Обучение на программе абсолютно разностороннее. Многие дисциплины можно отнести именно к области Computer Science. Они дают понимание многих теоретических аспектов информационных технологий и просто хорошее образование, благодаря которому ты всегда можешь поддержать беседу в приличном обществе. Но также есть много предметов с практическим уклоном: без долгих часов написания кода вы точно не останетесь.

Среди преимуществ программы, помимо хороших курсов, о которых можно говорить долго, во-первых, тесное взаимодействие с очень крутыми преподавателями. Во-вторых, общение и обмен опытом с одногруппниками: у всех нас довольно разный бэкграунд, поэтому мы учимся в том числе друг у друга. В-третьих, освоение многих дисциплин дает некоторую уверенность в себе, в том, что ты умеешь учиться и применять знания.

Проектная работа

Мой проект в компании JetBrains был направлен на упрощение жизни программиста при работе с системами контроля версий. Если говорить подробнее, мы хотели научиться автоматически генерировать текст, описывающий изменения, которые были сделаны с момента последней сохраненной версии репозитория (обычно это называют сообщениям к коммитам). Нам удалось выявить основные трудности и ограничения, возникающие при решении этой задачи. В итоге была разработана модель, хорошо предсказывающая нужный текст для конкретных случаев небольших изменений. В перспективе эта модель должна быть выпущена в виде плагина для IDE.

Перспективы

На данный момент я не ограничиваю себя какой-то конкретной областью, потому что считаю, что недостаточно хорошо представляю, какие варианты развития карьеры возможны. Поэтому я стараюсь узнать как можно больше о том, какие существуют области задач, какими знаниями и навыками нужно обладать для их решения. И исходя из этого решить, что меня привлекает больше всего. Сейчас наиболее привлекательными мне кажутся область анализа данных, потому что мне очень понравилось работать над проектом в отделе аналитики JetBrains, и область обработки естественного языка.

Алексей Зубаков

На момент поступления я выбирал между московской вышкой и этой программой, потому что, на мой взгляд, других по-настоящему сильных магистерских программ в Санкт-Петербурге и Москве в области программирования или анализа данных пока нет. Но в последний момент я решил, что меня больше привлекает именно программирование и выбрал эту программу.

Проектная работа

За время обучения я сделал уже несколько проектов. Первый проект — для . Для алгоритмов, используемых в лаборатории, решили воспользоваться датчиками, аналогичными gps, но работающими внутри помещения (т.н. indoor «gps», сами ). Моей задачей было написать драйвер, позволяющий получать данные непосредственно с датчиков и передавать их роботу. Все это функционировало в рамках .

Второй проект, который я делал, — декомпилятор для языка Kotlin. Летом я стажировался в компании JetBrains (к слову, стажировка была обязательной для всех) и дописывал утилиту для генерации документации для языка Kotlin.

И наконец мой дипломный проект, которым я занимаюсь последние полгода в команде Kotlin, посвящен созданию утилиты, которая из уже существующих библиотек Kotlin/native позволяет автоматически создать библиотеку с общим API, повторяющимся на различных платформах (ios, macos, linux и т.д.). Это должно упростить жизнь многим пользователям языка, которые будут писать код в , потому что можно будет использовать существующие библиотеки в платформенно-независимом коде и не повторять одну и ту же логику, связанную с обращением к API, для каждой из платформ.

Как строится обучение на программе

В рамках программы нам читали курсы алгоритмов, комбинаторики и теории графов, параллельного программирования, теории типов, которые принято считать фундаментальными. Но все из них были подкреплены большим количеством практики и по каждому из курсов нужно было либо писать большое количество кода, либо решать много упражнений. Поэтому могу сказать, что нам старались дать различные знания, применимые в будущей работе в том или ином виде, но таким образом, чтобы они не повисли в воздухе, а были подкреплены практикой. Наиболее полезной для себя я считаю возможность за короткое время попробовать разные технологии, языки программирования и себя в разных областях под руководством опытных преподавателей.

В будущем я планирую продолжить заниматься разработкой компиляторов и теорией языков программирования в целом, потому что мне всегда это нравилось. Сейчас я уже работаю в компании JetBrains в команде языка Kotlin и после окончания магистратуры планирую остаться там.

Ирина Артемьева

Мне близки идеи функционального программирования, именно поэтому я искала программу, в которой можно было бы продолжить их изучение, а также изучить области, в которых эти идеи были бы полезны. Эта магистерская программа имеет специализацию «Теория языков программирования», что стало основной причиной желания поступить. Еще одна — множество «общеобразовательных» для программиста дисциплин.

Поделиться: