Я родился в Питере в 92-м на краю города

Evgenii Nikitin

Иногда я думаю, что мне сильно повезло. Самая любимая работа, потрясающий коллектив, уникальная доменная область с потенциалом к изменению мира к лучшему. Я, мягко говоря, не склонен к самоуничижению и приуменьшению значимости своих усилий (наверняка кто-то считает меня нарциссом 😂), но мой карьерный путь достаточно странен и извилист. Я никогда не был джуном, миддлом и синьором, меня никогда не перф-ревьюили, и всего раз в жизни я получил работу в IT по результатам собеса. Так что, когда кто-то из моих ребят на 1:1 просит совета со словами “ты как опытный тимлид…”, или когда менти в отзыве пишет “Евгений - настоящий профессионал в ML…”, внутри у меня начинаются ощутимые уколы синдрома самозванца.

Сегодня я хочу немного рассказать о себе и своём карьерном и жизненном пути на примере уроков, которые я на нём получил. Для меня этот пост - рефлексия и попытка структурировать свой опыт. Надеюсь, он окажется чем-то полезен и для вас.

Самое главное - люди вокруг тебя

В 8 классе я перешёл в ФТШ - одну из физико-математических школ Петербурга. Пожалуй, это было одно из самых судьбоносных событий в моей жизни. Тогда я не полностью это осознавал, но я оказался в кругу умнейших людей города и страны. Среди моих одноклассников и одношкольников - нынешние руководители направлений в крупных компаниях, профессоры и постдоки американских и европейских университетов, успешные бизнесмены, учёные, разработчики. И что ещё важнее - честные, открытые к новому и просто интересные люди, многие из которых до сих пор остаются моими друзьями.

Сложно переоценить влияние нашего окружения на нас, наши взгляды, развитие и жизнь. В университете я познакомился с Никитой Николаевым - сейчас это мой друг, партнёр по уже двум ML-стартапам, а ещё, пожалуй, самый честный человек, из тех кого я знаю. В Англии на магистратуре и в США на PhD я повстречал огромное количество людей разных национальностей, происхождений, политических взглядов, полов, возрастов, сексуальных ориентаций, цветов кожи - и они очень многому меня научили. В Цельсе я работаю с потрясающими парнями и девчонками, и они - главная причина того, что я с удовольствием хожу на работу каждый день, даже в эти странные времена, когда твоя страна вдруг начинает войну.

Сложно тут дать какой-то неизбитый совет, но всё-таки - старайтесь быть рядом с людьми, которые вам нравятся. Некоторые говорят, что на работу они ходят работать, а не дружить. Наверное, такой подход вполне имеет право на жизнь. Ну а я просто счастлив, что мои коллеги - это люди, которых я люблю и уважаю. А ещё можно попросить резюмировать эту мысль Роберта Саттона.

Математика - это база (даже если ты эффективный манагер)

На этой рабочей неделе я посетил 15 онлайн- и офлайн-встреч, и ни на одной из них мы не обсуждали векторные пространства, комплексно-значные нейронки или алгоритмы на графах. Да и наши ML-инженеры далеко не каждый день расчехляют свой математический аппарат. Так стоит ли тратить время на освоение математики, 99% которой ты в итоге забудешь?

Мой ответ однозначен - да. Математические олимпиады, матбои, теорвер в школе, линейка, матан, матстатистика в моих многочисленных универах - кайф, что всё это было в моей жизни. Даже если вы не на жёсткой рисёч-позиции, математический бэкграунд помогает:

  • Читать статьи и быстро осваивать новые темы при необходимости. Да, рутина ML-работы - это встречи, работа с даткой, борьба с падающими билдами и экспами. Но время от времени внезапно возникает необходимость изучить что-то новое - бинарные или графовые нейронки, алгоритмы реконструкции КТ-исследований, adversarial training. И поверьте, вы будете благодарны, что в вашей голове ещё плавают какие-то знания, а главное - есть возможность их быстро подновить и собрать в кучу.
  • Разговаривать с людьми и не бить в грязь лицом. На позиции ML-менеджера нужно общаться с самыми разными людьми - и некоторые из них внезапно очень любят математику и в ней глубоко разбираются. Способность хотя бы примерно понять, о чём они говорят, а иногда даже вставить что-то адекватное мне пригождалась уже не один раз.
  • Поставить мозги на место. Да-да, я из этих отбитых, которые считают, что изучение математики развивает логику, критическое мышление и учит учиться.

Не зацикливайся на одной области ML

Мой путь в ML начинался с гребневой и пуассоновской регрессии в дипломной работе в 2013 (тогда я, кажется, ещё не знал термина machine learning) и выбора лучшей модели с помощью Akaike Information Criterion в магистратуре. В конце концов я логичным образом пришёл к классическому табличному ML в FscoreLab, нашем с Никитой стартапе по использованию машинного обучения в кредитном скоринге. Кстати, в то время я пару лет одновременно делал PhD и стартапил, что само по себе - весьма занятная история, но об этом в другой раз…

Логотип FscoreLab - лучше быть в принципе не может

Сейчас люди часто залетают напрямую в нейронки - и это нормально. Я, однако, очень рад, что научился доброй части того, о чём пишут в книгах типа Designing ML Systems, именно в Фскорлабе. Например:

  • как важны тщательно задизайненная схема валидации и механизмы по детекции ликов
  • насколько больно и рискованно использовать разный код на трейне и инференсе
  • насколько разрушительными могут быть эффекты плохих фичей и грязной датки
  • как работать с несбалансированными датасетами
  • как важен мониторинг ML-систем - автоматический и выборочный ручной
  • насколько важна открытая и доверительная коммуникация с пользователями ML-системы и клиентами

