Как (Agile) управлять довольно сложной ИТ PoC?

Я технический руководитель, работающий в гибкой ИТ-организации, где большинство команд используют Scrum.

Я уже 2 недели работаю над проверкой концепции услуги, которая является довольно крупной и сложной (несколько человеко-месяцев), и я единственный ресурс FTE, посвященный проекту. Пока мы ждем, пока поставщик предоставит нам подробную информацию, я начал проводить некоторую техническую проверку и сопоставлять требования с нашими возможностями, сопоставлять наши варианты использования с функциями и т. д. и т. д., и из этого процесса мне удалось для создания списка зависимостей, которые необходимо разрешить (некоторые предварительные условия, некоторые отложенные) среди других артефактов. Моя работа еще не слишком структурирована.

Похоже, что у моего менеджера (вице-президента и заместителя генерального директора) есть некоторые проблемы с этим.

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

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

Если бы это была небольшая тривиальная задача - я бы, наверное, так и сделал , но это довольно сложный проект со многими неизвестными. Каким (Agile) методологиям я должен следовать? Некоторые заметки.

  • Это PoC — он может не сработать (думаете, 3-месячный всплеск?). Если это сработает, он, скорее всего, возьмет на себя официальную команду Scrum.
  • Нам не хватает (в основном FTE) ресурсов.
  • Владельца продукта нет, но его роль берет на себя мой менеджер. Обязанности до сих пор кажутся «спонсорством» и принятием решений на высоком уровне.
  • У нас нет артефактов из процесса scrum (или дизайн-мышления и т. д.) — видение продукта/одностраничные страницы, пользовательские истории. Были некоторые обсуждения с поставщиком на очень раннем этапе (но я не присутствовал на них) - у меня не так много материала для работы, кроме задачи по доставке PoC и некоторой документации поставщика.
  • Есть команда из 1 - я, инженер FTE, который также носит дизайн/технологию решения. головные уборы руководства/владельца продукта, а также скрам-мастера, когда дела пойдут на лад. (Я чувствую, что здесь нужно разрешить несколько конфликтов интересов).
  • Поскольку я знаком с этим, я склонен использовать какую-то облегченную форму схватки для обычных преимуществ, но, возможно, без некоторых «накладных расходов» церемоний.
Я немного смущен. Вы упомянули создание PoC. PoC — это эксперимент, но вы, похоже, хотите относиться к нему как к полноценному проекту с предварительным планированием. Ваш PO, кажется, хочет, чтобы вы просто построили что-то как можно скорее. Я думаю, что здесь есть разрыв: возможно, вы оба не договорились о том, каким должен быть результат этого PoC и на каком уровне качества он будет построен. Что касается использования Scrum, если вы работаете в команде, состоящей из одного человека и, возможно, еще одного человека, носящего множество шляп, Scrum не будет работать так хорошо, особенно при построении реального эксперимента, если это то, что представляет собой PoC.
@Bogdan - верно, это PoC типа технико-экономического обоснования, но это корпоративное приложение, которое достаточно сложно (приблизительно 60-90 человеко-дней) для развертывания и оценки, поэтому все упражнение необходимо разбить на небольшие куски работы, размер, расставить приоритеты, измерить и т. д. — потребуется что-то вроде Scrum. Вы правы в том, что результаты или критерии выхода не определены — это то, над чем мы должны работать.
@shalomb, для каждого действия, которое вы вводите, у вас должно быть четкое понимание, зачем оно вам нужно. Большую часть времени люди просто следуют за толпой, делая то же, что и все остальные, и это очень неэффективно. Если вы начнете мыслить критически (почему именно мне нужно оценивать? почему именно мне нужно измерять?), вы можете обнаружить, что многие из этих действий не нужны в вашей ситуации.

Ответы (2)

Как я упоминал в комментарии выше, вы и ваш менеджер/заместитель PO должны согласовать результаты этого PoC. Вам необходимо определить цели реализации, иначе вы рискуете работать над достижением разных целей. Также обсудите, какова будет роль каждого в этом. Судя по вопросу, вы хотите, чтобы он был PO, в то время как он хочет, чтобы вы больше взаимодействовали с заинтересованными сторонами.

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

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

Скрам достаточно гибок для большинства задач, но у него есть и жесткая часть: спринт. Это задает ритм для многих действий. Многие заинтересованные стороны взаимодействуют со Скрам-командой во время обзорной встречи, то есть один раз за спринт. Вы строите PoC, технико-экономический эксперимент, чтобы проверить что-то. Достаточно ли собрать отзыв один раз за спринт, или вам нужен отзыв раньше?

