Добрый доктор для ML-команды: как тимлиду работать с людьми

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Кадры или, если брать шире, люди по-прежнему решают все, и сфера Machine Learning — не исключение. Но подбор специалистов, поддержание работоспособности команды, отношения с заказчиками — все в этой области имеет определенную специфику.

Как проводить собеседования, что общего между сеньорами и ворами в законе, зачем тимлиду быть еще и психологом, наконец, какие magic tools облегчают жизнь команде? Обо всем этом нам рассказал senior-разработчик и DL-инженер Роман Тезиков, который собаку съел в работе с людьми на ML-проектах. Передаем ему слово.

Как проводить собеседования для ML-проектов: гномики ни к чему

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

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

Допустим, команда трудится над ML-решением для модного магазина, и нужно реализовать по картинке получение разных атрибутов одежды (цвет, принты, вырезы шеи и т. д.). По каждому из них налицо дисбаланс: в цветах доминирует сначала черный, потом белый и еще какой-нибудь, в вырезах — явный перекос в сторону круглых или, напротив, V-образных и т. д. Вопрос: как правильно составить метрики, и можно ли их свести в одну?

Пусть кандидат и не даст четкого рецепта или даже где-то ошибется, зато покажет логику своих рассуждений. Многие подходят к проблеме творчески, предлагают несколько альтернативных вариантов решения, что говорит в их пользу. Задача специалиста в рамках собеседования — направлять беседу, постоянно задавать наводящие вопросы, «подкидывать» дополнительные вводные. Хорошо, если образ мысли соискателя импонирует тому, кто проводит собеседование, и совпадает с видением будущей команды.

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

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

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

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

Отдельного внимания заслуживает поведение специалиста в конфликтных ситуациях. Как хотя бы в теории планирует действовать кандидат: сразу пойдет жаловаться тимлиду, попытается сначала сгладить углы в беседе с оппонентом или же «упрется рогом», если уверен в своей правоте? Конечно, все зависит от конкретной ситуации, да и не факт, что соискатель будет до конца откровенен на собеседовании. Здесь важна, опять же, логика его рассуждений и сама реакция на поставленный вопрос.

Как поддерживать здоровье команды при реализации ML-проектов

Хайринг хайрингом, но подобрать специалистов — только первый шаг. Команду требуется постоянно поддерживать в боеспособном состоянии. Не перегружены ли разрабы, всем ли комфортно взаимодействовать друг с другом и нет ли трений? Здесь тимлид выступает не только как руководитель и организатор, но и как психолог или даже полноценный процессный доктор. Недаром так много внимания в ML-сфере и не только сегодня уделяется здоровью команды.

Профилактика лучше лечения 

Как бы избито ни звучала эта медицинская поговорка, она абсолютно правомочна, в том числе, в управлении командами ML-проектов. Чтобы на запускать проблемы и «резать, не дожидаясь перитонитов», тимлид должен постоянно общаться с коллегами. Нужны регулярные встречи и созвоны (форматов коснемся чуть позже), на которых любой специалист способен поделиться своими болями. В итоге получится не только разобраться в каждом отдельном случае, но и вскрыть системные камни преткновения. 

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

Или же выясняется, что команда в принципе не может воспроизвести ни один проведенный эксперимент. Никаких настроенных пайплайнов, автоматизации сбора и препроцессинга данных, обучения модели, валидации попросту нет. Все выполняется ручным исправлением каких-то конфигурационных файлов. Так почему бы не внедрить специализированные фреймворки для управления версиями и трекинга экспериментов (DVC и ClearML), которые значительно облегчат жизнь? Они помогут версионировать датасеты, сравнивать метрики, настраивать гиперпараметры, обучать модели в DAG-структуре, находить нужные эксперименты и т. д. 

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

Методы работы с командой: конструктив и безопасная среда вместо анонимного «переливания помоев»

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

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

one-to-one

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

При отсутствии трений между специалистом и тимлидом подобные беседы оказываются безопасной средой, где можно откровенно обсудить любые проблемы. В итоге оne-to-one повышают уровень доверия сотрудника к руководителю, если, конечно, видно реальное решение обсуждаемых вопросов. 

Кто-то возразит, что практически в любой команде и так регулярно проводятся групповые совещания. В компактных командах этого вполне достаточно: какой смысл по отдельности мучить «полтора землекопа» разговорами по душам? 

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

Оценка 360 градусов

Теперь перейдем к чуть менее популярному, но тоже довольно распространенному инструменту — обратной связи «360 градусов». 

Такое массовое анкетирование может дать ценные сведения о здоровье команды и взаимодействии между ее участниками. При этом на сбор информации не придется тратить много времени. Когда у тебя, скажем, несколько десятков человек в команде, один на один со всеми не наговоришься.

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

