Алина Ерохина: путь от стажера в Google до старшего программиста-разработчика ВКонтакте
13 сентября мир празднует День Програмиста, в честь этого праздника «Код Дурова» решил пообщаться с Алиной Ерохиной, старшим программистом-разработчиком социальной сети ВКонтакте. Путь Алины и все тонкости програмирования, в нашем с ней интервью.
— Алина, расскажите немного о себе, чтобы наши читатели понимали, с кем мы сегодня общаемся.
— Мне 25 лет, и я разработчик в команде поиска ВКонтакте. В программировании уже 10 лет. За это время прошла длинный путь, начиная от школьных кружков программирования и заканчивая стажировками в Google. В свободное от работы время занимаюсь музыкой, танцами и исследую разные другие сферы деятельности и жизни.
— Когда мы сегодня говорим о программистах, то все сразу представляют интересную работу в IT-компаниях, большую зарплату и приятные условия. Но раньше эта профессия была не столь притягательна. Расскажите, чем она привлекла вас и что повлияло на выбор?
— В 15 лет, когда я только ступила на путь изучения программирования, эта профессия уже набирала популярность и становилась всё более востребованной. Помню, как родители периодически подкидывали мне статьи про «профессии будущего», и программисты были на первых местах. Думаю, в том числе поэтому я практически не сомневалась, чем хочу заняться в будущем.
Если рассуждать о том, что стало поворотным в жизни, — пожалуй, это поступление в физико-математический лицей и посещение кружка по программированию. Попав в комьюнити увлечённых людей, я поняла, куда двигаться дальше. На кружках и в летней компьютерной школе научилась решать алгоритмические задачи — а это, можно сказать, путь, который открывает карьерные возможности практически в любой IT-компании. Интересный факт: у меня есть сестра-близняшка, и почти весь этот путь мы прошли с ней вместе :)
— Обучаться программированию было сложно?
— Конечно, всё было далеко не так гладко, как может показаться. Путь был сложным и тернистым, не раз хотелось опустить руки и заняться чем-то более простым, доступным и менее ответственным.
Когда погружаешься в техническую дисциплину, неизбежно сталкиваешься с абстракциями. Освоить указатели, рекурсию, функциональное программирование бывает поначалу тяжко, потому что это не часть нашего повседневного опыта. Так что одна из сложностей — осознать концепции, которые могут оказаться не интуитивными. Прежде чем у меня сформировалась необходимая интуиция, приходилось читать и изучать много-много источников, которые с разных сторон объясняли одно и то же, донимать вопросами преподавателей и одногруппников. В такие моменты можно почувствовать себя «застрявшим», безнадёжным и потерять уверенность в своих способностях. В конечном счёте понимание всегда приходило :)
Другая сложность в программировании — это баги. На их поиск может уйти несколько часов, а у новичков — дней. Зато благодаря багам начинаешь понимать, как устроена вся система, а не только твой маленький кусочек кода.
С каждым преодолённым препятствием я становилась увереннее и набирала опыт, который стал бесценным. Теперь уверена, что при должном усердии возможно всё. Можно сказать, эти годы научили меня не только языкам программирования и алгоритмам, но и умению не сдаваться, искать решения там, где кажется, что их нет.
— Традиционно обучение в школе с математическим уклоном чаще выбирают парни. Учились ли вместе с вами девушки и как проходило обучение?
— С момента моего поступления в физмат в любом коллективе всегда было больше парней, чем девушек: в классе, на кружках, в летнем компьютерном лагере, на потоке в университете. Но я не помню, чтобы это как-то особенно ощущалось. К примеру, на матбоях (математических соревнованиях между классами) от нашего класса участвовали три девочки и три мальчика. И это не для баланса :)
Дискомфорт появился, лишь когда я начала работать фултайм: на обеих работах я была единственной девушкой-разработчиком в команде. Это создавало дополнительное напряжение на фоне возросшей ответственности и первого опыта полного рабочего дня. Но со временем, закрывая проект за проектом, я поняла, что всегда со всем справлялась.
— В какой университет вы поступили после школы?
— Поступила в Санкт-Петербургский Академический университет (СПбАУ РАН им. Ж. И. Алфёрова) на кафедру математических и информационных технологий. На момент поступления это была одна из лучших технических кафедр в стране. Первые два года в университете изучала базовые математические дисциплины, такие как математический анализ, дискретная математика и линейная алгебра, различные парадигмы и языки программирования (С++, Java, Python, Haskell), получала практический опыт на стажировках. Затем выбрала направление «Машинное обучение».
На третьем году обучения наша кафедра переехала в питерский кампус Высшей школы экономики.
— Как вы считаете, влияет ли выбор школы или университета на последующую карьеру в IT?
— Выбор школы не так важен, как выбор университета. Школа помогает выбрать направление и попасть в «нужное» окружение. Но именно университет даёт глубокие и обширные знания, которые пригодятся «в полях». Например, чтобы стать экспертом в области ML, понадобятся знания в сфере линейной алгебры, статистики, теории вероятности. Эти темы самостоятельно изучить гораздо сложнее, чем в университете, поэтому профильное образование здесь может сыграть ключевую роль.
В то же время для реализации простой бизнес-логики достаточно самостоятельно выучить какой-нибудь лёгкий в освоении язык программирования — например, Python. Кроме того, я знаю примеры успеха без физмат-лицеев и специализированных школ. Один мой знакомый учился в обычной школе. В 11-м классе его настолько заинтересовало спортивное программирование, что вместо уроков он решал алгоритмические задачи на сайте acm.timus.ru. Благодаря этому он стал победителем Всероссийской олимпиады по информатике и бронзовым медалистом финала ICPC (Международной студенческой олимпиады по программированию).
Хотя этот случай скорее исключение, в нём показательна сила искреннего интереса и усидчивости. Вопрос про влияние образования часто задают люди, которые хотят заняться программированием из-за более высоких зарплат. Но важно понимать: чем ниже порог входа (проще изучить язык и технологию), тем выше конкуренция за место на рынке.
— Очень интересно узнать про ваши стажировки в Google. Расскажете о них подробнее?
— Стажировка — это лучшая возможность «потрогать руками» реальные проекты перед работой фултайм. Благо в сфере IT найти её, на мой взгляд, проще, чем где-либо, а пять лет назад, когда я подавалась на свою первую стажировку, это было ещё легче. Мне достаточно было знать английский и уметь решать алгоритмические задачки.
Стажировки дали мне уверенность в своих силах и понимание, как устроена работа в IT-корпорациях. А ещё красивую строчку в резюме. Три года подряд я проводила лето в компании Google: сначала в Цюрихе, затем в Лондоне и, наконец, в Саннивейле, штат Калифорния, США. Во время своей первой стажировки в Цюрихе я попала в команду Search Infrastructure, которая разрабатывает систему для отладки процесса поиска. Работа включала в себя сбор статистических данных и метрик для каждого URL, отслеживание различных компонентов поисковой системы, отображение всей этой информации на веб-странице для разработчиков непосредственно поисковой системы.
Следующим летом я поехала в Лондон и стажировалась в команде, которая входит в состав более крупной команды Google Play и работает над Google Play Console. Это специальный инструмент для разработчиков, позволяющий не только публиковать приложения в Google Play, но и улучшать их качество с помощью сбора статистики и различных метрик, анализа сбоев, тестирования расширенного анализа отзывов пользователей и многого другого. В США моя команда была частью большой команды Core и работала над инфраструктурой для обработки личных данных.
— После стольких стажировок вы всё-таки решили остаться в России. Расскажите, что повлияло на ваше решение и почему выбрали именно ВКонтакте?
— После третьей стажировки за границей я поняла, что уже не получаю таких сильных эмоций, как на первой. Всё кажется понятным и обыденным, к любым бонусам и плюшкам привыкаешь, нет вау-эффекта. Поэтому при выборе работы я стала ориентироваться больше на интерес к проекту, на сложность и разнообразие задач, возможность развития. К сожалению, не все эти пункты, по рассказам знакомых из Google, отвечали моим требованиям.
Во ВКонтакте я попала случайно — меня предложил зареферить друг. В компании работали многие мои друзья, и я знала, что в ней небольшой, но сильный коллектив умных и классных людей. Прошла собеседование, мне понравилась команда и то, чем они занимаются, — случился мэтч. В августе 2021 года я стала её частью.
— Расскажите немного о своей работе ВКонтакте. Какие проекты вы курируете и чем занимаетесь?
— Моя команда занимается разработкой поиска по всему сайту. Пользователи ВКонтакте могут искать много разной информации: сотни миллионов страничек групп, миллионы видео и клипов, постов и музыки. Из всего этого объёма информации пользователи хотят находить то, что им нужно прямо сейчас, — ответ должен быть точным и быстрым. К этому мы и стремимся. Поиск — это и технология, и продукт, поэтому мы не только занимаемся тем, что «под капотом», но и заботимся о том, чтобы людям было удобно пользоваться этим инструментом.
Среди наших постоянных задач — улучшение качества ранжирования, уменьшение времени ответа, улучшение пользовательского интерфейса. Моя деятельность связана со всеми этими задачами. За два года работы в компании я реализовала новые фичи и поиски — например, поиск по разделам приложения, фильтрацию дубликатов в поиске по постам, ручной механизм для поиска по псевдонимам. Также я улучшила загрузку рекомендаций новостей на экранах поиска и оптимизировала время работы — ускорила глобальный поиск «по всему». Сейчас отвечаю в основном за поиск по постам и с недавнего времени — за рекомендации до ввода поискового запроса. Полгода назад меня немного унесло в продукт, поэтому успела в том числе и над дизайном поработать.
— Часто, когда речь идёт о современных программистах, у людей возникает ассоциация с размеренной жизнью без проблем. Так ли это? Сможете развеять этот миф?
— Всё познаётся в сравнении. Мне как-то довелось учиться профессии телеведущего, и могу сказать, что размеренной её точно не назовёшь. В работе программистом, особенно если она не сопряжена с управлением людьми или общением с клиентами, действительно можно найти свой ритм и размеренность. Можно работать рано утром или поздно ночью, дома или в офисе, главное — выполнять поставленные задачи в срок. Но не стоит забывать, что эта размеренность порой обманчива — всегда может возникнуть неожиданный баг, который нужно решить здесь и сейчас. Иногда то, что планируешь сделать за один день, может растянуться на неделю из-за непредвиденной проблемы.
— Вы рассказали, что прошли весь путь в IT со своей сестрой-близняшкой. Чем она сейчас занимается? Где работает?
— Тоже работает разработчиком :) Наш путь во многом похож: она также проходила стажировки в Google и работала ВКонтакте. Но, в отличие от меня, после стажировок она всё-таки решила продолжить работу в Google и переехала в Лондон. Потом в какой-то момент ей захотелось ощутить «дух стартапа», да и жизнь в Лондоне оказалась не такой радужной из-за карантина во время пандемии. Поэтому сейчас она работает удалённо в американском стартапе.
— Какие советы вы бы дали нашим читателям, которые хотят стать программистами? На чём фокусироваться?
— Если нужен практический и универсальный совет, я бы порекомендовала изучать алгоритмы и структуры данных. Это то, что спрашивают на любом собеседовании, особенно на начинающие позиции, когда у кандидата ещё нет достаточного опыта, а проверить его как-то нужно.
Но для начала всё-таки важно понять для себя, чем именно хочется заниматься, в какую область погружаться. С развитием искусственного интеллекта и «перегревом» рынка, на мой взгляд, будут больше цениться не универсальные специалисты, а эксперты в конкретной области, будь то NLP, CV, поиск, Web3 или что-то ещё. Думаю, такие люди будут на вес золота. Поэтому важно не распыляться, а фокусироваться на конкретной области программирования, которая вдохновляет и даёт силы двигаться дальше.
Читать первым в Telegram-канале «Код Дурова»