У вас также есть ретроспективная встреча. Вы используете это, чтобы улучшить свою работу. Важно ли это при создании PoC? Или вас интересует только PoC? Я не обязательно говорю, что вы должны идти в ковбойском стиле и стрелять от бедра, но вы действительно хотите много вкладывать в процесс? Будет ли этот PoC одноразовым после того, как вы подтвердите/аннулируете идею, или вы создадите настоящее приложение поверх него? Например, нужно ли вам определение «Готово»? Вы хотите, чтобы этот PoC считался успешным только в том случае, если каждая строка кода была проверена, или если у вас есть хороший охват модульных тестов? Да? Нет? Если PoC будет успешным, и позже вы сможете реализовать реальное приложение, вы можете сосредоточиться на своем процессе. С PoC типа «вынести вещь за дверь как можно быстрее» вы, вероятно, выиграете.

В Scrum также есть собрание по планированию спринта. Вы оцениваете, какую работу вы можете выполнить в следующем спринте. Вы ставите цель спринта. Вы создаете выпускаемый инкремент каждый спринт. Вы пытаетесь сохранить масштаб неизменным во время спринта. Имеет ли это смысл для работы, которую вы делаете? PoC — это минимально жизнеспособное решение. Меньше, и это не поможет вам подтвердить/опровергнуть ваши предположения. Еще немного, и это уже не просто PoC. Будут ли инкременты доступны для выпуска? Если вы обнаружите что-то, что полностью изменит ваш объем работы в спринте, что вы будете делать со спринтом? Отменить? Придерживаться цели спринта? Если вы планируете свой спринт и на следующий день понимаете, что вам нужно сделать что-то другое, вы просто тратите время на планирование, а вы могли бы поработать над реализацией PoC.

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

Я мог бы придумать и другие причины, но это уже затянулось. Итак, как насчет альтернативы Scrum?

Я бы лично управлял этим с помощью Канбана.

Разместите все на доске, чтобы иметь представление о том, что вы делаете. Выполнение Канбана сделает всех более вовлеченными. Взаимодействие происходит чаще, а не в ритме спринта.

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

Вместо того, чтобы оценивать каждую задачу, просто сосредоточьтесь на том, что важно, где вы находитесь, что делаете, где вам нужно быть дальше. Многие вещи на вашей доске будут обязательными для выполнения, иначе PoC не будет служить своей цели. Нет смысла их оценивать, это пустая трата времени. Оценивайте, когда вам это нужно (например, выбирая между двумя вариантами и выбирая тот, который быстрее, вы оцениваете усилия, чтобы понять, что выбрать).

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

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

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

Вполне возможно, что это один из самых полезных ответов, которые я читал на этом сайте!
« Поместите все на доску » — какие столбцы будут на доске? Это только TODO и DONE, что в основном представляет собой контрольный список. « Установите ограничения WIP на вещи, чтобы вы не работали над слишком многими вещами одновременно » — зачем ему работать более чем над одной вещью за раз? 2+ одновременных задач появляются, когда вы сотрудничаете с кем-то. Ни Scrum, ни Kanban не нужны для работы с одним человеком.
@Станислав Башкирцев: ОП создаст любые столбцы, которые он сочтет необходимыми для управления своей работой. В вопросе упоминается ожидание поставщиков, взаимодействие с заинтересованными сторонами, этапы оценки, управление зависимостями и то, что PoC — не маленькая тривиальная задача. Вы не можете справиться со всем этим взаимодействием с TODO и DONE. Никто не работает в вакууме сам по себе. Кроме того, доска является информационным излучателем, который может видеть менеджер ОП, у которого в противном случае может возникнуть соблазн постоянно перебивать и спрашивать: «Что ты сейчас делаешь?» и "мы уже там?"
@Stanislav Bashkyrtsev: у людей лимит WIP равен 1, потому что мы не можем работать в режиме многозадачности. Но мы можем использовать мультипереключатель. Пока ОП работает над чем-то, он может ждать ввода данных от заинтересованного лица или исправления зависимости поставщиком. Когда эти вещи станут доступны, он может переключиться на включение ввода или проверить зависимость. Внезапно вы обнаружите, что у вас куча дел в процессе, но ни одно из них не завершено. Надлежащая доска с лимитами WIP (1 или другой) находится «перед вашим лицом» и напоминает вам, что, возможно, вам следует закончить некоторые вещи, прежде чем начинать работать над чем-то другим.
@Bogdan, большую часть того, что вы сказали, можно выполнить с ручкой, бумагой и двумя списками: общий план и краткосрочный план (сегодня/завтра действия, которые включают «ожидание ответа от X и Y»). А что касается наглядности - 5-минутных совещаний по статусу каждый день или два будет достаточно (вам это нужно в любом случае, чтобы получить информацию/отзывы от других). Внедрение процессов разработки здесь похоже на охоту на муху с базукой. Весь этот вопрос касается не управления проектами — речь идет о самодисциплине, тайм-менеджменте, архитектуре программного обеспечения, инженерии и т. д.
@StanislavBashkyrtsev: Канбан — это набор принципов здравого смысла, которые можно пересчитать по пальцам одной руки. Это не процесс. Я не предлагаю переборщить с этим и превратить все в тяжелый процесс управления разработкой, который полностью сведет на нет цель использования Канбана, я просто предлагаю минимальную настройку, чтобы получить представление о работе и помочь ее организовать. Scrum - не лучший выбор здесь, но я не верю, что «просто сделайте это», как вы предлагаете в своем ответе и комментариях. Я за средний вариант.
@Bogdan, другое название Канбана (кстати, «Канбан» — это трехмерное имя, которое было взято по ошибке — мы должны говорить «точно в срок») — это система вытягивания. Кого-то надо тянуть . Это решает проблему синхронизации нескольких объектов (людей/отделов/команд), работающих одновременно , и передачи результатов их работы друг другу. Вам не нужен Just-in-time в случае последовательного потока из 1 человека - в такой настройке не существует проблем, которые решает Just-in-time. Что касается терминологии. Я бы назвал Lean набором принципов, а Just-in-time — процессом. Не уверен, что это важно в этом обсуждении.
@StanislavBashkyrtsev: Это хорошее наблюдение о сильных сторонах Канбана, но оно не отменяет полезности его принципов только для одного человека, организующего свою работу. См., например , Персональный канбан . Я не большой поклонник этой книги, но в ней есть несколько хороших объяснений того, почему вы можете предпочесть этот подход спискам, ручке и бумаге.

