Профессии

«Программировать я начал с седьмого класса, но и до этого мне хотелось чего-то похожего»

Старший разработчик в Яндексе Николай Волосатов о работе программиста, pet projects и английском языке

Сегодня IT-специальности очень популярны у абитуриентов: престиж, хороший заработок, карьерные перспективы. Но чтобы ты сделал выбор будущей профессии осознанно, Адукар расспросил сотрудника Яндекса о том, каково работать в транснациональной компании.

Николай — магистр математики и информационных технологий, окончил факультет прикладной математики БГУ. Старший разработчик в белорусском офисе Яндекса. Его команда делает продукт для мобильной аналитики под iOS: компонент, который встраивается в приложение и позволяет понимать, как именно оно используется
Николай — магистр математики и информационных технологий, окончил факультет прикладной математики БГУ. Старший разработчик в белорусском офисе Яндекса. Его команда делает продукт для мобильной аналитики под iOS: компонент, который встраивается в приложение и позволяет понимать, как именно оно используется

Кем ты мечтал стать в детстве, школьные годы?

Пожалуй, всю сознательную жизнь меня тянуло к технике. Программировать я начал с седьмого класса, но и до этого мне хотелось чего-то похожего. Один раз мы с мамой пришли в магазин и я попросил «игру, где можно было бы делать игры». Такого у них, к сожалению, не оказалось.

Какие предметы в школе нравились тебе больше всего и почему?

Конечно информатика. Там я был в своей стихии, особенно в последних классах. Дальше идут математика и физика. Эти предметы давались достаточно легко. Но до сих пор стыдно, что на вступительных экзаменах в четвёртом классе, когда школа становилась гимназией, я беспощадно завалил математику. Может быть, это и раззадорило взяться за неё сильнее. Учителей математики у нас сменилось немало, но каждый из них привил что-то своё: кто-то — интерес к изучению, кто-то — придирчивость и строгость к доказательствам.

Участвовал ли ты в олимпиадах? Чему они тебя научили?

Я участвовал в олимпиадах по математике, информатике и физике. С первой получалось не так хорошо, дальше района не выходил. По информатике пару раз участвовал в городской олимпиаде. А вот физика давалась лучше всего. Дважды выходил на республику и получал там дипломы. В год поступления завоевал диплом первой степени на городе и третьей степени на республике. С ним мог бы поступить на многие факультеты без экзаменов, но не на тот, куда хотел. И я пошёл сдавать ЦТ. Благо, диплом первой степени по физике эквивалентен 100 баллам по тестированию. Вряд ли бы набрал столько на ЦТ по физике. Я, кстати, был единственным из олимпиадников по физике, кто пошёл сдавать ЦТ.

Вообще, олимпиады — крайне полезное занятие. И не столько с точки зрения полученных знаний, сколько в плане умения решать поставленные задачи за ограниченное время и мыслить нестандартно. Не из всех успешных олимпиадников получаются такие же успешные промышленные разработчики, но во многих сферах, особенно в таких, как машинное обучение или реализация высоконагруженных систем, опыт олимпиад — это значительный плюс.

Давно ты занимаешься программированием?

С 12-ти лет. Как-то не задумывался об этом, но, выходит, что половину жизни. В седьмом классе меня пригласили выступить на школьной научно-практической конференции. Я взял статью из «Игромании» о сравнении файловых систем FAT32 и NTFS. Дальше школы с такой работой я, конечно, не прошёл, но в качестве награды получил книжку по Turbo Pascal. Это стало началом длинного пути к тому, кем я есть сейчас. Большое спасибо учительнице за такой ценный приз.

Как ты выбрал свою профессию? Кто тебе в этом помог?

До седьмого класса я не особо задумывался о профессии. Но как только занялся программированием, выбор стал очевиден. Учительница по физике меня отговаривала, ссылаясь на мои успехи в олимпиадах по её предмету. Но я видел себя только в программировании.

Родители одобрили твоё решение?

Да, родители меня всегда поддерживали. Хотя когда мне только купили компьютер, мама говорила: «Коля, не нажимай все эти кнопки, ты же не знаешь, что они делают». Но я не слушался и нажимал, методом проб и ошибок я изучал мир компьютеров с сумасшедшим энтузиазмом. Сейчас мама вспоминает свои слова и радуется, что я её тогда не слушал.

Сложно ли было поступить в БГУ? Как ты готовился? Оставалось свободное время на хобби?

