Меня зовут Иванов Алексей. Я DS и скрам-мастер в центре ML-экспертизы разработчика HRtech-решений TalentTech. Мы занимаемся обучением моделей для проектов компании. 

Ровно год назад наша команда самоорганизовалась и начала  применять подход scrum (будем дальше  — скрам.) Я расскажу о наших внутренних процессах: что произошло, что происходит и, возможно, будет происходить с нами в ближайшем будущем.

Запуск получился на удивление простым. Встретились командой, обсудили общее видение, за неделю сформировали backlog и запустили первый спринт. На ретро обсудили первые впечатления и результаты, запустили второй. Сформировали за несколько итераций календарь — сгруппировали встречи в блоки. Созвоны с заказчиками втиснули между внутренним demo и планированием спринта. Чтобы была возможность не только разговаривать, но и работать, понедельник, вторник и среду оставили вообще без встреч (кроме standup). Таким образом, мы вошли в ритм за пару месяцев. Процесс стал по-настоящему нашим. Помню, когда на OKR обсуждали процессные цели, кто-то заметил: «А зачем их ставить? Мы и так уже работаем по скраму». 

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

Перевернутое целеполагание и скрытые процессы

Углубляясь в детали, можно заметить, что скрам у нас не совсем канонический. Есть несколько заказчиков и, как следствие, перевернутое целеполагание. Мы идем не от цели к задачам, а наоборот. Что нужно сделать по каждому из проектов, обсуждается на созвонах с конкретными заказчиками. Потом эти договоренности на PBR превращаются в задачи, отвечающие Definition of Ready, и добавляются в backlog. Потом с учетом капасити команды формируется scope спринта. Цель на ближайшие две недели возникает только после этого. На первый взгляд, абсурд, с чего бы задачам из разных источников компоноваться в единое целое. Про какой-то спринт мы говорим, что возвращаемся к старым проектам («вьетнамские флешбеки»), в какой-то мы решили поработать на качество и делать задачи в соответствии с DoD’ом («кафе у DoD’а»).  Обнаруженная цель закрепляется в метафорических названиях спринта (это они даны в скобках) и, если она выявлена правильно, вызывает эмоции почти у всех членов команды. 

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

Сейчас мы понимаем, что это решение было верным. Внимание к качеству восстановилось, и команда начала наращивать объемы. Если в проблемные спринты брали 35-40 стори поинтов и делали 20 вчетвером, то сейчас 8 sp на человека ощущается вполне комфортным. 

Про лидерство

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

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

Что актуально сейчас

В последнее время все больше внимания начинает привлекать работа с OKR. Мы отсортировали цели по их важности для заказчиков и удалили второстепенные. Да и сами цели были реструктуризированы. Модели,  которые используются, но нами активно не развиваются, выделили в отдельный блок. В них мы чиним редкие баги и иногда прикручиваем мелкие фичи. К сожалению, в R&D-блоках цели по-прежнему выглядят как задачи, а список результатов — как список дел. Возможно, в следующем квартале попытаемся с этим что-то сделать, а пока —  запустили синхронизацию со спринтами. В шаблон презентации к демо добавили слайд про апдейт прогресса по OKR. Есть надежда, что в будущем OKR начнуть выполнять свою первоочередную функцию — синхронизировать нас с компанией. 

Процесс генерации идей, кстати, тоже привлекает внимание. В DS много исследовательской работы, и требует отдельного осмысления, как ее упаковывать в backlog. С одной стороны, по канонам скрама, задачи в backlog должны быть всем понятны, а результат предсказуем. С другой — research предполагает, что мы не знаем, что должно быть на выходе. Сейчас основной тип задач — это ML-эксперименты. Попробовать что-то поменять в модельке (архитектуру, процедуру очистки данных и т.п.) и снять метрики. Есть тип задач на поиск новых решений с составлением краткого отчета, но пока основные идеи рождаются либо из фонового чтения «Медиума», либо из «полулегальных» экспериментов. Полулегальных в том смысле, что делаются в рамках задачи, в которой они не подразумеваются. К примеру, задача была выполнить факторный анализ и предполагала просто fit-predict, но в процессе оказалось, что моделька отработала плохо. Пришлось изучать вопрос глубже. С polychoric correlations удалось разобраться за спринт, а confirmatory factor analysis оказался слишком сложным, и он ушел в отдельную задачку. Или, например, было необходимо дообучить BERT на задаче next sentence prediction, а корпус почти целиком состоял из сообщений в одно предложение. В итоге пришлось погрузиться  в BERT’ологию и обучить TSDAE.

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

