Всем привет! На связи Антон Клочков, студент первого курса корпоративной магистратуры JetBrains «Разработка программного обеспечения» на базе Университета ИТМО. Я хочу рассказать, как выбирал программу, и главное — оправдались ли мои ожидания.

Northern Eurasia Regional Contests — 2017. Антон в центре снимка [прим. ред.]
Northern Eurasia Regional Contests — 2017. Антон в центре снимка [прим. ред.]

Пара слов о себе

Я из небольшого города в Хабаровском крае – Советской Гавани. В школьные годы участвовал в разных олимпиадах, но занимал только призовые места, и дальше региона мне пройти не удавалось. Пишу код с восьмого класса, разработкой занимаюсь с первого курса вуза.

Школу я закончил весьма успешно: золотая медаль и 276 баллов по ЕГЭ дали возможность поступить в Университет ИТМО, чем я и воспользовался. Выбрал бакалаврскую программу «Программирование и интернет-технологии», где познакомился с множеством замечательных людей и расширил свой кругозор в области разработки программного обеспечения.

В конце второго курса я присоединился к 3D4Medical в роли R&D Engineer — занимался оптимизациями графического движка, разрабатывал внутренние инструменты и реализовывал фичи для приложения компании — Complete Anatomy. К началу четвертого курса я сменил акцент с разработки в сторону машинного обучения и перешел в другую компанию — BrainGarden, где развивал проекты, связанные со SLAM (Simultaneous localization and mapping) и computer vision. Меня устраивал уровень зарплаты и был очевиден карьерный путь. Однако пробелы в области алгоритмов и в некоторых разделах математики не давали покоя. Я понимал, что магистратура — возможность устранить эти пробелы, и решил выбрать для себя подходящую программу.

Выбор и поступление

На корпоративную программу JetBrains я подал документы после тщательного обдумывания и сравнения с аналогами. Критерии были следующие:

  1. Есть предметы, имеющие отношение и к разработке, и к машинному обучению. У меня был опыт работы с задачами по deep learning, и хотелось развиваться в этом направлении.

  2. Программа базируется в Санкт-Петербурге — он мне очень нравится своим спокойствием и доступностью цивилизации.

  3. Большинство преподавателей являются очень хорошими специалистами в отрасли, либо работают в ней прямо сейчас.

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

  5. Дисциплины последовательны. Знания должны дополняться от семестра к семестру — сперва нужно пройти фундаментальные предметы, а потом те, что базируются и отталкиваются от них.

В итоге в поле зрения оказалась моя нынешняя программа, а также «Машинное обучение и анализ данных» из петербургского кампуса НИУ ВШЭ. Знакомые студенты обеих программ заверили, что оба варианта — очень сложные и интересные. Но Университет ИТМО был мне ближе по духу, поэтому я сделал выбор в его пользу.

В отличие от большинства ребят из моего потока, я поступил без экзаменов. Еще во время учебы в бакалавриате я занимался научной деятельностью, и к концу четвертого курса у меня были статьи, которые я приложил к заявке для конкурса портфолио. Однако этот способ мог и не принести результата, поэтому параллельно с подачей документов я все-таки готовился к вступительным. По большей части это были курсы на платформе Stepik, который рекомендуют абитуриентам организаторы программы в Telegram-чате. С этого года их учитывают в качестве первой части вступительного испытания (см. перезачет онлайн-курсов, а со всеми траекториями поступления можно ознакомиться на сайте магистратуры). К счастью, я прошел по конкурсу портфолио и два месяца ждал начала обучения, один из которых потратил на военные сборы.

Немного про учебу

У каждого потока есть кураторы. Они решают проблемы с расписанием, делают обучение комфортным и независимым от бюрократии. С учетом достаточно интенсивного обучения — еще и помогают знакомиться с одногруппниками и устраивают разные внеучебные активности. В целом к ним можно обратиться и по жизненному вопросу, они поддержат и подскажут.