При поступлении я знал, что проходной балл будет высоким. На мою специальность нужно сдать ЦТ по физике, математике и языку. Первое мне сдавать было не нужно из-за олимпиады, во втором я был уверен, но на занятия по подготовке всё равно ходил, а вот с языком было не так гладко. Сейчас я очень благодарен учительнице русского языка, которая просто замечательно готовила нас, используя различные техники, в том числе и мнемонику. Это очень помогло. Если не путаю, то я набрал тогда 66 баллов, что для меня, безусловно, было успехом. Но свободное время оставалось, хоть и меньше, конечно.

Что дало тебе обучение в вузе?

Я выбирал между БГУИР и БГУ. Остановился на последнем из-за более глубокой математической базы. Она достаточно важна, т.к. зная фундаментальную теорию, прикладные навыки приобрести намного проще. Но, пожалуй, самое важное, что было в университете — это окружение, друзья. Вместе мы изучали новое, посещали конференции, придумывали проекты и реализовывали их. В первый же год, зимой, мы поехали с друзьями в Солигорск на местную IT-конференцию, где узнали, что компания Nival набирает студентов для разработки мобильных игр. Трое из нас подали заявку, решили тестовое задание и попали на нашу первую работу. И вот этот дух товарищества и подталкивания друг друга на изучение чего-то нового оказал самое большое влияние на моём пути к нынешнему месту работы в Яндексе.

Выезжал ли ты на стажировку за границу?

Да, на четвёртом курсе мы с несколькими одногруппниками и студентами на курс младше поехали в Германию, в Мангейм, на две недели. Там работали над проектом и знакомились с жизнью и работой в стране. Было очень интересно и познавательно. Один из моих одногруппников после университета поехал туда заниматься наукой и получать степень.

В каких компаниях проходил практику во время обучения?

Обязательная практика у нас была только на пятом курсе, когда я уже работал в Яндексе. Но трудился я почти всё время с середины первого курса. Вначале это была уже упомянутая Nival. Работа там была похожа на стартап или стажировку. Нас учили ремеслу игростроя, мы придумывали идеи игр и реализовывали их. Нас контролировали и направляли асы своего дела. И даже деньги платили, немалые по меркам студента на то время. Это было очень увлекательно и интересно. К сожалению, позже нам пришлось уйти, потому что мы не могли совмещать работу и учёбу. Далее я попробовал себя в сфере финансов, то есть разработки программ для сурового мира бирж и аналитики. Но работать там было скучно, особенно после игровой индустрии. Через несколько месяцев меня с другом позвали обратно в Nival, и мы согласились. Но ещё спустя полгода подразделение закрыли, а меня почти сразу забрали в стартап. Это всё так же была разработка игр, но уже в маленьком офисе из нескольких человек. Оттуда я решил уйти сам, когда поступило предложение о работе в Яндексе.

Вот где восстанавливают энергетический запас сотрудники Яндекса
Вот где восстанавливают энергетический запас сотрудники Яндекса

Расскажи, как ты, собственно, устроился работать в Яндекс?

Как и многие студенты в то время, через ШАД. Школа анализа данных Яндекса — это двухлетний набор курсов по обработке и анализу информации. Там преподают множество предметов: от дискретной математики и теории вероятности до машинного обучения и алгоритмов обработки текста, изображений. В ШАД я поступил в 2013 году в конце третьего курса, а первый семестр ШАДа совпал с первым семестром четвертого курса. В это время в университете учиться становится чуть проще, поэтому совмещать было несложно. Хотя мой одногруппник поступил туда на год или два раньше меня и тоже всё успевал.

Поступить в ШАД не так просто: вступительный экзамен состоит из задач различных дисциплин, и сами задания достаточно сложные. Учёба тоже требует существенных усилий. После первого семестра предлагается заполнить анкету о прохождении стажировки в Яндексе. Затем тебя приглашают на несколько собеседований. По их результатам могут предложить пройти стажировку в той или иной команде. Изначально я хотел пойти в команду разработки поиска, но туда не взяли, а предложили мобильную разработку. Я был не так далёк от неё, ведь разрабатывал мобильные игры, и согласился. И потом, шаг за шагом, изучая платформу и соответствующий язык программирования, совершенствуясь в архитектуре кода и прочих навыках, я прошёл путь от стажёра до старшего разработчика. Я считаю, что ШАД дает очень много актуальных знаний, особенно в сфере машинного обучения и смежных областях.

В перерыве между работой можно и спортом заняться
В перерыве между работой можно и спортом заняться