К слову, если испытываешь затруднения при общении с коллегой –— считаешь его подходы неправильными или просто не можешь найти общий язык — такую тему вполне можно обсудить в формате one-to-one. Главное, сохранять конструктив и не сбиваться на обиды и «переливание помоев».

Другой недостаток обратной связи «360 градусов» в том, что собирать ее часто не получится (обычно это делается раз в квартал). Тимлид же должен постоянно держать руку на пульсе здоровья своей команды. 

Разумеется, вышесказанное не значит, что такой инструмент не бывает полезным. Нужно лишь понять, насколько он уместен и как его правильно использовать. Во-первых, наибольшую эффективность обратная связь «360 градусов» обычно показывает в корпорациях с большим штатом специалистов и динамичными составами команд. Тогда между людьми не успевает накопиться много противоречий, а значит в анкетах пониженный градус токсичности. Правда, следует все же убедиться, что опрашиваются коллеги, которые хотя бы периодически взаимодействуют с сотрудником, а не только здороваются с ним в коридоре. Другая предпосылка к применению такого инструмента — обширная территориально распределенная структура компании: HR-подразделению и руководству проще отслеживать отношения в командах в разных филиалах. 

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

Как взаимодействовать с заказчиками в ходе ML-проектов или Никаких разговоров глухих со слепыми

Если внутри команды тимлид все же имеет определенные рычаги воздействия на участников, то в коммуникациях за ее пределами ситуация иная. Даже когда заказчик — внутренний, нельзя провести с ним one-to-one. В некоторых ситуациях приходится выполнять полноценный ресерч, готовить подробное обоснование, чтобы аргументированно ответить «нет» на заведомо невыполнимое требование.

Скажем, заказчик из агрохолдинга хочет, чтобы у него маскировались и трекались все коровы из огромного стада, производилось Re-identification на нескольких камерах разрешением всего 480p. Да еще и подавай точность 99,99%. Для ML-разработчика недостижимость таких показателей очевидна, но доходчиво объяснить это человеку, который не погружен в технические детали, бывает непросто.

Здесь важно помнить, что есть два типа метрик: ML-ные и бизнесовые. Первые заботят только самих разработчиков. Нет никакого смысла разжевывать заказчику какую-нибудь сложную F1-метрику модели, демонстрировать замысловатые формулы и расчеты. Ему интересен конкретный результат и польза для бизнеса: например, те самые 99,99% точности при маскировании объектов. Не помешает разве что в самых общих чертах разъяснить заказчику какие-нибудь простые DS-метрики в разрезе того, как они влияют на его основную «хотелку». Допустим, растолковать, почему обычная точность — не самый адекватный показатель и скорее нужно ориентироваться на Recall и Precision. Главное здесь — не переборщить с техническими деталями и сохранять фокус на бизнес-пользу. Иначе получится разговор слепого с глухим. 

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

Вместо заключения

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

  1. При подборе специалистов бывает полезно сформулировать и дать на рассмотрение типичную для вашей ML-команды задачу. Даже если кандидат ошибется или не сможет решить проблему, станет понятна логика его рассуждений.

  2. Чтобы поддерживать здоровье команды, тимлид должен находиться в постоянном контакте с ее членами. Наиболее эффективный формат взаимодействия — регулярные беседы one-to-one. В свою очередь, анонимные опросы «360 градусов» следует применять с осторожностью и не делать на них основную ставку.

  3. Если говорить о коммуникации с заказчиками, то важнейший лайфхак — научиться переводить ML-метрики в бизнесовые и наоборот. Это поможет аргументировано отстаивать свою позицию в случаях, когда на повестке дня появляются технически невыполнимые задачи.

Источник: https://habr.com/ru/companies/magnus-tech/articles/800229/


Интересные статьи

Интересные статьи

Автор: Ольга Сорина, психолог, автор книги “Так можно: не выгореть, помогая”, больше 7 лет опыта работы с выгоранием.В этой статье я хочу рассказать про то, как на мой взгляд работает выгорание, от че...
Понадобилось мне скачать большой объем документации через emule. Так как мой IP был надежно (как надеюсь) скрыт за VPN, скорость скачивания постоянно стремилась к нулю. Официальный emule ...
Гости нового выпуска подкаста «Сушите вёсла» Вероника и Катя — бизнес-аналитики Redmadrobot. Они рассказали об особенностях своей профессии, различиях между видами аналитиков и назвали самый гл...
В последние годы полностью удаленные компании, такие как GitLab, Zapier и InVision, доказали, что культура удалённой работы — это не просто привилегия, но и явное преимущество для бизнеса. И разв...
Системы, которые принято называть секс-роботами, становятся все совершеннее. Многие магазины продают технологически продвинутые модели, которые очень похожи на людей и даже умеют общаться со ...