{"id":14276,"url":"\/distributions\/14276\/click?bit=1&hash=721b78297d313f451e61a17537482715c74771bae8c8ce438ed30c5ac3bb4196","title":"\u0418\u043d\u0432\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0432\u0430\u0440 \u0438\u043b\u0438 \u0443\u0441\u043b\u0443\u0433\u0443 \u0431\u0435\u0437 \u0431\u0438\u0440\u0436\u0438","buttonText":"","imageUuid":""}

Жертвы Agile: почему гибкая методология разработки губит крупный бизнес и помогает малому

Генеральный директор компании Accera, консультант по Agile, DevOps и Digital Transformation Анатолий Шеин написал для vc.ru колонку о том, почему гибкая методология разработки может полностью остановить работу крупного бизнеса, но подходит маленьким стартапам.

Анатолий Шеин

Жертвы Agile

Периодически мою ленту в Facebook заполняет поток претензий к некорректной работе банковских сервисов. Обычно жалобы пользователей становятся ответом на плановые релизы — обновления и «улучшения» интернет-банков и мобильных приложений.

Сегодня банки почти повально перешли на работу по гибким методологиям и, разом отказавшись от привычной и проверенной Waterfall, внедряют, почти не глядя, Agile. Это не просто модно — это инновационно, и это же реально работает во многих крутых компаниях. По Agile работают в Кремниевой долине, Facebook, Google, Uber. Да и в России на него подсаживаются не только ИТ-компании, но и, например, Министерство образования и Правительство Москвы.

Искушение для банков, естественно, очень велико. Особенно, учитывая тот факт, что глава самого крупного из них говорит о дигитализации и внедрении Agile не только на отраслевых площадках, но и на центральном телевидении.

Секрет успеха Agile

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

Совсем по-другому обстояло дело у глобального поставщика телекоммуникационных систем. Компания была на грани срыва поставки нескольких проектов обновления ПО общей стоимостью более $1 миллиона. Причина проста — перевод нескольких компонентов на систему постоянной интеграции. До запуска интеграционных тестов с реальной базой данных все работало хорошо, и, конечно же, все полетело, когда данные были обновлены.

Это не случайность — Agile отлично работает в стартапах, маленьких командах, но на больших проектах, как правило, приводит к большим проблемам: отсрочкам запуска на месяцы и даже полному провалу.

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

На первый взгляд, отлично, однако на самом деле работы у Quality Assurance реально прибавляется, так как при уменьшении количества проблем в три раза скорость поставки увеличивается в 200 раз. Простая математика, и результат не такой уж обнадеживающий — общее количество проблем увеличивается более чем в 60 раз. Очевидно, что при такой нагрузке служба не справляется с тестированием — пропускает серьезные ошибки, не успевает проверить работу системы в целом и прочее.

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

В больших же компаниях работает много людей, и большинство из них — это средние специалисты. Конечно, каждый работодатель стремится к тому, чтобы брать к себе лучших, и HR-служба действительно старается. Однако статистика — штука строгая, но справедливая — все лучшие очень быстро делятся на хороших, средних и не очень хороших. И в конце концов все работают как среднестатистические специалисты. В этом случае проекты будут работать хорошо, только если сама методология это позволяет. Потому что при таком раскладе уже нельзя полностью полагаться на хорошую работу сотрудников.

Да, вышеупомянутые Google, Facebook и Uber — это большие компании. И да, они тоже подвержены «болезням» Agile — время от времени все мы это видим сами или читаем жалобы других пользователей — вчера сервис не работал полдня, сегодня был недоступен полчаса и так далее. Но в этих компаниях цепочки работают почти безупречно, и в случае возникновения проблем команда устраняет их очень быстро. Хотя сейчас проблем становится все больше, и даже в условиях четко отлаженной коммуникации сроки их устранения увеличиваются.

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

Agile-провалы больших компаний

Agile очень привлекателен, и перед ним не смогли устоять не только российские банки, но и многие крупные мировые бренды. И почти все они потерпели неудачу или даже хуже.

