«Вы работаете над проектами, как в больших компаниях», — Денис Михайлов о Школе практического программирования
В 2021 году Денис Михайлов участвовал в Школе практического программирования вместе со своими одноклассниками, где создавал проект на Kotlin. Школа помогла получше познакомиться с Вышкой и окончательно убедила в выборе программы для поступления. Сейчас Денис учится на втором курсе «Прикладной математики и информатики». Накануне второго этапа Школы практического программирования поговорили со студентом о пятидневном хакатоне в «Кочубей-центре», учебе и стажировке в «Яндексе».
Школа практического программирования
О Школе я узнал из объявления в соцсетях Вышки. Переслал его одноклассникам из физико-математического лицея № 30 и предложил поучаствовать. Хотелось применить свои навыки на практике, и все сошлось.
Я участвовал в Школе в 11-м классе, но к этому моменту умел немногое. Второй год подряд программировал олимпиадные задачи на C++. Пробовал писать приложение для Android на Kotlin на двухнедельной школе от JetBrains, там я впервые познакомился с новым языком программирования.
В 2021 году, как и сейчас, Школа практического программирования делилась на два этапа. Первый — заочный — об алгоритмах. Его я частично пропустил: уже разбирался в этой теме из-за олимпиад. Но к финальному контесту подключился — он был не очень сложным. Мои одноклассники тоже со всем справились без проблем, так что ко второму этапу у нас сложилась команда из четырех человек.
Очный этап проходил в вышкинском «Кочубей-центре». Мы провели там пять дней. Распорядок дня у нашей команды был примерно такой: подъем, завтрак, а потом код — почти до вечера. Все как на хакатоне. В первый день нам рассказали, как мы будем работать над проектами, потом мы разошлись по разным комнатам и начали знакомиться с наставниками. С нашей командой работал Андрей Кириленко из Yandex.Cloud.
Перед Школой всех участников попросили подумать над темой проекта. Мы с ребятами хотели сделать приложение-соцсетку для Android, но времени бы не хватило, и нам порекомендовали взять что-то другое. Тогда мы переключились на агрегатор мессенджеров. Идея проекта была в том, чтобы можно было из одного приложения заходить во все аккаунты в соцсетях и мессенджерах сразу. Удобно, потому что так можно быстрее переключаться между аккаунтами. Но мы успели объединить только интерфейсы Telegram и Gmail.
Работа над проектом оказалась сложнее, чем мы предполагали. Думали: сделаем бэкенд, напишем Android-приложение — и все будет прекрасно. Но нет. Выяснилось — мы еще столько всего не знаем!
Я вот не знал, что в нашем случае стоит подумать над многопоточностью. До этого ни разу с ней не сталкивался. Наше приложение работало в одном потоке, поэтому при нажатии на иконку чата оно зависало, пока не приходил ответ от сервера со списком сообщений. Когда мы сделали несколько потоков, приложение стало плавно подгружать интерфейс чата, одновременно с тем, как сервер присылал сообщения.
Еще одна сложность — мы пытались писать на Kotlin, как на C++. Такой путь — заранее неверный. Это все-таки другой язык, и подход в разработке там отличается. Нам помог парень из другой команды, с которым мы сдружились. Он получше знал Kotlin, поэтому в свободное время подсказывал, что и как там работает.
К сожалению, по итогам школы наш проект не вошел в число лучших. Он был неплох, просто мы не сумели его должным образом представить. Слишком сильно закопались в разработке. Половину последнего дня другие команды уже делали презентацию, обдумывали свое выступление. Мы отложили это, решили добить код. В итоге засиделись до шести утра, уснули, а презентацию доделывали во время чужих выступлений.
Совет для участников
Мы делали презентацию на коленке, потому что посчитали ее не столь важной. Но это неправильный подход — мы поняли это по своему результату. Чтобы аудитория лучше поняла идею вашего продукта, нужно потратить на презентацию побольше времени.
Хотя проект не принес нам победу, мы с ребятами отлично провели время. Мы писали код и получали от этого удовольствие. Общались с наставником — узнавали у него, как можно попасть в «Яндекс». А время от времени присоединялись и к общим вечерним квестам — играли в «Угадай мелодию» и в мафию. Так что Школа — отличный способ провести майские праздники, если вам нравится кодить.
Еще один плюс Школы — вы работаете над проектами так же, как в больших компаниях. Делите обязанности, ставите дедлайны, соблюдаете сроки, делите большие задачи на маленькие. Ищете несостыковки в чужом и своем коде, исправляете. Увидеть это до трудоустройства — безусловно, полезно.
Учеба в Питерской Вышке
Я решил поступать в Вышку еще до Школы по практическому программированию. Мне не хотелось уезжать из Петербурга, и подходящих вариантов для поступления я видел немного. «Прикладная математика и информатика» устраивала меня по содержанию, плюс ребята здесь учились талантливые. Очень много олимпиадников. Я и сам поступал без экзаменов: победил в олимпиаде «Ломоносов» по информатике. В этом году, кстати, она тоже дает бонусы.
Больше всего мне нравится хорошая профессиональная подготовка на программе. Я хочу стать разработчиком, и здесь нам дают все для этого. На первом курсе мы изучали C++, но уже не как в школе, а для промышленной разработки. Делали лабораторные работы на всякие особенности языка, тренировались, а потом отдавали результат на проверку. Наш код смотрели так, как бы это делали в больших компаниях. Дотошно проходились по всей программе и говорили: «Вот это плохой код. Его нужно исправить так и так. А вот тут есть более эффективное решение, исправьте, пожалуйста». Это очень полезный опыт.
Еще попробовал работать на Python, написал на нем пару проектов, хотя сам язык мне не понравился. На полугодовом курсе по функциональному программированию у нас был Haskell. Сейчас мы с однокурсниками изучаем Java и работаем над семестровым проектом, результатом которого должен стать продуманный и законченный продукт.
Единственная сложность в моей учебе — это огромная нагрузка. Все домашки очень сложные. Но мы с однокурсниками — трудолюбивые ребята, поэтому справляемся!
Стажировка в «Яндексе» и дальнейшие планы
Моя летняя стажировка стала логичным продолжением учебы. Знания по C++ мне дали, надо было посмотреть, что с ними можно делать в большой компании. Меня взяли стажером в «Яндекс.Еду», там я писал бэкенд на C++.
Стажировка началась в середине июля, я полтора месяца работал по 40 часов в неделю. Когда началась учеба, то попросил снизить себе нагрузку, чтобы все успевать. Вместо полутора месяцев провел в «Яндексе» еще два с хвостиком. Но совмещать полноценную работу с учебой мне было не по силам, хотя в компании мне понравилось. Я выбрал учебу, но в «Яндексе» мне дали отложенный оффер. Сказали, чтобы приходил, когда освобожусь.
В планах у меня еще одна стажировка в бэкенде, хочется объединить знания Java и Kotlin. Но сначала мне нужно закончить семестровый проект, тогда его можно будет положить в портфолио и показать на собеседовании. А дальше — может, получится объединить работу с учебой. В любом случае, загадывать пока рано.