Я не понимаю, почему вы начали думать о Scrum здесь. Или любой другой командный процесс. Вам не нужна координация или встречи или что-то еще. Потратьте эти 3 месяца на то, что важно. Типичный ученый/инженер сначала потратит время на то, чтобы понять проблему, затем спланирует, как ее решить, а затем закатает рукава, поэтому:

  1. Исследуйте домен. Ознакомьтесь с терминологией, чтобы иметь возможность общаться с заинтересованными сторонами.
  2. Найдите самые рискованные части требований и нарисуйте макеты/диаграммы.
  3. Затем определите, какие макеты/диаграммы вы можете реализовать и каковы между ними зависимости.
  4. Тогда просто сделайте это!

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

Scrum используется по умолчанию, потому что организация широко использует его и будет средством доставки после PoC - привлечение членов команды позже, если это необходимо (весьма вероятно), проще. Это рассматривается сейчас, потому что нам нужно иметь возможность своевременно определять объем и оценку работы, расставлять приоритеты и демонстрировать прогресс и правильность курса с помощью « годен/не годен» на регулярных контрольных точках. Здесь есть несколько хороших советов, но я не согласен с подходом «мини-водопад», потому что «просто сделай это» без непрерывного измерения — это то, что неизбежно приведет к маршам смерти ближе к решающему моменту — я стараюсь избегать этого.
@shalomb (1) Я не знаю, меняет ли это что-нибудь в этом обсуждении, но Scrum немного устарел. Современные методы: Теория ограничений, Точно в срок (он же Канбан), Непрерывная доставка и их сочетание. (2) Даже если вы решите внедрить Scrum, когда начнете создавать команду, дальше это не будет сложнее. (3) Я не упомянул водопад в своем ответе («мини» или нет). Любой хороший инженерный/научный процесс представляет собой цикл, состоящий из планирования->сделать->сделать выводы->повторить. (4) В Scrum нет встроенного «непрерывного измерения». У него даже нет метрик для измерения.
@shalomb Я бы также попытался хотя бы подумать о том, что ваш менеджер прав в отношении вашего текущего подхода. Похоже, он хочет, чтобы вы были взрослым разработчиком и возглавили проект. Для этого вам нужно понять предметную область и поговорить с заинтересованными сторонами. И из того, что (и как) вы пишете, кажется, что он что-то понял насчет того, что «мой критический подход может быть признаком пессимизма». Вы, кажется, слишком много думаете и слишком усложняете вещи.
@Stansilav - мне нужен ответственный подход, чтобы убедиться, что PoC выдерживает и не работает по правильным причинам (то есть не терпит неудачу из-за неадекватной структуры и поддержки). Если бы это был PoC для глупого веб-приложения для носков, я бы склонялся к подходу «просто сделай это» . Суть моего вопроса заключается в том, чтобы уловить сложность предметной области и рассуждать на местах, будучи прагматичным, — чтобы быть в курсе всего этого, требуется огромный умственный рабочий набор, который должен быть вне моей головы и доступным для заинтересованного лица (и, что более важно, для меня самого ) . , потому что я не помню подробностей еще с прошлой недели).