Например, в июле 2015 года торги на Нью-Йоркской фондовой бирже были остановлены на четыре часа. Первоначальная версия сбоя основывалась на кибератаке, но проблема оказалась всего-навсего в баге во время очередного обновления. Сложно даже представить, во сколько миллиардов обошлись эти четыре часа простоя центра мировой торговли.

Ладно брокеры — сейчас потеряли миллиард, потом заработали два. Но у авиакомпаний совсем другая история. Примерно так же после банального обновления ПО авиакомпании «Дельта» информация перестала поступать в диспетчерскую систему, и все рейсы пришлось отменить. И здесь, кроме прямых убытков, у авиакомпании возникли репутационные проблемы.

Наверное, один из самых громких провалов применения Agile — это запуск известной американской системы медицинского страхования Obama Care.

Для тех, кто не знает, поясню, что суть этой программы заключалась в предоставлении бесплатных страховых полисов для определенных категорий граждан США.

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

Obama Care «полетела» примерно через полгода после запуска. Для того, чтобы все заработало, пришлось пригласить внешнего специалиста-консультанта, который смог оценить картину целиком и, начав с конца — с продакшена, постепенно собирал части системы воедино и все-таки добился слаженной работы.

Ловушка Agile

Agile вполне успешно решает проблему Time Delivery. Ловушка в том, что он решает проблему скорости, упуская при этом вопрос качества выпускаемого продукта. В случае Obama Care, и это типичный случай, над проектом работало много людей — несколько больших групп — программисты, специалисты, которые отвечали за работу серверов, представители страховых компаний и другие. И на самом деле каждый сделал свою работу хорошо — каждая часть по отдельности работала. Но все вместе распадалось на части и не летело.

В моей практике таких проблем не было ни в одном из многочисленных стартапов, однако случалось практически в каждом большом проекте. Например, один из проектов, в котором мы принимали участие, объединял порядка десятка систем — от CRM до системы выставления счетов клиентам. Каждая из аппликаций прошла комплексные тесты, и, тем не менее, всё сломалось в интеграционной среде, где эти системы встретились в первый раз.

Философия Agile открытым текстом говорит о том, что гарантом успешности разработки является коллективная ответственность, в отличие от Waterfall, где за качество продукта отвечают специально обученные люди. Кроме того, при использовании гибкой методологии проверка качества должна быть максимально автоматизирована, чтобы вся работа уложилась в короткие сроки двухнедельного спринта.

Для сравнения, при работе по Waterfall тестирование происходит в самом конце — код стабилизируется (code freeze) и все изменения и доработки исключены (кроме исправления ошибок). И после этого процесс проверки занимает по времени от нескольких месяцев до полугода.

Из главных принципов Agile вытекают и главные проблемы.

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

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

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

P. S. Справедливости ради стоит отметить, что такие проблемы существуют не только в российских банках. Когда я закончил писать эту статью, то зашел на сайт своего банка в Израиле, и тот оказался недоступен.

0
93 комментария
Написать комментарий...
Ilya Gorozhankin

Согласен с автором.

Интересно, сколько еще денег должно быть потеряно, репутаций разрушено а продуктов не выпущено, чтобы в it наконец отказались от этой заведомо дефективной, полностью оторванной от реальности, нелепой методологии?

Я не верю в способность наших современников придумать что-то принципиально новое и при этом эффективное в области организации труда.

То, что эти "новые методики" не использовались раньше, свидетельствует о их явной неэффективности. В противном случае Agile и прочий шлак придумал и успешно внедрил бы ещё Генри Форд, а то и Карнеги.

Ответить
Развернуть ветку
Алексей Томин

Ещё раз повторю вопрос- а какая альтернатива?
Водопад? RUP? Без процесса?

Ответить
Развернуть ветку
Ilya Gorozhankin

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

Разумеется, никакая методология сама по себе задач не решает. Но в рамках Водопада реализовать грамотное планирование и качественное производство гораздо проще.

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