Наша учеба началась с весьма ламповой встречи, на которой мы ели пиццу и познакомились друг с другом. К сожалению, из-за коронавируса таких встреч за весь семестр было две.  Даже сейчас, когда многие университеты вернулись к очному обучению, мы продолжаем заниматься дистанционно. Дело в том, что большинство преподавателей программы — сотрудники JetBrains, а компания заботится об их здоровье и старается минимизировать личные контакты.

Тем не менее, даже на дистанте преподаватели дают материал на высшем уровне. Например, мне кажется, что Александр Владимирович Смаль (ведет курс «Алгоритмы и структуры данных») изобрёл великолепную технику преподавания. Когда требуется большое количество выкладок на доске, он использует планшет и стримит с него экран, на котором пишет. Выглядит это так:

Еще я столкнулся с совершенно новой для себя областью — функциональным программированием. На этом курсе мы сначала изучали лямбда-исчисление и программирование на Haskell. Было интересно, сложно, но мы справились благодаря отличным лекциям от Дениса Николаевича Москвина и подробным практическим занятиям.

Опытный комментатор остановит меня здесь и скажет: «Что-то у вас там слишком всё сладко». И будет прав. Как и везде, проблемы есть: что-то недопонял, что-то не успел, что-то не понравилось. Но всё это решаемо. Если вам не нравится, как проходит курс, можно обсудить это с кураторами и повлиять на изменения в нем. Что-то недопонял — пишешь преподавателю, и с тобой обсудят волнующую тебя тему. Так обучение становится благоприятным для развития.

Научно-исследовательская работа

Кроме лекций и практик каждый семестр студенты выполняют научно-исследовательскую работу (НИР). Стоит сказать, что это — один из самых интересных аспектов нашей магистратуры. Студенты получают темы от компаний: JetBrains, Яндекс, ВКонтакте и других, выбирают себе приглянувшиеся и под контролем сотрудников компании работают над ними. В частности, в первом семестре я взял тему «Generative adversarial audio denoiser» в компании MynaLabs.

В рамках этого НИРа мне нужно было погрузиться в то, как устроен аудиосигнал, какие методы его обработки существуют, а также изучить природу шумов в аудиосигнале и обучить глубокую нейронную сеть, которая очищала аудио от шумов. Мой научный руководитель предложил обучить HiFi-GAN — использовать один из последних подходов для подавления шумов в аудио. Если вы не знаете, что такое GAN, то общую информацию можно найти здесь.

Для обучения мне выделили отдельную видеокарту на корпоративных серверах и обеспечили необходимыми данными. В течение всего семестра я созванивался с научным руководителем: мы обсуждали проблемы, пути их решения, я описывал текущие результаты. В общем, мой НИР ничем не отличался от реальной работы в компании. В результате мне частично удалось обучить HiFi-GAN. Кажется, что за более длительное время я смог бы добиться и лучших результатов, но в целом я доволен проделанной работой.

Что в итоге

Программа, на которой я учусь, оказалась действительно сложной. Под этим словом каждому стоит понимать свое. Людям не из ИТ-сферы скорее всего будет сложно и с точки зрения материала, и с точки зрения нагрузки. Если у вас есть опыт в разработке и знание базового курса алгоритмов — не переживайте, вам тоже будет нелегко. Объем заданий очень большой. Стоит быть готовым к тому, что первый семестр пройдет в режиме постоянной кропотливой работы. С крепким математическим бэкграундом, алгоритмическими знаниями и многолетним опытом тоже можно поступать, но проще от этого вам, скорее всего, не будет: порой задачки, с которыми нужно разбираться, имеют весьма нетривиальное решение.

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

Оцените свою мотивацию. Эта программа реально сложная. Поэтому подумайте дважды, а то и трижды, зачем она вам. Я не пытаюсь отговорить, просто на одном желании долго не протянуть.

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

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

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


Что еще есть у нас в блоге на Хабре: