Ритм

Ритм

Одна из особенностей успешных проектов состоит в том, что они подчиняются некоему ритму. Точнее нескольким ритмам. Есть общий ритм перехода от одного этапа к другому в процессе итеративной разработки. Есть более короткий ритм, которому следуют итерации. Наконец, есть ритм построения - биение его пульса, прослушиваемое, например, раз в сутки. Эти ритмы - верный признак того, что «механизм проекта» работает. Конечно, иногда возникают сбои, но они представляют собой исключение на фоне ровного развития, о котором свидетельствуют устойчивые ритмы.
Напротив, менее удачные проекты как будто движутся резкими толчками. Все происходит произвольным и неравномерным образом. Долгое время кажется, что ничего вообще не происходит. Затем выпускается версия продукта, и наступает период оптимизма. В скором времени после этого снова обнаруживается уйма проблем и возникает упадок духа. Настроение людей колеблется вслед за часто меняющейся оценкой проекта и продукта. Когда проект отстает от плана, люди начинают работать интенсивнее, но ничего не меняется. Знакомая ситуация?.
Я наблюдал такие противоположные сценарии развития много лет и размышлял, нет ли в их основе какого-то особого механизма, по крайней мере, для успешных проектов. Я решил, что путей, которыми неудачные проекты приходят к своему провалу, неисчислимое множество, а потому для них и механизмов таких бесконечно много. Зато отыскать единый механизм успеха, может быть, проще.
Взгляд физика на течение проекта.
Случилось так, что я решил воспользоваться простой моделью, а именно вторым законом Ньютона. Поскольку вся классическая механика подчиняется этому простому принципу, не исключено, что существует «второй закон Ньютона» и для проектов разработки программного обеспечения. В конце концов, динамика кривой «процента выполнения» проекта обычно весьма единообразна во всех проектах. Не попытаться ли описать силы, действующие на проект, через производные этой кривой? Конечно, распространять законы физики на динамику проектов - дело довольно рискованное, но я рассчитывал, что помогу менеджерам проектов разобраться в ритмах своих команд.
А это вы уже видели?.
Чаще всего график выполнения проекта, представляемый после его завершения, выглядит так, какна рис. 12.1.
Такая кривая выполнения для большинства проектов является запланированной. Обычно в отчете кривая выполнения выглядит как плановая, но реальность вносит в нее некоторые коррективы.
Если кривые выполнения имеют такой вид столь часто, то нет ли какихто фундаментальных сил, действием которых объясняется эта форма?
Рис. 12.1. Типичная кривая степени выполнения проекта.
Все началось с Ньютона.
Часто утверждают, что «современная» физика началась с Ньютона, хотя первым современным физиком был, наверно, Галилей. Своим вторым законом Ньютон поведал нам, что ускорение тела пропорционально равнодействующей приложенных к нему сил, при этом коэффициентом пропорциональности является величина, обратная массе тела.
Чем больше сила, тем больше ускорение.
Беда в том, что ускорение мы испытываем редко. Мы ощущаем его, резко трогаясь с места на перекрестке, нажимая на тормоз, в начале движения лифта или при внезапной его остановке. Чаще же мы замечаем две другие переменные: скорость и положение в пространстве. Обычно мы знаем, что движемся быстро или медленно, так же как знаем, где мы находимся. Но сила связана с этими характеристиками лишь косвенным образом.
Производные, скорость изменения и наклон касательной.
Если вы знакомы с дифференциальным исчислением, то знаете, что скорость - это первая производная положения, а ускорение - первая производная скорости, что делает ускорение второй производной положения.
Если же вы не изучали дифференциальное исчисление (или забыли его), то вместо «производной» поставьте «темп изменения». Таким образом, скорость - это темп изменения положения, а ускорение - темп изменения скорости.
Рис. 12.2. Траектория шарика, брошенного вертикально.
Согласно Ньютону, ускорение пропорционально равнодействующей приложенных сил, поэтому именно вторая производная положения объекта пропорциональна силе. Иными словами, чтобы получить данные о положении, надо дважды проинтегрировать приложенную равнодействующую силу. Большинству из нас это, конечно, не совсем ясно. Поэтому я пока оставлю в стороне все эти дела с двойным интегрированием и скажу, что для интегрирования и дифференцирования разработан математический аппарат, а наша задача - разобраться с механизмом.
Тем, кому удобнее иметь дело с графическим представлением, напомню, что найти производную или скорость изменения любой кривой можно по касательной к этой кривой в интересующей вас точке. Например, на рис. 12.2, где изображена парабола, производная, или скорость изменения, равна нулю в средней точке. Это видно из того, что в этой точке касательная горизонтальна, и потому ее наклон (или скорость изменения) равен нулю. До этой точки касательная всюду имела положительный наклон; после средней точки наклон становится отрицательным.
Простой физический пример.
Для шарика, брошенного вертикально вверх, траектория полета определяется очень просто.
Если построить график высоты как функции времени, получится все та же замечательная парабола, показанная на рис. 12.2.
Если теперь построить график скорости шарика,
то получится график, приведенный на рис. 12.3.
Обратите внимание, что я «нормализовал» вертикальную ось так,
что скорость попадает в интервал между плюс и минус единицей, - это помогает понять суть, абстрагировавшись от чисел.
График показывает, что вначале скорость движения шарика максимальна и равна одной «единице», а затем она линейно убывает, пока не достигнет нуля в средней точке
Истекшее время.
Рис. 12.3. Скорость шарика при бросании вверх.
полета. Это понятно, потому что в середине полета достигается самая высокая точка, и в этот момент шарик не движется ни вверх, ни вниз, поэтому его скорость равна нулю. Затем он начинает падать, и его скорость становится отрицательной.
Когда шарик возвращается в исходную точку, его скорость точно такая же, как в момент броска, но движется он в противоположном направлении.
А что происходит с ускорением? Я просто повторяю этот процесс еще раз и получаю график, показанный на рис. 12.4.
Я снова «нормализовал» числовое значение, приведя его к -1.
Мы видим, что ускорение постоянно. Это согласуется с нашей моделью: вблизи поверхности Земли сила гравитации постоянна. «Отрицательно» ускорение потому, что направление «вверх» выбрано положительным и сила притяжения тянет шарик «вниз».
Обратите внимание, что ускорение отрицательно на протяжении всего полета шарика, даже когда скорость положительна (полет вверх). В ходе полета мы выполняем «вычитание» из скорости. Мы начинаем с некоторого положительного значения скорости, которое уменьшается до нуля в са-
Рис. 12.4. Ускорение шарика при вертикальном бросании.
мой верхней точке, а затем продолжаем вычитание, пока скорость не станет в конце такой же, как в начале, но с отрицательным знаком.
Вот так мы подтвердили правоту Ньютона. Я «экспериментально» проверил, что график перемещения по параболе подразумевает постоянное ускорение, которое, в свою очередь, подразумевает постоянную силу (гравитации).
Можно ли с помощью подобных рассуждений понять, какие «силы» действуют на проект? Как и в случае ускорения, мы не чувствуем эти силы непосредственно. Вместо этого мы наблюдаем явления, связанные косвенно. Итак, вернемся к графику процента выполнения; он описывает происходящее, отображая результат совместного действия сил, которые мы не видим непосредственно. Что можно будет сказать о динамике проекта, если мы примем такой прототип графика степени завершенности проекта?.
График «степени завершенности проекта»: положение в зависимости от времени.
Как я уже отмечал, большинство проектов имеет такой график, как на рис. 12.1.
Обратите внимание, что я снова выполнил нормализацию, чтобы по оси времени откладывались значения от 0% до 100% и по вертикальной оси также шли значения от 0% до 100%. Кроме того, я достаточно произвольно установил, что выполнение проекта на 50% соответствует 50% потраченного времени. Кривая сделана симметричной для простоты, что в данном контексте удобно. Пока у меня нет оснований делать иные допущения.
График человеческого поведения.
Вообще такие кривые называют S-кривыми, потому что если отступить назад и наклонить голову, они напоминают букву S. Они описывают многочисленные случаи поведения людей; например, такой вид имеет классическая «кривая обучения». Кривая выполнения проекта напоминает кривую обучения, и это наблюдение должно навести нас на некоторые мысли.
Приступая к изучению чего-то нового, мы поначалу долго возимся, мало что понимая. Это соответствует первой, пологой, части кривой, когда время идет, а прогресс незначителен. Затем, когда мы разберемся, о чем идет речь, прогресс ускоряется, что находит отражение во второй части кривой, которую иногда называют подъемом. В этот период мы многое успеваем сделать за единицу времени, и если бы мы сумели сохранить такую скорость, то быстро решили бы задачу. Но мы неизбежно вступаем в третий этап, где кривая опять становится пологой. Наступает стабилизация: больших успехов мы не достигаем, и последние 2% (изучение оставшихся противных мелочей) отнимают много времени. Такая картина обучения повторяется в разных областях знаний.
Если подъем плавный, то говорят о легкой кривой обучения; если подъем происходит очень быстро, то говорят о крутой кривой обучения. Многие не справляются с крутой кривой обучения: им требуется больше времени, чтобы усвоить большой объем новых знаний.
Интересны люди, способные запоминать быстро; у них очень короткий начальный период, затем очень крутой подъем, а потом они бросают учение, игнорируя оставшиеся несколько процентов. Укорачивая оба коротких участка и перемещаясь по крутому подъему, они могут сильно сократить время, необходимое им для приобретения новых знаний или умений. Но такие встречаются редко. Большинство из нас довольствуются двумя плоскими участками и умеренно крутым подъемом.
Проекты подчиняются аналогичному ритму. В начале проекта прогресс идет медленно. Много усилий тратится на планирование, организацию и исследования, что не дает заметного прогресса. Но постепенно вы выходите на подъем, который кажется довольно прямолинейным (хотя мы и знаем, что он не совсем прямой). В конце проекта снова происходит замедление, поэтому завершение всегда дается с трудом. Здесь также решение всех мелких проблем, связанных с окончанием проекта и выпуском продукта, отнимает относительно много времени. Поэтому проект, завершенный на 90%, формально таит не много риска, но до полного окончания может потребовать еще изрядное время. В конце работа замедляется, и сделать с этим практически ничего нельзя. Например, если подключить к проекту дополнительных людей, это только отдалит конечную дату, что было неоднократно продемонстрировано.
А как новый продукт принимается рынком? Та же картина. Сначала медленно, потому что люди должны узнать о продукте, выяснить его недостатки и преимущества, обсудить с коллегами и пройти процедуру отбора и приобретения. Это те, кто покупает первыми. Затем наступает подъем, когда продукт «наверстывает упущенное» и спрос растет до небес. Этот момент, когда продукт попадает в основной поток, Джеффри Мур (Geoffrey Moore) называет прыжком через пропасть.
Какое-то время это продолжается, а потом объем продаж снижается: мы вышли на третью, плоскую, часть кривой. Теперь продукт считается «зрелым», и покупают его в основном те, кто всегда покупает последним. Вполне вероятно, что это момент подъема для конкурирующего продукта, который отобрал часть рынка у более старого продукта. Вот так эта универсальная кривая представляет жизненный цикл торговли продуктом.
Кривая скорости проекта.
Прежде чем вступить в бесконечный спор о том, как выглядит эта кривая «в действительности», просто примем, что она отражает большинство имеющихся данных о «проценте выполнения», и посмотрим, какие выводы можно сделать. Как и во многих других ситуациях в физике, сначала попробуем разобраться с идеализированным поведением, а потом откорректируем наши выводы, учтя в модели сопротивление воздуха и прочие природные факторы.
Важно отметить, что эта кривая представляет собой график зависимости координат от временем. Иными словами, это график нашего положения в каждый момент времени. А как будет выглядеть кривая «скорости»?.
Скопировав наши предыдущие шаги, мы сможем ответить на этот вопрос. Вычислив скорость изменения графика процента выполнения проекта, получим кривую, представленную на рис. 12.5.
Вы должны были уже привыкнуть к тому, что данные по оси ординат нормализуются. Этот график показывает, что проекты начинаются медленно и потом некоторое время движутся быстро. Затем они достигают максимальной скорости (на рис. 12.5 максимальная скорость достигается
Рис. 12.5. Скорость кривой процента выполнения проекта.
в середине пути, но только потому, что наша кривая выполнения проекта симметрична), а затем начинает снижаться. Пересекая финишную линию, вы движетесь довольно медленно, примерно так же, как в самом начале.
Это согласуется с нашим интуитивным повседневным опытом. Проекты медленно разгоняются, в какой-то момент «набирают скорость», а потом «вязнут в трясине» и движутся медленнее. Завершение сопровождается трудностями. Устранение мелких неувязок, необходимое для выпуска продукта, кажется бесконечным. Иногда возникает такое ощущение, будто пересекаешь финишную линию, едва держась на ногах.
Повторю, что точные значения для это кривой могут быть различными, но в целом схема удивительно повторяется из одного проекта в другой. И какой из этого можно сделать вывод о скрытых «силах», управляющих проектом?.
Физик в такой момент взял бы еще одну производную. Так же поступим и мы.
График сил, действующих в проекте.
Получаемая в результате кривая ускорения, которая выражает действующие силы, показана на рис. 12.6.
Какие выводы можно из этого сделать?
Рис. 12.6. Равнодействующая сил, демонстрируемая ускорением кривой процента завершения проекта.
Вот одна из возможных интерпретаций. В первой трети проекта наблюдается возрастание положительной силы. Это соответствует большому воодушевлению в отношении нового проекта, появлению в команде новых участников и общему оптимизму относительно шансов на успех. Можно цинично охарактеризовать этот период словами «меньше знаешь лучше спишь». Действует положительная возрастающая сила, благодаря которой проект набирает скорость (как иногда говорят, кинетическую энергию).
Примерно через одну треть пути эта положительная сила начинает убывать. Обстоятельства диктуют: прошло достаточно времени, чтобы люди поняли, каковы реальные трудности, и начали ощущать давление графика работы. Ведь прошла уже треть отпущенного срока, а работы осталось невпроворот. Кроме того, начинают ощущаться тяготы работы большой группой: много времени уходит на совещания, а доводить информацию до всех членов команды становится труднее.
Затем мы достигаем середины пути. В этом месте согласно показанному графику начинает действовать отрицательная сила. Команда ощущает, как что-то тянет проект назад. Многие действительно трудные проблемы поддаются решению не так быстро, как мы рассчитывали. По мере того как часы ведут неумолимый отсчет времени, все чаще людей охватывает страх. Когда пройдено примерно две трети пути, эта отрицательная сила достигает своего наивысшего значения; возникает ощущение, будто плывешь в вязкой жидкости. Если проект задерживается здесь слишком долго, он погибает.
И затем, когда мы больше всего нуждаемся в этом, в проекте происходит перелом. Возникает прорыв, и внезапно все перестает выглядеть таким мрачным.
Хотя отрицательная сила все еще действует (все понимают, что предстоит доделать уйму вещей, а времени для этого осталось мало), она ослабевает. Главная причина в том, что команда увидела впереди финиш. Отрицательное действие продолжает убывать до самого пересечения финишной линии.
Учтите, что действительные «поворотные точки» на этой кривой - одна треть, половина и две трети - различны в разных проектах и оказывают влияние на кривую скорости и кривую процента выполнения проекта. В этих точках нет ничего магического, они обусловлены симметрией кривой степени завершенности проекта, которую я изначально выбрал для простоты изложения. Точное их расположение в нашем проекте неизвестно: можно лишь «предсказать», что проект пройдет эти фазы.
Это немного обнадеживает. Я начинаю с прототипа кривой процента завершения, беру пару производных и делаю вывод о силах, управляющих проектом. Эмпирические данные оказываются в согласии с теорией. Удалось ли мне тут чего-нибудь достичь?.
Вмешательство реальности.
Физик рассматривает теорию с нескольких разных точек зрения. Опасно экстраполировать законы, действующие на такие физические категории, как координаты, скорость и ускорение, на группу динамических переменных типа «процент завершения проекта», «скорость проекта» и «силы, действующие на проект». Необходимо тщательно следить за тем, чтобы не приписать модели больше «науки», чем в ней есть в действительности. Однако похоже, что аналогия дает результаты, согласующиеся с реальностью. Итак, перейдем к следующему шагу.
Физик судит о теории по ее способности объяснять и предсказывать. Таким образом, сначала теория должна объяснить результаты всех известных экспериментов. Если экспериментальные результаты противоречат теории, значит, теория неверна, если только не удастся показать, что экспериментатор сделал ошибку. В нашем примере для большинства проектов наблюдалась схожесть кривых процента выполнения, и проекты отличались лишь положением переходных точек на графиках производных.
В результате мы приходим к ограниченной полезности теории. Но хотелось бы иметь возможность предсказывать поведение кривой процента выполнения, находясь на некоторой стадии незавершенности. Или, иными словами, мы хотим знать, когда можно ожидать завершения. В каждый данный момент мы располагаем лишь той частью кривой, которая находится «позади», и некоторым представлением о графике скорости. График «сил» довольно трудно определить количественно. На самом деле часто трудно истолковать даже график скорости, хотя метрики для скорости были бы весьма и весьма полезны. Знать свое «местоположение» важно, но для более точного прогноза необходимы как фактическое положение, так и фактическая скорость.
В настоящее время многие наши метрики проекта сосредоточены исключительно на местоположении: «Где мы находимся?» Как видно из данного изложения, наличие метрик скорости (изменения положения за единицу времени) имеет такое же большое значение. А если нам удастся также разобраться с тем, как изменяется скорость, то у нас возникнет еще более полная картина. Примерно так и следует рассматривать совокупность метрик проекта.
А что с итеративной разработкой?.
Все вышесказанное плавно подводит нас к мысли о том, что проекты выполняются не одним махом, а разбиваются на итерации. У каждой итерации есть собственный ритм, поэтому описанные в данной главе графики представляют собой не более чем приближения. Так, для проекта с четырьмя итерациями график выполнения будет скорее похож на тот, который представлен на рис. 12.7.
Здесь мы наблюдаем четыре S-кривые, наложенные одна на другую. Степень выполнения кумулятивна, и я предположил, что каждая итерация занимает 25% времени и перемещает нас на 25% вперед вдоль графика степени завершения проекта. В последующем обсуждении я откажусь от этих упрощающих предположений.
Теперь посмотрим на графики скорости и ускорения (сил), соответствующие этому графику степени завершения в четырех итерациях (рис. 12.8).
О чем говорят нам эти графики производных?.
Мы видим, что кривая скорости повторяет саму себя четыре раза, и это не удивительно. Проект набирает и теряет скорость четыре раза соответственно тому, что во всех итерациях ритм примерно совпадает. График
Если приглядеться, то обнаружится различие между четырьмя пиками со значением 100% на кривой скорости и тремя минимумами со значением 10%. Переход через максимум плавный, и производная в нем равна нулю. Напротив, переход через минимум не гладкий, и угол наклона резко меняется. Отсюда и разрыв на графике ускорения (силы).
К этому времени вы должны были уже привыкнуть к взаимозаменяемости обозначений «ускорение» и «сила».
Рис. 12.7. График процента выполнения для проекта с четырьмя итерациями Скорость Силы
Рис. 12.8. Скорость и силы в проекте с четырьмя итерациями
второй производной - ускорения
- имеет три разрыва, которые также можно «видеть» на кривой скорости.
Это означает, что в начале каждой итерации, кроме первой, необходимо преодолеть действие отрицательной силы, сохраняющееся от предыдущей итерации, и приложить начальную положительную силу. В результате вектор скорости резко меняется. Без этой мгновенной прерывистой силы нельзя начать набирать ход, не потеряв при этом времени.
Большинству хороших менеджеров это известно, и в нужный момент они применяют необходимую силу. Не стоит слишком удивляться наличию этого разрыва - в конце концов, мы запустили проект в работу в нулевой точке с помощью ненулевой положительной силы. Я лишь хочу сказать, что в конце итерации у нас сохраняется остаточная отрицательная сила и необходимо скачком перейти к той положительной силе, с которой мы начали.
Применив эту положительную силу, надо опять наращивать ее, пока итерация не «упрется в стену» и не вступят в действие неизбежные отрицательные силы. После чего остается лишь осуществить прорыв для этой итерации, с помощью которого график отрицательной силы снова изменится на положительный.
Итак, мы знаем, как применить нашу модель к проекту с несколькими итерациями. Все остается по-прежнему: строим график степени завершения, берем производные и интерпретируем результаты. Разница лишь в том, что в начале кривая завершения немного сложнее. Но правила игры прежние.
Но когда все итерации выглядят одинаково, это скучно, не говоря уже о том, что у нас нет никакого представления о реальном проекте, с которым мы работаем, поскольку до сих пор наш анализ никак не отражал действительность. К ней мы теперь и обратимся.
Итерации и фазы.
Реальная разработка может состоять из многих итераций, составляющих отдельные фазы проекта. Как отразить в модели такую особенность?.
Я не собираюсь строить график, составленный из нескольких фаз и нескольких итераций в каждой фазе. Может быть, такая сложность вообще не нужна. В конечном счете наибольшие различия существуют между фазами, а не между итерациями внутри них. Поэтому, чтобы избежать чрезмерной сложности, создадим модели фаз и предположим, что в каждой фазе есть лишь одна итерация.
В методологии Rational Unified Process определены четыре фазы:
• Обследование (Inception).
• Проработка проекта(Elaboration).
• Построение системы (Construction).
• Передача в эксплуатацию (Transition).
Характеристики этих четырех фаз различны. В начале проекта проводится обширное исследование (обучение). В середине проекта мы больше занимаемся изобретением, чем исследованиями, хотя обучение по-прежнему интенсивно. На поздних стадиях проекта мы занимаемся тем, что требуется для «завершения»: отчасти изобретением, но в основном реализацией. По мере приближения проекта к концу обучение несколько ослабевает.
Пора разделить понятия «обучения» и «завершения». До сих пор я предполагал, что это одно и то же. В табл. 12.1 приведены цифры, которые, по мнению моего коллеги Филиппа Крухтена (Philippe Kruchten)
характерны для каждой из четырех фаз.
Таблица 12.1. Метрики обучения и завершения в методологии Rational Unified Process
Фаза
Истекшее время, %
Обученность, %
Завершенность, %
Обследование
0-10
0-10
0-5
Проработка проекта
10-40
10-60
5.
2.
-.
5
Построение системы
40-90
60-90
25-90
Сдача в эксплуатацию
90-100
90-100
90-100
Из этих чисел следует, что при проведении разработки по фазам и итерациям мы обучаемся быстрее, чем завершается проект. Благодаря такому ускоренному обучению снижается риск. Как ввести эти соображения в нашу модель?.
Достаточно всего двух изменений:.
1.
Начертить отдельные графики «процента обучения» и «процента завершения».
2.
Для каждого из этих графиков начертить S-образные участки согласно табл. 12.1, что смоделирует реальность с данным уровнем приближения.
Результаты Все результаты приведены на рис. 12.9.
Обсуждение результатов
Рис. 12.9. Графики для табл. 12.1- кривые обучения и завершения
0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
Графики дают обширный материал для обсуждения.
Сначала займемся различием в форме кривых обучения и завершения. В принципе 60% необходимых знаний вы получаете в течение первых 40% срока, запланированного для проекта, и к этому моменту проект оказывается завершен всего на 25%. Это и понятно: при итеративной разработке обучению отводится более значительная роль, что преследует цель снизить риск. У этой медали есть обратная сторона, которая состоит в том, что не видно значительного «ощутимого» прогресса, поскольку обучение часто не сопровождается созданием заметного количества материальных объектов. Во всяком случае по истечении 40% отпущенного срока менеджеру проекта предстоит примерно такой разговор:.
Босс: Вы потратили 40% времени, а проект завершен всего на 25%.
Дело плохо.
Вы: Не совсем так. При итеративной разработке в первой половине проекта важно накопить знания. И мы выяснили 60% того, что собирались.
Босс: Вот как? Замечательно. Не покажете ли вы мне эти 60%?.
На этот случай следует иметь дополнительные аргументы, которыми можно прикрыться. Я обычно демонстрирую список рисков, составленный в самом начале, и показываю, что обучение устранило или уменьшило эти риски.
Теперь посмотрим на кривые скорости. Отложим пока обсуждение первой и четвертой фаз и связанные с ними силы, поскольку интереснее обсуждать их одновременно. В данный момент сосредоточимся на фазах проработки и построения системы, между которыми есть важные различия.
Мы видим, что скорость обучения достигает максимума на этапе проработки, тогда как скорость завершения достигает максимума на этапе построения. Это согласуется с нашей моделью, в которой на этапе проработки мы отдали предпочтение накоплению знаний, в какой-то мере пожертвовав завершением. Идея в том, что реальные свидетельства завершенности проекта начинают появляться только на фазе построения системы, поэтому лишь в ней соответствующая кривая достигает своего пика.
Может возникнуть вопрос, почему обе кривые скорости опускаются почти до нуля на отметке 40%, а потом поднимаются снова. Не было бы лучше «сохранить» какую-то скорость при пересечении этой границы? Да, конечно, но мы не можем этого сделать, потому что на границе соединяются две S-кривые. По этой же самой причине на границах появляются разрывы графиков сил. В реальности этому математическому факту соответствует возникновение в любом проекте срыва при переходе между фазами. Из-за этого многие опытные менеджеры стараются сгладить прохождение границы и иногда создают для этого «передовой отряд», который начинает работать над следующей фазой с некоторым упреждением (до фактического завершения предшествующей фазы). Осуществить это трудно. Другим логическим следствием является создание дополнительных границ при увеличении количества фаз и итераций внутри каждой из них. Если переход каждой границы связан с постоянными накладными расходами, то при увеличении количества фаз и итераций суммарные издержки растут.
Сравнение сил, действующих в фазах проработки и построения системы, также довольно очевидно: силы обучения более значительны во время проработки и относительно слабее во время построения. Отмечу, что, напротив, силы завершения достигают примерно одинаковых максимальных значений на фазах проработки и построения, что отрадно.
Теперь рассмотрим фазы обследования и передачи в эксплуатацию. Каждая из них занимает небольшой промежуток времени - всего лишь по 10% длительности всего проекта. Поскольку S-образность кривой приводит к наличию пика в ее производной, сжатость ее по времени приводит к большей высоте пика. Соответственно, кривая силы, необходимой для изменения кривой скорости в укороченный промежуток времени, также требует больших пиковых значений. Поэтому, обращаясь к графику сил для обучения и завершения, мы обнаруживаем в этих интервалах максимальные пики сил. Это следствие сжатости интервалов времени. Этому можно было бы противодействовать, изменяя поведение кривой так, чтобы она в эти короткие промежутки времени не была S-образной. Если бы графики в этих интервалах были просто линейными, то потребовались бы меньшие силы. S-кривые и их производные более пригодны для протяженных интервалов времени. Вероятно, они представляют собой хорошую модель для длительных интервалов и плохую для коротких.
С другой стороны, эти «значительные» силы могут быть отражением реальности, а не просто явлениями, возникающими при сжатии S-кривых во времени. Нет сомнений, что в конце проекта, во время передачи в эксплуатацию, на всех его участников действуют значительные силы. Это подтвердит каждый, кому приходилось завершать проект: окончание проекта дается так тяжело, потому что нужен сильный рывок, когда у команды уже остается совсем мало сил. Значительные силы также действуют в начале, на фазе исследования, потому что по окончании этой фазы приходится в первый раз принимать решение «идти/не идти» дальше. Если в этой точке участники проекта подумывают о том, чтобы все бросить, то можно не сомневаться, что придется задействовать значительные силы.
Последний график.
Есть еще один график, который может представлять интерес. Допустим, что мы можем «сложить» вместе силы завершения и обучения. Силы представляют собой векторы, и я делаю несколько произвольное предположение, что силы завершения и силы обучения коллинеарны, т. е. действуют вдоль одного направления. Однако при таком предположении я могу арифметически сложить силы и получить суммарную действующую на проект силу как функцию истекшего времени, что показано на рис. 12.10.
Рассмотрим некоторые площади, ограниченные кривыми в четырех областях.
Отметим, что все участки имеют одинаковую форму, поэтому возьмем пиковое значение суммарной силы и продолжительность участка; их простое произведение будет пропорционально площади (табл. 12.2).
Рис. 12.10. Суммарное действие сил на проект (обучение + завершение)
Истекшее время
Таблица 12.2. Произведение пикового значения суммарной силы на длину интервала
Фаза
Процент.
истекшего.
время
Длина.
интервала.
времени
Пиковое значение суммарной силы
Произведение.
(импульс)
Обследование
0-10
10
0,8
8
Проработка проекта
10-40
30
0,4
12
Построение системы
40-90
50
0,2
10
Сача в эксплуатацию
90-100
10
1,0
10
Тем, кто любит математику и физику, напомню, что площадь является интегралом, а интеграл силы по времени равен изменению количества движения.
Эти данные показывают, что изменение количества движения примерно одинаково в каждой из четырех фаз. Изменение количества.
движения (или импульса) одинаково при построении системы и сдаче в эксплуатацию и равно 10 единицам. Наибольший импульс (во время обследования) равен 12 единицам. А суммарный импульс первой и второй фаз - 20 единиц - равен суммарному импульсу третьей и четвертой фаз. Половина суммарного импульса прикладывается во время первых 40% всего времени. Это также выражает идею «фронтальной загрузки», которую мы считаем полезной.
Обратите внимание, что разрыв кривой суммарной силы на рубеже 40% невелик. Это тоже может служить хорошим показателем. Поэтому выводы, которые можно сделать из данных Крухтена и Ройса по процентам обучения и завершения в четырех фазах проекта, согласуются с преимуществами, которые мы усматриваем в итеративных проектах разработки.
Я сделал массу допущений и подправил модель, чтобы мне было удобнее с ней работать, но полученные результаты согласуются как между собой, так и с реальными наблюдениями.
Резюме.
Я взял простую универсальную модель S-кривой и применил ее к управлению проектами разработки ПО. С помощью обычной классической физики я перешел от S-кривой к скорости и ускорению, а, следовательно, и к силам, действующим в проекте. Я развил модель, охватив ею многофазовую итеративную разработку, и пришел к выводу, что результаты согласуются с наблюдениями. Я даже попытался разделить метрики обучения и завершения и проанализировать эти силы порознь. Наконец, я сложил вместе силы и пришел к некоторым выводам относительно суммарной силы как функции времени и импульса, прилагаемого к проекту на разных фазах.
Этот анализ в значительной мере умозрителен, поэтому не стесняйтесь и предлагайте собственные интерпретации нарисованных мной графиков. Надеюсь, что кто-то из вас найдет здесь зерна истины, не замеченные мной или моими рецензентами.
Между тем эта теоретическая модель помогает уверенно справляться с разными фазами проекта. Мысль о том, что в проекте наличествует некоторый «детерминизм», может подействовать успокаивающе, когда проект застопоривается и вас беспокоит возможное падение духа в команде.
Эта глава завершает третью часть книги. Теперь я перехожу к части IV, в которой изучаю человеческий фактор в управлении программными разработками.