Прозрачность
Прозрачность
Жека Никитин
Всё время существования Цельса я топлю за прозрачность. Непрозрачность внутри компании ведёт к замедленному принятию решений, недопониманиям и мифам. Внешняя непрозрачность губительна как для компании, так и для индустрии в целом. Отсутствие доверия и понимания продукта со стороны текущих и потенциальных клиентов и пользователей затрудняет продажи, внедрение и реальное использование продукта. Скрытность от конкурентов и техсообщества замедляет развитие рынка, технологий и усложняет найм.
При этом я нередко сталкивался с непониманием и препятствиями со стороны “бизнеса” и коммерции. Зачем шарить сотрудникам информацию о бизнесе, особенно в сложные времена? Неужели нужно раскрывать ноу-хау о модельках, ведь конкуренты всё украдут? Хорошо, что есть другая точка зрения и критика - это ведёт к взвешенным решениям, но я всё равно стараюсь пушить прозрачность как одну из наших основных ценностей. Сегодня я хочу поговорить о некоторых инструментах, с помощью которых я добивался этой самой прозрачности.
Внутренняя прозрачность
Документация
Если какой-то процесс или коммуникация не произвели артефакт в виде документа или заметок - считайте, его и не было. Когда-то я делал целый доклад про документацию, сейчас хочу рассказать чуть подробнее про model cards и про то, куда мы движемся сейчас.
Карточки моделей у нас лежат в репозитории в отдельной папке docs в виде маркдаун-файлов. Каждый major-релиз (по сути - когда меняются метрики) обязательно сопровождается изменением этого файла. Что в нём лежит?
- Изменения с последнего релиза. Архитектура моделей, процесс обучения, данные, предобработка изображений, архитектура сервиса и так далее.
- Архитектуры моделей, препроцессинг, постпроцессинг. Лучше всего прикрепить схемы с текстовым описанием.
- Данные для обучения и тестирования на разных этапах. Источники, размер, баланс классов, мета-информация, примеры картинок и разметки.
- Метрики. Почему такие были выбраны, динамика по сравнению с последним релизом.
- Аутпуты модели и схема API. Что отдаёт сервис, типы полей, возможные значения и их продуктовое описание.
Помимо маркдауна к каждому релизу генерится PDF. Существует проблема устаревания этой карточки - иногда что-то забиваем или забываем обновить и это переходит в явный или скрытый техдолг. Есть разные способы борьбы с этим - например, использовать онбординг или командировки из команды в команду для аудита устаревшей документации.
Недавно мы начали готовиться к сертификации по ISO, и в рамках этой процедуры появилось два новых документа, сопровождающих каждый релиз. Эти документы прикрепляются к таблице релизов и должны быть доступны для ежегодного внешнего аудита.
- Программа валидации и отчёт по тестированию. Тоже маркдаун, который содержит описание всех автоматических и ручных тестов, которые обеспечивают качество системы. Включает описание смысла тестов, ссылки на отчёты и эксперименты, метрики и подробное описание всех тестовых датасетов.
- Техническое задание по релизу. Описание основных целей, которые преследовались в рамках работы по релизу, а также ссылки на фичи и задачи во внутренних таск-трекерах.
Информация от “бизнеса”
Отсутствие информации о том, что происходит в компании, неизбежно ведёт к поведению слухов и мифов. Куда мы движемся, какое финансовое состояние у компании, какие у нас долгосрочные планы? “Бизнес” (пишу в кавычках, потому что в это слово вкладывают очень много разных смыслов и ролей даже внутри одной компании) не всегда понимает, насколько важно для разрабов и других сотрудников понимать стратегию и жизненные показатели компании. Я кофаундер, и у меня есть доступ ко всей чувствительной информации, и я всегда старался доносить все важные новости до ребят. С ростом компании неформальных бесед и сообщений стало недостаточно - недавно мы создали новую ежеквартальную встречу “Встреча с кофаундерами”, на которой я презентую наш и своё личный вижн и отвечаю на вопросы. В начале года мы оказались в непростой финансовой ситуации, и на горизонте замаячили сокращения. В этот период я собирал ребят чаще и открыто говорил о том, что происходит. Про опыт сокращений я, кстати, планирую написать отдельный пост.
Помимо этого я и Head of AI ведём канал, в котором каждую пятницу пишем о том, что мы делали и на какие встречи ходили. Помимо распространения информации это помогает ребятам понимать, какие у нас есть боли и фрустрации. Это помогает оставаться на связи со всей компанией, а какие-то проблемы даже могут решиться с помощью инсайтов от сотрудников.
Общее пространство и коммуникация
Компания исторически была разбита на два пространства - ML в Слаке (а после начала войны - в Маттермосте), остальные - в Телеге. Это вело к транзакционным издержкам, раздражению и потере информации. В этом году наконец удалось переманить почти всех в Маттермост. Один только канал по взаимодействую ML и бэка помог решить большую часть проблем по взаимодействию.
В прошлом году мы внедрили Notion как единое пространство документирования и хранилища аналитики, и этот инструмент тоже очень зашёл.
Одних инструментов недостаточно, важно менять также процессы и культуру. Сейчас мы экспериментируем с более плотным участием бэкенда в жизни продуктовых ML-команд, а в августе планируем провести общий Цельс-Фест с докладами и развлекухами. Раньше эта активность затрагивала только ML-отдел.
Внешняя прозрачность
Доклады и посты
Учитывая размер компании, мы вкладываем большое количество усилий в производство контента. Регулярный трек “Ужасы медицинских данных”, выступления на конфах, ТГ-каналы у меня и других ребят. Окупается ли это? Точных данных у меня нет, но по субъективным ощущениям нашу компанию знают даже многие ребята из бигтеха, и это сильно помогло несколько раз при найме - мне до сих пор пишут чуваки с вопросами о вакансиях в Цельсе. А ещё самим сотрудникам по кайфу, что они работают не в ноунейм-стартапе.
Помимо каких-то конкретных полезностей мне ещё хочется развивать индустрию в целом. Наша деятельность находится на стыке бизнеса и науки, а наука невозможна без коллаборации и шаринга знаний. Недавно в неформальной обстановке удалось поболтать с ребятами из нескольких компаний-конкурентов, и на уровне разрабов желание поделиться опытом намного больше, чем на уровне бизнеса, где есть склонность максимально скрывать свои “наработки”. Да, мы конкуренты, но я верю в общение и в совместное обогащение знаниями.
Общение с пользователями
Врачи обычно достаточно далеки от ML- и IT-мира, и коммуникация с ними - это отдельное искусство. Я очень люблю общаться с пользователями, рассказывать как о наших достижениях, так и о фейлах и известных дефектах. В последнее время мы пытаемся систематизировать эту работу - ведём ТГ-канал для врачей, встречаемся с врачами, слушаем фидбек и рассказываем о наших планах. Любопытно, что по моим наблюдениям врачам часто кайфовее общаться напрямую с разрабами, чем с “бизнесом”.
Release notes
Я давно мечтал о публичных модел-картах, которые бы публиковались в общем доступе после каждого релиза, но всё никак не доходили руки, да и некое сопротивление со стороны “бизнеса” присутствует. На CTO Day я пообщался с ребятами из сферы автономных автомобилей и вдохновился публичными репортами о тестированиях, которые они обязаны публиковать в силу потенциального вреда, который могут нанести их продукты. По итогу я наконец-то подготовил проект публичной карты релиза и хочу поделиться им с вами. Она ещё не до конца заполнена, но общая структура и большая часть информации присутствует. Буду очень рад фидбеку.
План на этот год - сопровождать каждый большой релиз публикацией такой карты - пользователям очень важно знать, чего ожидать от новой версией продукта, что улучшилось, и о каких проблемах мы уже в курсе. Конкретно для этого прототипа я использовал pretty jupyter. Может быть, немного неказисто, но функцию выполняет.