Канбан
Мне уже лет семь или восемь не даёт покоя то, как в айти исказили суть канбана. Нужно высказаться.
Канбан — это просто карточка, которую передавали на производстве Тойоты. Грубо говоря, когда рабочим при сборке двигателя нужны были поршни, они передавали канбан на линию по производству поршней. Линия не работала, пока на неё не пришёл канбан.
Такая карточка появилась не на ровном месте. Её придумали, чтобы уменьшить складские запасы "незавершёнки". Складские запасы нужно было уменьшать, чтобы лучше контролировать качество выпускаемой продукции. На эту тему можно почитать книгу Тайити Оно "Производственная система Тойоты".
Основная фишка канбана в том, что он превращает производственный процесс из push-based в pull-based (не знаю, как это сказать по-русски). В обычном процессе задачи на производство запихиваются в систему. При использовании канбана звенья системы сами ставят задачи на производство предыдущим звеньям.
Если переложить на айтишную реальность в лоб, то получилось бы что-то такое: 1. тестировщики начали проверять фичу "А" и сразу отправили запрос на разработку фичи "Б"; 2. разрабы начала писать фичу "Б" и сразу отправила запрос на требования по фиче "В"; 3. продакт начал прорабатывать фичу "В" и сразу отправил запрос бизнесу на генерирование идеи для фичи "Г".
Последнее звено производственного процесса — в данном случае тестирование — как бы вытягивает себе задачи из всей остальной системы.
Но в айти, когда команды "работают по канбану", они всё равно действуют по принципу push-based. Бизнес генерирует кучу идей и проталкивает их на продакта. Продакт описывает задачи и проталкивает их в разработку. Разрабы прогают задачи и пропихивают их в тестирование. Все что-то пихают, толкают и параллельно с этим пинают друг друга. При таком подходе к разработке от канбана остаётся только одно название, вся его суть при этом исчезает.
Да, некоторые команды ограничивают количество "work in progress". Но ограничение воспринимается как назойливое препятствие. То есть, добавляя лимиты по WIP, команды всё равно не меняют свою ментальную модель с push-based на pull-based.
В прошлых постах я использовал термин "канбан-доска" и каждый раз хотел добавить к нему приписку "мне не нравится этот термин, но он принят в сообществе, поэтому вот", но останавливал себя, чтобы не занудствовать. Позанудствую здесь.
Канбан-доска не имеет ничего общего с канбаном. Её удобно использовать, чтобы визуализировать процесс и находить бутылочные горлышки, но она не сможет превратить push-based процесс в pull-based. Чтобы по-настоящему использовать канбан, недостаточно настроить доску в джире, нужно поменять отношение ко всему процессу производства ПО.