Конечно, всему этому можно научиться и работая с нейронками, но там и своих специфических проблем навалом, а некоторые вещи ярче всего проявляются как раз в табличках. Кроме того, даже занимаясь medical imaging, я регулярно обращаюсь к своему опыту из табличек и NLP (текстами я занимался на PhD). Во-первых, реальный мир чаще всего мультимодален - например, к рентгеновским снимкам часто прилагаются тексты и табличные данные - заключения врачей, протоколы осмотра, демография. Во-вторых, многие идеи и подходы перекликаются между областями. Самый простой пример - трансформеры начали свой крестовый поход именно в NLP, а сейчас захватывают и все остальные области, да и RNN у нас до сих пор применяются довольно активно. Да и вообще - знания из других областей помогают генерить более креативные и разнообразные гипотезы. В общем, не бойтесь менять область или делать разнообразные пет-проекты.

Развивайся, даже если это не требуется

На первую работу я устроился на третьем курсе. Заключалась она в работе с Excel-табличками. Детали уже и не вспомню, но в основном нужно было брать что-то из вордовских документов и определённым образом вставлять в таблицы. Предполагалось делать это руками. Деятельность быстро мне наскучила и показалась невероятно рутинной и однообразной, а это первый признак того, что тут можно что-то автоматизировать. Я кое-как освоил синтаксис VBA и набросал несколько макросов, которые выполняли мою недельную работу за пару минут. Освободившееся время я в основном посвятил в игре в харстоун. Через какое-то время меня спалили, взяли на полную ставку и повысили зарплату в четыре раза.

Меня точно нельзя назвать хорошим программистом (привет, коллеги) или талантливым инженером. Но я люблю разбираться в новых вещах, особенно если они делают жизнь легче и лучше, и у иногда меня это неплохо получается. Так появился гит в моих универских проектах, так я разобрался в тонкостях Kubernetes, когда деплоил Elasticsearch-кластер в лабе на PhD. Как говорит мой дед - “я до сих пор учусь каждый день”, и я стараюсь следовать этому девизу. Конечно, вдолгую поддерживать этот процесс возможно, только если ты любишь своё дело, кайфуешь от него, готов в удовольствие тратить на образование не только рабочее время и болтать о работе с друзьями из других областей.

При этом не стоит взваливать на себя непосильную ношу и глубоко изучать или начинать использовать всё подряд, только потому что это кажется важным. Как и при внедрении инженерных практик и MLOps-тулинга, процесс изучения нового должен быть постепенным и целенаправленным. Может оказаться полезным составить себе роадмап (ещё вариант) или посмотреть курс Full Stack DL и выбрать темы для более глубокого изучения.

Периодическая структуризация знаний очень важна

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

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

Менеджмент как и ML - и наука, и искусство, и магия

В Фскорлабе у нас дела шли неплохо, и в какой-то момент мы даже решили взять несколько джунов мне в помощь (один из них сейчас тимлид в Цельсе, хай, Лешт). Это был любопытный опыт - распределённая команда, семичасовая разница во времени, первое Слак-пространство, попытка организовать какие-то базовые процессы, но полноценной DS-командой это назвать было сложно. Поэтому, когда в начале 2019 года передо мной встала задача создать ML-команду в Цельсе, я оказался в непростой ситуации. Некоторые практики и инструменты я принёс с собой из Фскора, но этого явно было недостаточно. Так начался мой занимательный путь в мир менеджмента.

Эм, с чего бы начать…

В июне стукнуло три года, как был создан ML-отдел, но я до сих пор не могу чётко ответить на вопрос как быть хорошим руководителем. Одно я знаю точно - без старания, просто плывя по течению ты им точно не станешь. Мне кажется, что эти вещи увеличивают вероятность успеха:

  • Быть верным своим ценностям. Я убеждён, что чтобы быть хорошим руководителем - нужно как минимум быть неплохим человеком. Понятно, что у каждое своё субъективное определение “хорошести”, но как минимум важно не отступать от своих ценностей, какие бы трудности не вставали на пути.
  • Следить за ментальным здоровьем. Как можно эффективно коммуницировать с другими людьми, если не умеешь разговаривать и разбираться в себе? Я долгие годы считал, что психотерапия - это не моё, и настоящий “мужик” должен сам разбираться в своих проблемах. Что ж, ещё один жизненный урок - это чушь. Психотерапия, психиатрия, изучение своих эмоций, медитация - добро пожаловать в мир ментального здоровья.
  • Относиться ко всем с уважением. У каждого из нас есть какой-то набор стереотипов, который мы используем, чтобы лавировать в информационных потоках, это нормально. Но возраст, грейд или пол не влияют на ценность идей человека. Я стараюсь внимательно слушать всех, порой совсем зелёные джуны предлагают самые крутые идеи по улучшению процессов.
  • Увеличивать теоретический багаж. Сейчас доступно много материалов для руководителей - конференции (Podlodka Teamlead Crew, Teamlead Conf), книги, подкасты, LeanDS, дорожная карта тимлида и многое другое. Одна просьба - фильтруйте всё, что видите и читаете, через внутреннюю призму качества. Процент мусора, воды и откровенного вредительства в сфере менеджмента выше, чем в любой другой сфере.
  • Общаться с коллегами. Теория - это хорошо, но вот ваша практика ограничена только одной компанией или командой. Общайтесь с другими лидами, с руководителями вне IT, станьте ментором или менти. Есть и всякие специальные штуки - рэндом кофе, тимлидские ТГ-чаты и даже IT-бары.
  • Регулярно рефлексировать и структурировать знания. Предыдущая секция относится и к знаниям о менеджменте.

На сегодня хватит прошлого, жду ваших комментариев, а, может быть, даже личных историй!