Как проходило твоё собеседование, когда устраивался в Яндекс?

Собеседование в Яндексе состоит из нескольких этапов. Первый — созвон по скайпу, когда оценивается общий уровень кандидата. Этот этап студентов ШАДа не касается, потому что наши преподаватели и так понимают, что ты из себя представляешь. Затем идёт собеседование по алгоритмам. Там даются различные задачки, часто не требующие написания кода, но проверяющие знания в области алгоритмов и структур данных, а также смекалку кандидата. Дальше была секция по написанию кода, где уже требовалось знать языки программирования, их особенности и тонкие моменты. У меня это был C++. С ним я работал не так уж много, в промышленном программировании опыта вообще не было, но я справился. Задачки там были практические, а интервьюеры обращали внимание на стиль написания и задавали вопросы, почему я тут сделал так, а не этак. После этого мне предложили стажировку в команде мобильной разработки. Предложение стажировки — тоже, по сути, отдельный этап собеседования, где с тобой общается руководитель группы и рассказывает, с чем именно будет связана работа. Мне понравилось, и я согласился.

Опиши свой рабочий день: в котором часу ты приходишь в офис, у тебя фиксированный график или свободный, сколько времени ты проводишь за компьютером?

С графиком работы в Яндексе всё замечательно: он гибкий, насколько это позволяет рабочий процесс команды. Главное — результат, а не то, когда ты пришёл на работу и сколько провёл в офисе. Кто-то приходит в восемь утра и уходит тоже рано, кто-то появляется к обеду. Встречи раньше 11 или позже 17 часов назначать не принято, чтобы на них было удобнее ходить и тем и другим. Раньше я приходил на работу около 10:30, сейчас мой график немного перестроился из-за переезда и работы жены. В 12:15 у нас ежедневная быстрая встреча команды — стендап, на которой каждый рассказывает, чем он занимался вчера и чем планирует заниматься сегодня. Встреча на полчаса, поэтому все сложные проблемы обсуждаются вне данного времени с теми, кого они касаются. Обед обычно около 14:00. В зависимости от текущей нагрузки на работе я нахожусь часов до 19−20 вечера. При этом, если задачи требуют быстрого решения, можно поработать из дома вечером или на выходных. Так как ноутбук всегда с собой, это не проблема. Лишь бы был интернет.

Когда хорошо поработал, можно и поиграть от души
Когда хорошо поработал, можно и поиграть от души

Чем ты увлекаешься?

В основном тем же программированием. Только на работе я делаю одно, а дома — другое, в качестве отдыха. Иногда участвую в соревнованиях по искусственному интеллекту по типу Russian AI Cup. Но не хватает времени, поэтому не всегда успешно. Также иногда в голову приходят идеи каких-нибудь простеньких программок для себя. Обычно это сильно увлекает на пару недель. И если за это время не успеваю доделать, то могу просто отложить в долгий ящик. Несколько лет назад увлекался йо-йо [игрушка из двух дисков, скреплённых осью с верёвкой в виде петли — прим. ред.]. Мы тогда с друзьями собрали единомышленников и организовали, пожалуй, первое сообщество йоеров в Беларуси. Было здорово. Сейчас могу наткнуться на эту игрушку и немного «покрутить», даже простенькие трюки помню, но не больше.

Доводилось бывать в заграничных командировках?

Командировки в Россию считаются заграничными? (улыбается) Да, мы всей командой несколько раз в год летаем в Москву обсуждать задачи или просто укреплять командный дух. Несколько раз я ездил выступать на конференциях. В других командах коллеги летают по всему миру. Это и выступления, и налаживание контактов с другими компаниями, и другие рабочие вопросы. Всё зависит от проекта, над которым работаешь.

На каком уровне должен владеть английским специалист твоего профиля?

Знание английского в IT очень важно. Во-первых, оно существенно расширяет возможность карьеры как за границей, так и в некоторых белорусских компаниях, работающих с иностранными заказчиками. У нас в команде, как и в бОльшей части Яндекса, знание английского не обязательно в силу того, что почти все разработчики — русскоговорящие. Но и тут можно попасть впросак, когда при написании комментариев к коду, которые для многих продуктов принято писать на английском, тебя постоянно будут поправлять коллеги, лучше знающие его. Поэтому владеть языком хотя бы на базовом уровне и уметь грамотно излагать свои мысли на письме должен каждый уважающий себя программист.

Вот так шутят в Яндексе
Вот так шутят в Яндексе

