Каждое лето JetBrains проводит стажировки для студентов. На два месяца стажеры погружаются в большой мир разработки и под руководством ментора реализовывают настоящий законченный проект.
Прошлым летом одним из стажеров компании стал первокурсник НИУ ВШЭ — Санкт-Петербург Тимофей Василевский. Тимофей изучал поведение пользователей при работе в IntelliJ IDEA. В этом посте он рассказал, почему решил пойти на стажировку по анализу данных, как готовился и проходил отбор и чем занимался эти два месяца.
Почему я выбрал Data Analytics Team
Привет! Меня зовут Тимофей, сейчас я учусь на 2-м курсе бакалаврской программы «Прикладная математика и информатика» в НИУ ВШЭ – Санкт-Петербург, и хочу рассказать про свою летнюю стажировку после 1-го курса.
Я пробовал свои силы в двух компаниях: JetBrains и Яндекс. И там, и там прошел отбор, но в итоге остановился на JetBrains по нескольким причинам. Во-первых, задачи в JB показались мне более интересными. Во-вторых, стажировка тут длилась два месяца (июль и август) и не пересекалась с учебой, что было для меня немаловажно.
Я мог пойти на стажировку по software engineering, но выбрал аналитику: программирования на протяжении учебного года у меня было достаточно, а что такое аналитика и чем там занимаются, узнать было очень интересно. Плюс чтобы успешно пройти все собеседования, мне нужно было выучить математику, которую не рассказывают на первом курсе. Узнавать новое я люблю, для меня это стало дополнительной мотивацией.
Подготовка к стажировке
К отбору на стажировку я подошел ответственно. На тот момент я не знал немалое количество математики, которую спрашивают на собеседованиях (например, математическую статистику), не был знаком с SQL, поэтому мне пришлось освоить довольно много нового.
На протяжении пары месяцев я стабильно тратил несколько часов в неделю на подготовку: по матстату в основном читал учебники и решал задачки (кстати, если вы хотите быстро и не слишком глубоко освоить матстатистику, могу порекомендовать учебник Фадеевой и Лебедева — он дает хорошее понимание всех базовых вещей), по SQL читал документацию и писал запросы, еще в дороге иногда слушал подкасты про аналитику. Вообще, как мне кажется, успех на собеседованиях сильно зависит не от знаний в целом, а именно от подготовки, поэтому если вы хотите добиться результата, уделяйте ей как можно больше времени.
Этапы отбора
Как и на любую летнюю стажировку в JetBrains, сначала нужно было выполнить тестовое задание. В отличие от software development, на аналитике в основном просили рассказать, как ты видишь реализацию проекта, какими методами будешь решать представленные проблемы, почему именно так, и еще много всего.
По результатам тестового задания меня пригласили на собеседование, которое опять же имело немного нестандартный формат разговора на полчаса. Во время собеседования мне задавали несложные вопросы по теорверу и матстатистике (пара простых задач и знание терминов), машинному обучению (совсем поверхностно, какие-то базовые принципы), SQL (нужно было продиктовать несложный запрос), python (что-то про структуры данных в нем). Еще было нужно немного рассказать о себе и своей мотивации принять участие именно в этом проекте.
Чем я занимался на стажировке
Я работал над проектом «User behaviour in IDE analysis». Моя задача заключалась в том, чтобы изучать пользовательские логи в разных средах разработки (в основном IntelliJ IDEA). Глобально мы хотели понять, какие фичи сред разработки востребованы, а какие нет, что пользователи учатся использовать быстро, а что долго, в каких действиях часто ошибаются, а в каких нет и т.д.
Процесс работы
К сожалению, я не могу делиться подробностями, но опишу процесс стажировки в общих чертах. Всю мою работу можно было разделить на части:
Первая. Я выбирал процесс (самый простой пример – создание проекта) и определял метрики, по которым можно оценить успешность действия, затраченное время или количество попыток, которые пользователь совершил для достижения успеха.
Звучит просто, но это не всегда так. Разберем кейс с созданием проекта: если у пользователя получилось создать проект, но при этом он закрыл его через минуту и больше никогда не возвращался, то едва ли такое действие можно считать успешным, потому что скорее всего он не добился желаемого. Или, например, когда пользователь меняет какие-то настройки, нужно следить за тем, как быстро он вернет ту или иную настройку обратно. Потому что если это произойдет достаточно быстро, то скорее всего пользователь изменил не то, что хотел.
Вторая. Я писал запросы для получения нужных логов, парсил их, получал нужные данные. Для всего этого использовал SQL. Самым сложным в этой части было определить, какие логи за что отвечают, и, соответственно, когда появляются. Также нужно было следить за связями между логами, потому что если мы, например, хотим определить время, затраченное на создание проекта, то нам нужны различные логи для моментов начала создания проекта (открытие окошка) и моментов окончания (нажатие на кнопку create).
Третья. Стандартные для аналитики процедуры: строил разные графики (чаще всего интерактивные), отображал различные статистики, доверительные интервалы и т.д.
Четвертая. Я писал веб-приложение с этими самыми интерактивными графиками и возможностями отображения разных статистик, в том числе для того, чтобы встроить их во внутреннюю платформу Analytics Platform. Для этого и предыдущего пунктов я использовал Python.
График и формат работы
По факту у меня не было фиксированного графика, нужно было просто справляться с поставленными задачами. Дважды в неделю мы созванивались с ментором, обсуждали проделанную работу и строили планы на ближайшие несколько дней.
Еще у нас были еженедельные встречи со всеми стажерами команды (а это 11 человек). Чаще всего несколько стажеров рассказывали про свои проекты и результаты, а также делились проблемами. Остальные высказывали свои идеи, как эти проблемы решить, и нередко эти советы очень помогали. Также к нам приходили другие аналитики из нашей команды, чтобы просто пообщаться, узнать наши впечатления, и, может быть, тоже помочь с какими-то задачками.
Внерабочие активности
К сожалению, стажировка проходила в удаленном формате, поэтому с подобными активностями было туговато. Тем не менее, мы регулярно играли в настолки онлайн, а иногда просто собирались неформально поболтать группой стажеров. Была идея организовать турнир по шахматам, но так и не сложилось.
Итоги
В целом мне очень понравилась стажировка, и я нисколько не жалею, что пошел на нее. Я получил ценный опыт реальной работы и взаимодействия с командой. Было интересно посмотреть, как устроена подготовка презентаций готовых задач, обсуждение проблем внутри команды и, конечно, поучаствовать во всем этом. Если у вас есть силы и желание пойти на стажировку, обязательно воспользуйтесь такой возможностью.
Если вы хотите попасть на стажировку в JetBrains (отбор начнется весной), следите за новостями на этой странице и в нашей группе в VK JetBrains for Students.