"Как я провел лето" — 2018
5 октября на факультете компьютерных наук состоялась традиционная студенческая встреча «Как я провел лето», на которой студенты поделились своими впечатлениями о летних стажировках в компаниях. Публикуем интервью с Сергеем Булгаковым (2 курс ПМИ) и Русланом Хайдуровым (4 курс ПМИ) о стажировках в JetBrains и ЦЕРН.
Как вы нашли компанию, в которой проходили стажировку?
Сергей: У нас на факультете есть факультатив по языку программирования Kotlin, и так как мне на первом курсе очень не хватало программирования, я с радостью стал его посещать. Этот язык, если вдруг не знаете, разработан в JetBrains. В рамках факультатива мы несколько раз ходили на экскурсию в офис: на лекции и на презентацию стажировок, а также участвовали в мастер-классе (сотрудник из питерского JetBrains приезжал на ФКН). Так я узнал, что у JetBrains есть офис в Москве, и что там можно пройти стажировку. Соответственно, подал заявку и в эту компанию.
Руслан: На втором курсе я твёрдо решил, что хочу заниматься приложениями машинного обучения. Летом 2017 года я был слушателем Летней школы по машинному обучению в физике высоких энергий, которую проводила в Англии лаборатория LAMBDA. Там я не только получил хороший фундамент в машинном обучении, но также для меня стало ясно, какими могут быть приложения машинного обучения в современной физике. Это меня очень заинтересовало. В летней школе я узнал, что у ЦЕРНа есть программа стажировок (Summer student program).
Как проходил отбор?
Сергей: Как я уже говорил, перед стажировкой проходит презентация проектов, сотрудники JetBrains рассказывают, чем можно заниматься во время стажировки. При составлении заявки нужно выбрать три наиболее приоритетных для себя проекта и сделать тестовые задания по ним. Кстати, дедлайн тестовых заданий в том году удачно попал на конец майской праздничной недели, поэтому было время сделать все по-максимуму. Говоря о трудностях, можно вспомнить, что в JetBrains принято писать на английском, соответственно, тексты тестовых заданий тоже были не на русском. Это несколько увеличило время понимания того, что требуется сделать, но я справился.
Руслан: С ноября по февраль проводился отбор на эту программу. Заявка состояла из резюме, мотивационного письма, транскрипта, рекомендательных писем и большой формы на сайте. В форму просили вписать основные навыки и подтверждение их владения: например, если владеешь Tensorflow, будь добр, приведи пример своего кода с обучением каких-нибудь нейросетей. Просили всё описывать в больших деталях. Я приложил ссылки на свой ГитХаб, описал проекты, которыми я занимался, упомянул, конечно же, и летнюю школу. Заполнение формы заняло несколько месяцев.
Как завершился отбор?
Сергей: После выполнения заданий меня пригласили на собеседование по моему самому приоритетному проекту, в конце собеседования ментор неофициально сделал оффер. Я подавался и в другие места, поэтому было тяжко ждать официального письма с оффером. Через пару недель я его получил. Выбрал JetBrains, так как это была компания с самым интересным и понятным для меня проектом.
Руслан: Организаторы обещали, что пришлют результаты в середине апреля, и я, честно говоря, не верил, что меня возьмут в ЦЕРН, и поэтому весной начал отбор на стажировку в Яндекс (туда я тоже прошёл отбор, но оффер отклонил). Для стажировки в ЦЕРН у некоторых стажёров были и собеседования. Там, где была самая большая конкуренция, но меня взяли и без интервью.
Расскажите о впечатлениях от первого дня
Сергей: Стажировка началась с первого рабочего дня июля. В первый день мне было относительно привычно, потому что уже бывал на экскурсиях в офисе и знал не только обстановку, но и некоторых сотрудников. Было подписание NDA – до этого неизвестная мне процедура.
Руслан: В первый день стажировки я познакомился со своими супервайзерами. Один из них был научным сотрудником в Стэнфордском центре линейных ускорителей, а другой — постдоком в университете Женевы. Они задали мне ряд контрольных вопросов на знание глубинного обучения, а после того, как получили решительные ответы, перешли к делу. Они описали текущее состояние проекта, поставили конкретные задачи на грядущее лето. После этого показали мне моё рабочее место и выдали ключ от кабинета.
Как организован рабочий процесс?
Сергей: Как сказал ментор: “Начальник не должен мешать подчиненным работать”. График работы действительно свободный, поэтому я воспользовался возможностью не попадать в часы пик и обычно приходил в 12 и уходил в девятом часу, хотя бывало по-разному. Офис стал вторым домом, есть отличная кухня с напитками и едой, спортзал, настольные игры, душ и даже кровать в темной комнате, на которой я несколько раз ночевал. Всего полтора этажа. Короче, уютно.
Руслан: Из интересных моментов могу отметить, что проживал я на территории соседней Франции и каждый день ездил в Швейцарию на работу на велосипеде, который можно было взять в прокат у ЦЕРНа бесплатно. Путь составлял примерно 15 минут. Я приезжал на работу в 8:00 – 8:30 утра и уходил в 17:30 – 18:30. В первое время в Москве я рефлекторно просыпался рано — настолько сильно укрепился мой режим сна за два месяца.
Как вам команда?
Сергей: Я попал в команду Райдера. На всякий случай упомяну, что Райдер – это среда разработки для .NET, в частности для C#. На моем проекте был второй стажер. Мы часто общались между собой: ревьювили друг друга, делили предстоящие задачи и думали об их реализации. C ментором регулярно проводили встречи, а вот остальная команда находилась в Питере, за все время стажировки с ними разговаривали только пару раз.
Руслан: В первый же день я познакомился с другими стажёрами. За лето мы все очень сильно сдружились. Среди них больше всего было граждан Индии, а я был единственным россиянином. Всего одобрили 41 заявку из 1840.
Какая перед вами стояла задача?
Сергей: Собственно, задача проекта была такой: сделать компонент для графического интерфейса Swing, который позволял бы отображать Windows-окна в Java-окнах.
Руслан: Проект, над которым я работал, был связан с глубинным обучением для физических симуляций. Данные были очень специфичными, поэтому существующие общие подходы не работали, необходимы были новые разработки.
Какие средства разработки/коммуникаций использовались на протяжении стажировки?
Сергей: Предлагалось использовать языки Kotlin, Java и C# для реализации задачи. Мы с коллегой обошлись одним Котлином и задачу выполнили полностью. Для коммуникации использовали мессенджер Slack, для хранения и организации исходного кода – GitHub и Git, для автоматизации тестирования – TeamCity, а в качестве среды разработки – Идею. В конце стажировки, в последний день августа, была налажена видеосвязь с помощью Polycom между всеми офисами со стажерами: каждый стажер рассказал о результатах своей работы.
Руслан: Один из руководителей дал мне доступ к облачным вычислениям на кластере его университета, на нём были доступны видеокарты, на которых я обучал нейросети. Коммуникацию мы поддерживали в Skype и Mattermost. Ближе к концу лета я делал доклады на встречах научных групп эксперимента ATLAS о своих успехах.
Планируете ли продолжать работу в компании?
Сергей: За время работы в компании я поговорил с несколькими людьми на тему работы на втором курсе. Большинство утверждало, что совмещать учебу с работой будет экстремально сложно. И когда в конце стажировки ментор спросил, хочу ли я продолжить работу, я ответил, что все-таки буду только учиться. Кстати, проучившись месяц, я понял, что сделал правильный выбор. Тем не менее, контакты остались, доступ к проекту тоже, и самое главное – возможность пойти на стажировку в JetBrains в следующем году также есть.
Руслан: В будущем я планирую активно работать над той же задачей, но уже в лаборатории LAMBDA, на эксперименте LHCb, писать с ними ВКР. Минувшим летом Вышка стала полноправным членом коллаборации LHCb, что определённо облегчит работу на этом эксперименте.
Фотографии со встречи можно посмотреть по ссылке.