Agile снаружи, дерьмо внутри
Популярная история, которую я наблюдал не раз и не два, выглядит примерно так: к команде разработчиков, которые работали до этого вообще абы как, приходит руководство (или в совсем тяжелой ситуации – Agile-коуч) и говорит, что теперь мы работаем по Scrum/Kanban/etc. "Давайте, – говорит, – возьмем Jira, будем там вести задачи, будем делать демо и ретроспективы, и тогда станем настолько гибкими, что сможем садиться в шпагат между грузовиками как Ван Дамм!". В ответ он получает вялые отклики сотрудников, но деваться им некуда – если пришёл босс и сказал самоорганизоваться, то значит надо. И вот Jira заполняется несметным количеством карточек, которые программисты могут в какой-то момент даже достаточно быстро начать двигать по доске с энтузиазмом. Однако, затем скорость разработки драматически падает, а затем падает и качество работы. Дальше у кого-то сдают нервы, кто-то спивается, а кто-то увольняется. Разработка останавливается. Такая вот драматическая история.
Я долго думал, что что-то не так в консерватории – стулья, может, надо переставить? Долго сам раньше пытался осознать, где лежит проблема – менял процесс, вводил практики и т.д. Какие-то шаги помогали, какие-то – нет. Потом, конечно, послушал подкаст великолепного Олега Сороки про дисфункции организации и понял, что проблема всё же не в спринтах. Но в чём? Все точки сошлись воедино, когда дочитал наконец "Чистый Agile". Немалую часть книги Роберт Мартин озвучивал
практики и принципы методологии экстремального программирования (XP), которая была предшественником Agile, а затем ловко завернул аргументацию так, будто бы принципы XP важны для любой Agile-методологии. И вроде бы это манипуляция в чистом виде, но чёрт возьми, он прав! Что, ничего не поняли? Сейчас объясню.
Когда кто-то выбирает методологию, по которой будет работать команда, он чаще всего выбирает фасад, которым он будет прикрывать перед заказчиком тот колхоз, который происходит у разработчиков. При этом часто никто не обращает внимание на принципы методологии и её ограничения, на зрелость команды – просто берут и вводят какие-то элементы и говорят, что теперь мы работаем по двухнедельным итерациям и раз в месяц общаемся на ретро. При этом все попытки донести, что нам нужно осознанно замедлять разработку для поддержания определенной планки качества (пишем тесты, рефакторим, продумываем решения) и благодаря этому получать
действительно гибкий продукт, проходят мимо ушей. Если всего этого нет, то заказчик обычно тратит огромные деньги на команды и получает красивые отчёты на почту раз в неделю, но рабочего стабильного продукта так и не видит – потому что невозможно из дерьма слепить конфетку.
Что обеспечивает жизнеспособность любой гибкой методологии – профессиональное мастерство и ответственность за результат каждого члена команды. Кроме того, немаловажным является принятие принципов Agile каждым членом команды – они достаточно просты, но порой почему-то упорно игнорируются. Когда команда выбирает лишь ширму, которой она будет прикрывать непотребства, но не думает о качестве продукта и своей работы, то всё становится весьма скверно – получается, что она пытается починить непрофессионализм спринтами, хотя самое верное решение – научиться/уволиться отстающим коллегам и начать уже
делать нормально, пусть и ценой некоторого замедления. Зато в долгосрочной перспективе работа не остановится.