Ответить
Развернуть ветку
Ivan Trechyokas

Но ведь Agile тоже не собирается параллельно строить мансарду и первый этаж.

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

В вашем же случае: мансарда не имеет ценность без пути к ней, первый этаж - тоже не имеет ценности, так как непонятна его планировка. Поэтому первым делом будет взят Заказчик дома, хорошие специалисты и будет обговорён некоторый план того, что он хочет (получит некий Backlog), и наиболее важные моменты, которые нужны нам на ближайший спринт (Product backlog). Никто не будет строить параллельно разные части дома, или менять местами причинно следственные связи в этом мире только потому, что это Agile.

Принципы Agile можно прочитать тут: http://agilemanifesto.org/iso/ru/principles.html

Картинку посмотреть, и статью прочитать о том, как разрабатывается продукт по Agie, можно прочитать тут: http://netology.ru/blog/loveagile

Ответить
Развернуть ветку
Ilya Gorozhankin

Смотрел я эти принципы. :-)

"Изменение требований приветствуется, даже на поздних стадиях разработки." Т.е. начали строить пятиэтажный многоквартирный дом, не имея на руках законченного проекта. Достроили до четвертого этажа. Внезапно поняли, что квартиры у всех уже есть, дом не нужен, надо строить аквапарк.

По поводу второй ссылки: "Предположим, тестировщики нашли в продукте серьезные ошибки, и его нужно перепроектировать." Т.е. за все этапы ДО тестирования отвечали кретины, которые позволили критическим, фатальным ошибкам пройти стадию анализа, планирования и разработки?! Боюсь, такой команде никакая методология не поможет.

Подобные "ошибки" лечатся наличием профессионалов на каждом этапе, которые внимательно, не торопясь делают свою работу. И несут за неё личную ответственность.

Ответить
Развернуть ветку
Ivan Trechyokas

Как тестированию, скажу вам интересную статистику: там где были аналитики, которые-то генерировали требования и описание задач на спирт! (То есть не очень большие задачи), разработчики часто интерпретировались требования неправильно! Они даже не общались с аналитиками по этому поводу, потому что считали, что поняли все правильно. - каждая третья задача, уровень недопонимания отличается: от мелких правок, до изменения логики.
А представьте в waterfall на полгода-год. Через год оказывается, что ты неправильно понял требования и сделал не так. Тадам!

Ответить
Развернуть ветку
Ilya Gorozhankin

Пример по существу, такая проблема имеет место. Но это не вопрос методологии, это вопрос организации нормальной коммуникации внутри компании, сфера ответственности менеджеров.

Я сам часто сталкивался с ленью (нежеланием обсуждать), а то и стремлением самовольно "улучшать" со стороны разработчиков. Лечится максимально точными формулировками, нормальной постановкой задачи (подробное описание, чек-листы, интерактивный прототип) и ежедневным наблюдением над процессом.

Нормальный менеджер изначально должен исходить из того, что задачу поймут неправильно, смотреть на её формулировку прежде всего под этим углом, замечать и устранять невнятные формулировки.

Ответить
Развернуть ветку
Ivan Trechyokas

Просто у вас другая точка зрения, тоже имеет место быть. Все зависит от цели, которую мы хотим достич.

Пожалуй добавлю целый абзац из последней книги, которую я прочитал о командной работе:
"Как все это связано со следующим пороком – безразличием к результатам? Если члены команды не несут ответственности за свой вклад в общее дело, то они больше внимания уделяют своим собственным делам, своей карьере. Именно с отсутствия требовательности и взаимного контроля начинается равнодушие к успеху команды и безразличие к достижению результатов."
( Пять пороков команды. Притчи о лидерстве. )

Ответить
Развернуть ветку
Ilya Gorozhankin

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

Стремление уделять повышенное внимание своим делам и своей карьере естественно и нормально. Не стоит идеализировать людей и пытаться менять их приоритеты.

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

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

Ответить
Развернуть ветку
90 комментариев
Раскрывать всегда