― Не у всех программистов есть высшее образование. Как ты решил, что оно тебе все-таки нужно?
― В школе я был олимпиадным программистом ― в том числе доходил до заключительного этапа Всероссийской олимпиады школьников по информатике. Так что к концу 11 класса уже знал большое количество алгоритмов, умел их писать быстро и правильно. И решать задачи наиболее эффективным образом с точки зрения времени и памяти.
Но уже тогда я прекрасно представлял, что олимпиадное программирование и промышленное ― это абсолютно разные вещи. К тому же я понял, что на самом деле ничего не знаю. У нас в Твери не было олимпиадного кружка и тренеров по олимпиадному программированию. Все задачи я решал на Pascal и слишком поздно понял, решать некоторые проблемы на этом языке очень неудобно и долго.
Так я принял решение пойти в университет, где меня всему научат ― и научат правильно, а не пытаться разбираться во всём самому, что довольно сложно. Выбирал между МГУ, СПБГУ, ИТМО. Только у ИТМО был современный сайт, которым удобно пользоваться ― вплоть до того, что подача документов заняла пять минут.
― Чем занимаешься в ИТМО?
― В ИТМО я учусь на факультете информационных технологий и программирования ― в этом году уже выпускаюсь. Изначально я хотел заниматься параллельным программированием. Но в итоге работаю фротендером, так что работа и учеба у меня пересекаются, скорее, по архитектурной части.
То, что я изучал в университете, ― например, общие принципы написания кода, типизация, алгоритмы, параллельное программирование ― помогло мне и в Яндексе. А те задачи, которые я решаю на работе, легли в основу моего дипломного проекта.
Также очень важно, что в ИТМО активно занимаются трудоустройством студентов: подыскивают места для стажировок, а ещё организуют специальные курсы от IT-компаний ― именно так я стал работать в Яндексе.
― Как ты попал в компанию еще на втором курсе?
― В университете нам предложили на выбор дополнительные дисциплины от IT-компаний ― среди них был в том числе курс по фронтенду от Яндекса. Он длился один семестр, нас обучали основам языка JavaScript и html/css стандартов.
Я выбрал его, потому что в тот момент хотел найти работу, а этот курс показался самым удачным и надежным вариантом, потому что Яндекс активно набирает стажеров. И, как оказалось, я не прогадал.
Когда курс закончился, мне написали из Яндекса и предложили пройти стажировку. Но сначала надо было пройти несколько этапов собеседований.
― Что включали собеседования и что помогло тебе их пройти?
― Так как я прошел курс от Яндекса в ИТМО, то смог пропустить первый этап ― автоматическое тестирование, которое проходят все соискатели.
Но у меня всё равно было несколько собеседований с разными сотрудниками компании. На встречах меня в основном спрашивали про базовые алгоритмы. Например, нужно было написать небольшую программку и объяснить, что, как и зачем ты делаешь. Посмотреть примеры актуальных заданий можно в каталоге Яндекса.
Лично мне задания показались простыми. Думаю, что те студенты ИТМО, которые закрыли курс по алгоритмам и структурам данных, спокойно смогли бы их решить.
Стажировка длилась с мая до конца августа. На самом деле она должна была быть до сентября, но меня прервали и сказали, что берут на работу. Если не считать этих четырех месяцев, в Яндексе я работаю уже полтора года.
― Чем ты занимаешься в компании?
― Наша команда занимается b2b-продуктом ― Яндекс Облако. Это сервис, который предоставляет клиентам виртуальные машины для вычислений или развертывания серверов, при этом все обслуживание проводит сам Яндекс. Я занимаюсь фронтендом ― и это не только про html, css и визуальное отображение сайта. В нашей команде мы программируем всю логику взаимодействия с продуктом со стороны пользователя ― и зачастую она бывает довольно хитрой. Поэтому есть определенный набор задач, где мне пригождается знание алгоритмов и общих принципов написания кода.
Например, мы пишем не на самом JavaScript, а на TypeScript. Это такая обертка для языка с типизацией. Типы ― это крайне удобная вещь, которая не даёт разработчику сделать какую-то глупую ошибку. Например, они могут ловить опечатки в тексте или несоответствие кода. И на этих типах можно писать практически всё что угодно.
В команде нашего продукта практически никто не умел правильно писать сложные типы, так что мне пришлось использовать свои знания из теории, которую нам давали в течение обучения в университете.
― Как ты думаешь, что помогло тебе получить оффер еще до защиты диплома?
― Думаю, у меня просто хорошо получалось работать. Я быстро учился, быстро вникал в задачи. Уже через пару месяцев после начала стажировки, мне сказали, что я выполняю задачи на более высоком уровне.
Если говорить о практике, я бы дал такие советы:
- Ходить на собеседования
Нужно давать компаниям знать, что ты существуешь. Это поможет понять, что ты знаешь и можешь, а что тебе надо подтянуть. А еще после ряда собеседований нервничаешь гораздо меньше, чем в первый раз.
- Хорошо знать свой основной язык программирования
Язык программирования, на котором ты пишешь, надо знать досконально. Тебя обязательно спросят и про его основы, и про его тонкости. Если ты не знаешь самые базовые вещи о языке, тебя отсеят.
Причем обычно достаточно одного языка. Во фронтенде ― это JavaScript, в мобильной разработке ― Kotlin, в программном обеспечении – Python, C++ и так далее.
- Хорошо знать базовые алгоритмы
Если ты учишься в ИТМО, ты и так знаешь все самые нужные алгоритмы с начала первого курса. Поэтому тестовые задания не должны быть сложными.
- Быть готовым к тестовым задачам
На собеседовании тебе предложат решить ту или иную задачу в режиме реального времени и объяснить ход своих мыслей. Подготовиться к этому поможет каталог задач, который составляют в самом Яндексе.
- Владеть английским и терминологией
У нас в ИТМО очень хорошо преподают английский. До поступления у меня был нулевой уровень ― теперь я спокойно могу читать документацию. Да, если ты не знаешь всех специальных терминов, и английский не сильно поможет. Но без него в IT никуда.