Как ты выучил английский язык?

До сих пор учу. Сейчас занятия проходят на уровне Advanced, хотя по ощущениям собственных навыков это всё ещё Upper Intermediate. В Яндексе помогают подобрать курс под твой уровень и даже компенсируют часть его стоимости. Занятия проходят в офисе, в группе по 3−5 человек. Все, естественно, коллеги. Мне очень нравится такой формат, и я действительно ощущаю, как моя речь и грамматика становятся всё увереннее. Занимаюсь английским в Яндексе я уже второй год. До этого был обычный курс в школе и университете.

Какими качествами, на твой взгляд, должен владеть человек, который хочет работать в твоей сфере?

Очень важен математический склад ума. Умение держать в голове множество абстракций и складывать их в рабочие решения, постоянно оценивать, как тот или иной фрагмент кода поведёт себя в различных ситуациях — всё это свойственно именно математическому, логическому мышлению.

Без математической базы, знания алгоритмов и структур данных тоже никуда. Лично мне кажется, что ещё важна тяга к творчеству, созданию чего-то красивого, элегантного. Написание кода должно восприниматься именно как творчество, а не как рутина. Программист из ничего создает эффективно работающий механизм. Поэтому мне, как и многим представителям моей профессии, так нравится помимо работы разрабатывать что-то для себя. Такие личные проекты называют у нас «пет-проджектами» (pet projects), что отлично описывает их суть, ведь они действительно становятся питомцами, за которыми ухаживаешь, возвращаясь к ним раз за разом, доделывая ту или иную функциональность.

Ещё полезны любопытство и тяга к изучению нового. Сфера IT развивается семимильными шагами, технологии быстро сменяют друг друга — и очень просто в какой-то момент прекратить развитие и отстать. Отрасли разработки отличаются по темпу, где-то можно годами использовать одни и те же принципы, где-то подход может измениться несколько раз за год. Но тяга к новому и любопытство всегда будут подталкивать оставаться в струе.

Комната, где проводятся видеоконференции. Уютно, правда?
Комната, где проводятся видеоконференции. Уютно, правда?

Расскажи о плюсах и минусах своей работы?

Самый большой для меня плюс в том, что работа приносит удовольствие. Ещё, конечно, и гибкий график, и достойная зарплата, и уютный приятный офис, и коллектив, и командный дух — это не пустые слова, им правда пропитана вся компания. Найти минусы сложно (улыбается). Разве что стандартные недостатки неподвижной, сидячей работы за компьютером — постепенно садится зрение и в целом здоровье. Как и физический труд, умственный тоже изматывает. У некоторых программистов бывают сезонные ухудшения производительности, когда эмоциональное и мыслительное истощение особенно заметно. Ещё из минусов: иногда жена сердится, что я могу весь вечер уткнуться в ноутбук за работой или очередным «пет-проджектом».

Исходя из личного опыта, какой бы ты дал совет школьникам, которые хотят связать будущую профессию с программированием?

Пробуйте программировать. Особенно интересно начинать с игр — именно сейчас, когда есть инструменты, позволяющие создавать их с минимальным опытом в разработке. Ничто не будет так приближать к профессии программиста, как попытки написать что-то интересное. Постарайтесь, например, автоматизировать разные рутинные занятия — будь то отслеживание выхода новой серии любимого сериала или расчёт времени сбора урожая в компьютерной игре. Постепенно вы будете всё лучше понимать принципы разработки, сможете придумывать решения для более сложных проблем и непременно достигнете успеха. Только не забывайте при этом хорошо учиться.

Кем ты видишь себя в будущем? Есть конкретная цель профессионального роста?

Сегодня мне нравится то, что я делаю. Программирование занимает бОльшую часть моего рабочего времени, и мне ещё есть куда расти в этом направлении. В будущем же я вижу себя руководителем, таким себе играющим тренером, не брезгующим и самому сесть за написание кода, но уже отвечающим за группу людей, направляющим проект в правильное русло. Это требует большого опыта разработки, понимания процессов, умения принимать эффективные решения. В Яндексе много таких примеров — мне есть, к чему стремиться.

***

Если материал был для тебя полезен, не забудь поставить «мне нравится» в наших соцсетях ВКонтакте, Instagram, Facebook, ASKfm и поделись постом с друзьями. А мы сделаем ещё больше материалов, которые пригодятся тебе для учёбы.

Перепечатка материалов с сайта adukar.by возможна только с письменного разрешения редакции. info@adukar.by