Автор статьи: Дмитрий Курдюмов

Участвовал в Аджайл-трансформациях в крупнейших компаниях в России (Альфа банк, МТС, Х5 retail group), с международным опытом в стартапе зарубежом.

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

Как с этими проблемами помогает справится Agile?

Но сначала — об основных основных ошибках, которые приводят к этому:

  1. Закомитимся сразу на длительный проект, зафиксируем объем, бюджет и сроки.

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

  2. Привлечем больше ресурсов — закончим в срок.

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

Что имеем в итоге?

Проект замедляется. Сроки переносятся. Бюджет растет. Гарантировать попадание в срок по-прежнему невозможно. Заказчик недоволен изменением условий. Лояльность и доверие начинает быстро снижатся. 

Данные паттерны — коммит на объем, бюджет и сроки не работают, когда мы говорим о создании чего-то нового. Уровень неопределенности всегда будет высоким и поэтому вместо того, чтобы обещать на старте сделать все, Agile подход предлагает более гибкое сотрудничество с заказчиком, обеспечивая стабильность и предсказуемость.

Предлагаю рассмотреть гибридный подход к реализации проекта с помощью философии Agile:

Вместо того, чтобы коммититься на бюджет сроки и объём, на весь проект, мы будем двигаться циклами по 2-3 месяца и объем работы на цикл жестко не фиксировать. Что это нам даст? Во-первых, сразу коммититься на весь проект —довольно рискованно, так как ни заказчик, ни команда еще не знает, сколько подводных камней будет на пути. Даже если и заказчик декларирует, что у него сформирована картина, то все равно он ее будет менять по ходу разработки и первой обратной связи с рынка.

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

Как это реализовать на практике?

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

2. Коммититься мы будем не на все 3 стороны, а на две — зафиксируем бюджет и сроки (бюджет на команду на цикл, срок — длина цикла), а объём оставим гибким. То есть в начале мы обсудим основные задачи, составим беклог, приоритизируем его, выделим самое важное.

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

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

Таким образом, что мы имеем:

  • Фиксированый бюджет на цикл.

  • Фиксированный срок (2-3 месяца).

  • Гибкий объём работ, который можем менять.

  • Прозрачность для заказчика.