Комментарии (3)


  1. sena1101
    19.11.2021 22:48

    То, что вы описали назвать SCRUM нельзя. Вы изобрели какой-то собственный фреймворк. Теперь он у вас не работает как надо, и вы от этого страдаете. Вы, как Скрам Мастер, не выполняете свои обязанности (commitments). Accountabilities в вашей команде не соответствуют Scrum. То, на чём базируется Scrum (pillars: Transparency, Inspection, Adaptation) у вас вообще не проглядывается. Где ваш Product Owner? Ваш Продукт Бэклог в полной заднице.Что с вашими Commitments? Где они? Scrum основан на Lean thinking и Empiricism, у вас этого вообще нет. Ребят, надо вам подучиться. Нельзя взять какие-то отдельные элементы из Скрам и быть уверенным, что вы используете Скрам. Нет, это так не работает. Вы не получите ожидаемого результата. В скором времени команда деградирует и уровень фрустрации будет запредельным.


    1. iivvaall Автор
      20.11.2021 01:44

      Я менее категоричен: на мой глаз у нас адаптация скрама под наши реалии.

      Мы пилим разные модельки для разных заказчиков. У нас нет единого продукта и, как следствие, канонического Product Owner'а. Есть начальник и его работа в этой статье осталась за кадром. Я не настолько в нее погружен, чтобы о ней писать. Например, здесь ни слова не сказано про то, откуда заказчики появляются.

      Сам факт появления этой статьи говорит, что некоторый уровень Transparency у нас таки есть. Что и как мы делаем мы регулярно обсуждаем между собой и с заказчиками (Inspection). Про отсутcвие Adaptation не понял, откуда вывод.

      C backlog'ом и правда есть некоторые проблемы. Он кажется пустоватым, а PBR в середине спринта часто выглядит скучным. Симптомом чего это является и как с этим обходится я пока не знаю.

      Про Commitments. Команда ответвтенность за результаты спринта на себя берет. Я, как scrum master, за процессами присматриваю. Уровень фрустрации я оцениваю как повышенный, но надежда жива и вполне обоснованна. За последний год мы все-таки подрасли. Как в техническом, так и в организационном плане.

      А c подучиться я полностью согласен. Это лишним не бывает :)


      1. sena1101
        26.11.2021 16:50

        У вас никакой адаптации не произошло. Вы просто не понимаете саму суть Scrum.

        " У нас нет единого продукта и, как следствие, канонического Product Owner'а." - сделайте для каждого продукта свой бэклог. Если у вас нет Продук Оунера, у вас нет Скрам.

        "Сам факт появления этой статьи говорит, что некоторый уровень Transparency у нас таки есть." - это предложение полностью подтверждает, что вы вообще не понимаете Скрам. Transperancy в Cкрам достигается за счёт Artifacts: Product Backlog, Sprint Backlog, Increment. При чём тут статьи на Хабре?

        "C backlog'ом и правда есть некоторые проблемы. Он кажется пустоватым, а PBR в середине спринта часто выглядит скучным. Симптомом чего это является и как с этим обходится я пока не знаю." - я вам подскажу, даже за бесплатно. У вас проблемы с бэклогом, потому что у вас нет Продук Оунера. Это симптом полного непонимания как работает Скрам.

        "Про Commitments. Команда ответвтенность за результаты спринта на себя берет. Я, как scrum master, за процессами присматриваю." - Опять же вы вообще не понимаете НИЧЕГО. Commitments в Скрам это: Product Goal, Sprint Goal и Definition Of Done. При чём тут ответственность за результаты спринта? Какие у вас могут быть результаты, если у вас нет целей и definition of done? Как вы определяете, что вы достигли цели спринта? Как вы можете быть уверенными, что произвели рабочий инкремент за спринт? За какими вы процессами присматриваете, как Скрам Мастер? Скрам Мастер не должен присматривать за процессами. Скрам Мастер должен учить Скрам Команду СКРАМУ. "The Scrum Master is accountable for establishing Scrum as defined in the Scrum Guide. They do this by helping everyone understand Scrum theory and practice, both within the Scrum Team and the organization." Как вы можете учить Скрам свою команду, если вы даже не владеете терминологией? "The Scrum Master serves the Scrum Team in several ways, including: ● Coaching the team members in self-management and cross-functionality; ● Helping the Scrum Team focus on creating high-value Increments that meet the Definition of Done; ● Causing the removal of impediments to the Scrum Team’s progress; and, ● Ensuring that all Scrum events take place and are positive, productive, and kept within the timebox." - где вы тут видите "присматривает за процессами"?