image

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

Что происходит дальше? Если посмотреть со стороны на отношения заказчиков и аутсорсеров, то в 90% случаев они напоминают два враждующих лагеря. Одни обвиняют друг друга в вечном срыве сроков и завышении бюджетов, другие — в непрофессионализме и “саминезнаютчегохотят”.

Послушав очередные жалобы на эту тему, захотелось поделиться своим опытом заказной разработки в качестве менеджера проектов. Речь пойдет об истории 2009-2011 года. Заинтересованные в практических вопросах приглашаются в комментарии.

Нет времени объяснять, просто делай!


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

Пальцем в небо


Итак, что у нас есть:
— новый заказной проект,
— заказчик, с которым мы ранее не работали и он к нам не лоялен,
— представитель заказчика — директор одного из направлений в компании, хорошо разбирается в своем бизнесе, но ничего не знает про IT, слово agile никогда не слышал.
— привык мыслить и работать в классическом водопадном подходе.

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

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

После этого до момента старта проекта проходит какое-то время, например, месяца два-три. И вот команда приступает к работе над проектом, смотрит и ужасается. Просто волосы на голове встают дыбом. Кто это оценивал? (Скорее всего кто-то из них или даже все вместе).
Это ужас, что там написано: крайне оптимистичные, просто нереальные оценки.
Мы наобещали заказчику, что сделаем такой-то функционал, на деле оценили неправильно, и получилось, что мы уже съели свою маржу, еще и в минус можем уйти. Я уже не говорю про срыв сроков.

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

Короткие этапы в контракте


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

Итерация 0. Время аналитики


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

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

Все требования разбиваются на множество пользовательских историй (user story) – максимум 2-3 странички. На их основе мы предлагаем свое решение заказчику.
Здесь важно почувствовать разницу! Мы не спрашиваем еще раз: «А как ты хочешь, чтобы мы вот это реализовали?»
Мы сами предлагаем ему варианты, потому что это в наших интересах. Заказчик читает: «Да, мне нравится». Отлично. Согласовали.

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

Постоянное изменение требований — это прекрасно


Наша работа разбита на итерации, в конце каждой из них мы демонстрируем заказчику результаты.
И тут начинается… как из рога изобилия сыпятся изменения и дополнения, которые непременно нужны. А мы радуемся и говорим ему: «Скажи нам, что ты хочешь еще?»

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

Это очень важный момент.

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

Главное, соблюдать правило: «Если вы что-то добавляете, то что-то удаляете».

Снижение рисков проекта


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

Как оставаться в рамках бюджета


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

Каждое пожелание оцениваем, а заказчику остается планировать релизы с учетом времени и оставшейся суммы. Помните? Стоимость договора на этапы. То есть у нас был исходный бюджет проекта, например, 10 миллионов, и мы уже выработали 2 тысячи часов, которые 4 миллиона, и, например, 6 миллионов осталось. Теперь он может из очереди нереализованных требований, которую сам постоянно приоритезирует, выбрать задачи на оставшиеся 6 миллионов.

Фактически, с полностью договора по фиксированной стоимости мы переходим на T&M контракт, но с ограничением по дате и бюджету. Однако, если мы потратим на фичу не 20 часов, а 100 часов, нам никто не заплатит за это. Но мы оцениваем маленькие фичи. Мы говорим конкретно: «Я думаю, эту мы сделаем за 3 дня, эту за 5 дней, эту за 10 дней». Наши риски минимальны.

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

Счастливый финал с ложкой дегтя


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

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

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

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

Еще обещаю опубликовать пример Agile-контракта с фиксированными ценой и датой, но плавающим скоупом — из наших реальных проектов.

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


  1. prolis
    21.04.2015 14:54

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


    1. ldmitry Автор
      21.04.2015 15:01

      В таком случае мы, наверное, будем не очень хорошими исполнителями. Если клиент хотел CRM, то он должен получить CRM.
      Весь вопрос в объеме реализованной функциональности, которая постоянно обсуждается нами и заказчиком в течение проекта, но свои основные функции как CRM система должна выполнять.

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


      1. prolis
        21.04.2015 15:06

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


        1. ldmitry Автор
          21.04.2015 22:52
          +2

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

          Если вы имеете ввиду полностью закрыть ответственность исполнителя договором — ну тут вариант только один, все четко прописать и получить контракт с зафиксированными бюджетом, сроком и скоупом.
          Тогда заказчик точно получит то, что просил на старте проекта. Но не то, что ему по факту нужно. И обе стороны будут иметь те же проблемы, от которых хотели уйти :)


  1. father_gorry
    21.04.2015 16:32

    Разработчик софта, в котором я работал в 2000х, однажды попробовал такой подход, но быстро отказался. Причина — заказчик фокусируется на сырости продукта и недоработках (после неоднократного предупреждения, что это ИТЕРАЦИЯ и показываем ФИЧИ), его мотивация падала и он уходил к конкурентам. В лучшем случае, он говорил что в принципе нормально, давайте сделаем всё и до конца, и уже к финальному релизу предъявлял ту самую кучу новых требований.
    Как вы справлялись с этой проблемой?


    1. ldmitry Автор
      21.04.2015 22:59

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

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


      1. father_gorry
        22.04.2015 15:58

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


  1. aryeh
    26.04.2015 09:10

    Жду следующих статей. Особенно пример договора.


  1. YuppY
    09.05.2015 19:30

    Это принцип «fix time, fix budget, flex scope» artgorbunov.ru/bureau/fff