Что ещё:

  1. Самое важное, что в такой модели, с одной стороны, у вас управляемый расход бюджета, понятные сроки и объём зависит от того, что вам действительно нужно, то есть на основе полученной информации. 

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

  3. Заказчик остается спокоен, так как ход проекта прозрачен, бюджет и сроки понятны.

  4. Мы не не тратим время на то, чтобы досконально запланировать то, что все равно пойдёт не по плану.

  5. Не даём необъективных ожиданий заказчику и выстраиванием с ним доверительные отношения на основе сотрудничества и прозрачности. 

  6. Совсем неважно, в какой сфере бизнеса вы работаете, такой подход можно внедрять не только для разработки IT-решений.


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

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


  1. lebedec
    04.07.2022 20:19
    +12

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

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


    1. JordanCpp
      04.07.2022 21:50
      +3

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


    1. oracle_schwerpunkte
      05.07.2022 09:13

      Статья конечно дно, но agile смог продать боссам простую вещь - недостаточно нанять специалистов надо еще и регулярно контролировать что получилось - для любого изделия, отличного от массового производства. Реально, это его самое большое достижение.


      1. Myclass
        05.07.2022 09:34

        надо еще и регулярно контролировать что получилось

        Я понимаю, что вы хотите сказать, но ваше выражение мне кажеться больше громким, чем имеет место быть. И в «старом» проект-менеджменте этого контроля тоже с лихвой. Например в PRINCE2 — это контроль границ стадий. Всё упирается в то — кто это делает и как? Не важно по-старинке или в agile.


        1. oracle_schwerpunkte
          05.07.2022 09:44

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


          1. lebedec
            05.07.2022 10:06

            Благодаря извращенному толкованию Agile многие менеджеры теперь думают, что для решения задач не нужен анализ, проектирование и планирование — достаточно всем вместе обсудить что-то на созвоне. 

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


            1. numb
              05.07.2022 10:23

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


              1. Myclass
                05.07.2022 13:01

                Только это не одна-две компании - это трэнд повсеместный. Ты как менеджер будешь лузером, если не будет говорить и переставлять всё на agile. И архитекторы - ну просто не вписываются в эту еонструкцию. Со своими желаниями, 'долго' и усиленно продумывать всю архитектуру или модель базы данных. Всё хотят - тяп ляп и в продакшн.


      1. lebedec
        05.07.2022 09:57

        Контроль качества, о котором вы вероятно говорите, достигается с помощью QA инженеров, которые буквально следят за тем, что мы идём верным курсом: цели актуальны, методы достижения эффективны, требования выполняются.  

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


    1. vyatsek
      06.07.2022 11:41
      +1

      Если прочитать про водопад http://www-scf.usc.edu/~csci201/lectures/Lecture11/royce1970.pdf
      "Unfortunately, for the process illustrated, the design iterations are never confined to the successive steps" (К сожалению, для приведенного процесса итерации разработки никогда не ограничиваются последовательными шагами) об итеративности уже тогда говорили.
      И вообще в документике "сквозит" аджайлом, и много где написано, что не делайте больше, чем надо. При этом надо еще понимать что бумажка 1970г создана на основе разработки до этого 1970г.

      Все что ниже гугли по быстренькому:
      примеры компов второй половины 60х годов
      https://en.wikipedia.org/wiki/SDS_9_Series
      https://en.wikipedia.org/wiki/Honeywell_316
      При этом надо понимать что никаких intellisense, CI, testing framworks , дебагеров и прочего не было, по этому к процессу разработки готовились куда тщательнее, что вполне разумно.

      Еще кстати Agile/Scrum апологеты очень любят про избыточную документацию, при этом если посмотреть на любой SDK, то чем лучшге он документирован, чем больше примеров, тем проще писать код.
      Решил копнуть про языки https://en.wikipedia.org/wiki/History_of_programming_languages
      скорее всего писали на FORTAN'е и вот вам дают кусок какого-то когда, и хрен пойми чего он делает, при том, что там либо что-нить математическое либо machine level. Как в таком разобраться без доков, а если еще и модуль такой дадут, так он к тому же еще и ресурсы жрет и непонятно сколько.

      Agile апологеты опять таки забывают про Rational Software и их RUP и UML, на мой взгляд наиболее полная формализация процесса разработки с единым языком UML, где на каждом этапе ключевую или специфичную инфу можно переложить в графические фигуры.


      Весь этот Agile (XP, Scum, Kanban, Lean, LeSS) очень умело проданный продукт, для новичков, которые не знают истории разработки компов и софта. Конечно все эти подходы объединяют полезные практики, которые могут быть вполне полезны.

      Причиной популярности agile и процессам послужил резкий рост производительности в конце 90х и начале нулевых и резкое удешевление персональных компьютеров, сюда же распространение винды и формоклепа от борланда позволило практически кому угодно начать программировать "с нуля", в отличии от ситуации до 90х, когда компы стояли либо на заводах, либо в НИИ, и никто там никакой Agile не купит.


  1. Myclass
    04.07.2022 23:40
    +6

    Как Agile помогает реализовывать качественные проекты в срок

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


  1. Truba
    05.07.2022 07:06
    +2

    Вместо того, чтобы коммититься на бюджет сроки и объём, на весь проект, мы будем двигаться циклами по 2-3 месяца и объем работы на цикл жестко не фиксировать.

    Нужен курс, «Как убедить клиента внести предоплату за неопределенный объём работы».


  1. DikSoft
    05.07.2022 11:04
    +2

    Никак.