В «Криптоните» работает Сергей Аверкиев (@averkij). Он занимается исследованиями в области речи и текста в лаборатории больших данных и статистики. Но до этого много лет он работал бэкенд-разработчиком.

Мы поговорили с Сергеем и узнали, как происходил переход из одной сферы в другую, сложно ли было на это решиться, и что он посоветует тем, кто тоже думает сменить область. Бонусом – курсы и комьюнити.

Чем ты занимался до того, как пришел в «Криптонит»? 

— Я окончил МГТУ им. Н.Э. Баумана по направлению «Прикладная математика», работал бэкенд-разработчиком в разных компаниях около 10 лет. На последнем месте работы писал высоконагруженные инфраструктурные сервисы для бэкенда. Это была сложная инженерная задача.

— Почему ты решил сменить деятельность? 

— Наверное, надоело писать инфраструктуру. В какой-то момент стало слишком просто работать, захотелось чего-то нового.

Тогда «data science» и «машинное обучение» были на слуху, и мне стало интересно. Для меня это не принципиально новая сфера, она связана с программированием. Но сама предметная область гораздо шире: машинное обучение применяется в медицине, для распознавания изображений, генерации текстов и т.д.

— Как происходил переход из backend-разработки в Machine Learning?

— Вначале я и не планировал менять сферу деятельности. Перед тем, как прийти в «Криптонит», я три года занимался машинным обучением на уровне хобби. В первый год проходил различные курсы на платформах Coursera и Stepik, смотрел тематические видео на YouTube.

Я увлекаюсь языками, поэтому поучаствовал в соревновании на машинный перевод с китайского на русский и выиграл его. Подарили часы. Больше ничего нигде не выигрывал?.

Потом придумал хобби-проект Lingtrain, связанный с языками и машинным обучением. Написал про него на «Хабре». Проект многим понравился и оказался полезным.

Проект Сергея, о котором он рассказал на «Хабре»

А ещё по просьбе бывших однокурсников провел в Бауманке [МГТУ им. Н. Э. Баумана] спецкурс лекций по обработке естественного языка (Natural Language Processing). И, когда постепенно накопились все эти знания и проекты, я решил перейти в новую область.

Переход на новое место работы занимает немного времени: ты открываешь резюме, откликаешься, а дальше все стандартно. А вот переход в новую область занял у меня два-три года.

— Как тебе удалось совмещать работу фултайм, серьезный pet-project и преподавание в Бауманке? Как хватило мотивации? 

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

Есть такой вирусный ролик, где у программистов спрашивают, сколько часов в день они работают. Молодой программист отвечает, что работает по 8 часов в день, а опытный говорит, что вообще может не работать, и компания не сразу об этом узнает. На самом деле свободного времени достаточно.

— Трудно было найти работу в новом для тебя направлении? 

— Нет, не очень. Мне стали писать после того, как я опубликовал статьи на «Хабре»: HR-менеджеры часто ищут там авторов и пишут им в LinkedIn.

На самом деле, труднее было даже не найти новую работу, а расстаться со старой.

Обычно люди работают 3–4 года и переходят в новое место. Но когда долго работаешь в одной компании, то притираешься к коллективу: у тебя есть друзья, много воспоминаний, комфортный офис, какие-то плюшки. Ты примерно знаешь, что будет в будущем.

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

То есть труднее решиться на это. Но, если ты уже решился, то, имея опыт, гораздо проще перейти в новую область. Если опыта нет, то можно перейти на младшую должность, особенно если ты разработчик.

— Важен ли коллектив в твоей работе?

— Многие считают, что программисты – закрытые интроверты, которые любят работать в одиночестве. Такие тоже есть, но в среднем это обычные люди.

Для меня коллектив очень важен. В любой работе у тебя все равно будут возникать трудности. И тут важно, чтобы ты мог обратиться к коллегам с вопросами и получить на них ответы.

— Стоит ли бросаться в новую сферу, не сделав себе подушку безопасности?

— Ну, шанс ошибиться есть всегда. А копить деньги важно вне зависимости от того, переходишь ты на новую работу, или нет. Иметь у себя какую-то заначку всегда полезно.

Мой переход из бэкенда в ML был спокойным и постепенным.

Но всё зависит от ситуации. Я знаю пример, когда человек брал кредит на 600 тысяч, уходил со своей работы и изучал разработку под мобильные платформы. Когда деньги заканчивались, он перешёл на новую работу как Android-разработчик.

Я бы не сказал, что какой-то из этих путей неправильный. Среди тех, кого я знаю, все, кто искал – в итоге находили работу.

— Какое образование должно быть у ML-инженеров и что делать, если нет технического бэкграунда? 

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

Много примеров, когда люди из бухгалтеров, аналитиков, помощников переходили, например, в тестировщики, где поначалу не нужен глубокий технический бэкграунд. Потом они росли как QA-специалисты или переходили в разработку. Если поставить себе цель, то через года-два спокойно станешь разработчиком.

— Что ты посоветуешь тем, кто хочет перейти из одной специальности в другую?

— Во-первых, с самого начала делайте практические вещи. Потому что, сколько бы теории ты ни учил – без практики она забудется, а твои наработки останутся. Потом ты сможешь показать их на собеседовании. Мне помог pet-project и GitHub. Все твои проекты выступят дополнительным аргументом при устройстве на работу.

Во-вторых, важно быть в теме той сферы, куда ты хочешь перейти: нужно следить за новостями, читать статьи, вступать в сообщества.

Если говорить о машинном обучении, то я бы посоветовал крупнейшее русскоязычное комьюнити — ODS (Open Data Science).

В этом сообществе десятки тысяч человек и более ста каналов на разные тематики, например: голос, обработка текста, NLP, поиск работы, вакансии и др. Там многие готовы помочь тебе с любым вопросом, даже с рабочим.

Ещё поделюсь полезным лайфхаком, как в Telegram не потерять важные сообщения в каналах. Допустим, у тебя 20-30 тематических каналов. Естественно, целый день ты не можешь их читать. Можно настроить бота «Feedgram»: просто скидываешь ему репосты каналов, которые ты хочешь читать, и задаешь ему время. А он тебе в заданное время присылает одним уведомлением все сообщения за сутки. Можно отписаться от 20 каналов и раз в день читать один.

В-третьих, не надо бояться новых, незнакомых задач. В любом случае придётся столкнуться с практической стороной решения задач, которую ты нигде, кроме как на работе, не узнаешь: на курсах и в университете все равно актуальных прикладных задач практически не дают. Не бойся ошибок – они все равно будут и придется их решать. 

— Чтобы не сесть в лужу при переходе в другую сферу, какие три момента должны быть продуманы?

Должна быть финансовая подушка, которая придаст тебе уверенности. И должно быть понимание, что это – твоё. Мне кажется, этого достаточно.


И вот ещё несколько курсов, которые помогут освоиться в новой области.

Вводные курсы по машинному обучению от МФТИ. Регулярно происходят перезапуски, рекомендую учиться во время них и делать домашние задания.

Хороший курс по NLP на платформе сообщества ODS. Тоже периодически происходят перезапуски.

Подборка открытых курсов Стэнфорда, связанных с машинным обучением. Тем много, по NLP выбирайте CS224U.

Во всех курсах есть отсылки к статьям, видео и упражнения, так что для постижения основ этих материалов точно хватит.