выполнения. Таким образом, основное внимание во второй части этой книги (главы 12, 13,14) мы сосредоточили на создании «плана полёта» для проекта.
•
Хотя план полёта и регламентирует действия экипажа во время рейса, он не может и не должен предсказывать или решать все проблемы, которые могут возникнуть в полёте. Haправление ветра, турбулентности атмосферы, колебания тяги двигателей, пробки в воздушных эшелонах и масса других факторов влияют на полет и потенциально могут отклонить самолёт от курса и выбить его из расписания.
Проект тоже столкнётся с тысячами проблем, которые нельзя ни предсказать, ни запланировать. Любая из них может сбить его с курса или стать причиной задержки. Как и самолёту, проекту нужна система быстрого реагирования на события, происходящие во время полёта.
•
Удерживать курс самолёта помогает навигационная система, которая постоянно (примерно каждые несколько минут) определяет его координаты и сравнивает результат с координатами пункта назначения. В полёте навигационная система постоянно вносит небольшие коррективы, чтобы вернуть самолёт на намеченный курс. Принцип работы навигационной системы состоит в допущении, что самолёт всегда летит в неверном направлении, и его нужно вернуть на правильный курс (рис. 12-1).
Проекту тоже нужна «навигационная система». Нужно почаще проверять состояние проекта и вносить небольшие коррективы, прежде чем он успеет сильно отклониться от намеченного курса. В ходе разработки надо регулярно оценивать прогресс проекта и своевременно вносить соответствующие изменения.
•
По мере приближения к пункту назначения начинается работа по подготовке самолёта к посадке, которая включает ряд специальных действий — от выделения взлётно-посадочной полосы диспетчером аэропорта до поднятия столиков пассажирами. Члены экипажа знают, какие процедуры нужно выполнить, чтобы безопасно посадить самолёт в нужном месте и точно по расписанию. Им не приходиться лихорадочно соображать, что делать, когда самолёт уже пошёл на снижение.
Проект также нужно безопасно «посадить», не допуская никаких промахов при приближении конца пути. Надо организовать процесс плавного «снижения», направляющий завершающие этапы проекта. Этот процесс нужно спланировать заранее, а не создавать в спешке во время «захода на посадку». Из-за важности последнего этапа я решил полностью посвятить ему главу 14.
Процесс измерений и мониторинга состояния проекта
Как сказано в главе 9, план проекта — это совокупность описаний отдельных его этапов, каждый из которых харак-теризуется определённым уровнем законченности некоторых функций программы, который должен быть достигнут к заданному сроку. Эти этапы можно формально рассматривать как контрольные точки для оценки прогресса проекта. Если функциональность программы реализуется в срок, в заданном объёме и работает должным образом, значит, вы не сбились с курса. Обратная ситуация является проблемой, которую нужно сразу решать. Если программа собирается каждый день, в любой момент её можно установить и её тестирование ведётся параллельно разработке, значит, у вас есть необходимые инструменты и процедуры для регулярного контроля проекта. Кроме того, обладая планом, в котором отмечены даты и параметры контрольных точек, всегда можно определить, на каком этапе находится проект в данный момент. Сравнив текущее положение проекта с планом, можно узнать, в верном ли направлении идёт работа.
Внесём ясность в значение понятий, рассмотренных выше. Если работа над проектом только начата и через две недели должен быть закончен первый этап, во что бы то ни стало нужно закончить его вовремя. Если вы всерьёз собираетесь уложиться в конечные сроки, следует устанавливать промежуточные сроки и выдерживать их. Если для этого придётся работать по ночам и по выходным — работайте. Не дожидайтесь конца работы над проектом, чтобы наверстать упущенное: тогда будет уже слишком поздно. Следует успевать выполнить намеченное к определённому сроку прямо перед наступлением этого срока. Удалось уложиться в срок — это хорошая работа, и успех обязательно нужно отметить всем вместе. Но если работа просрочена, соберите группу, выясните, в чём дело, и устраните проблему. Также необходимо составить план навёрстывания упущенного. Чтобы закончить проект к намеченному сроку, группа должна работать очень серьёзно и напористо, выдерживая промежуточные контрольные сроки.
А есть ли способ заранее узнать, удастся ли достичь следующую контрольную точку вовремя? Завершение отдельных этапов проекта — формальные события, с которыми обычно связаны объективные параметры. Но их, как правило, разделяет несколько недель, а для мониторинга проекта в периоды между соседними контрольными точками нужны дополнительные инструменты.
Решению этой проблемы и будет посвящена остальная часть главы. Я расскажу о правилах сбора текущих сведений о проекте и о том, как при необходимости менять направление и темп проекта. Помните: срыв плана в конце работы над проектом случается не вдруг, а назревает потихоньку, день за днём.
Сбор и распространение информации между участниками группы — ключ к эффективному исполнению плана проекта. В этом разделе я покажу, как лучше всего собрать сведения о состоянии проекта и довести их до сведения каждого, не таская всю группу по собраниям из-за мелочей, и избежать различных накладок. И, что важнее всего, вы узнаете, как с помощью собранной информации увидеть проблемы до того, как они станут причиной крупных задержек или существенных трудностей.
Как сказано выше, ежедневные сборки программы и базисные тесты — это пульс проекта. Оба мероприятия критичны для определения состояния проекта. Если в течение нескольких дней или недель вы не в состоянии скомпоновать программу, проект в беде. Возможность сборки ПО нужна для поддержания его внутренней согласованности, интеграции и визуализации изменений. Если нельзя выполнить сборку программы, оценить состояние проекта также невозможно.
Кроме того, необходимо проводить базисные тесты, критичные для регулярной (ежедневной) оценки базового, качества ПО. Обнаруженные проблемы надо сразу решать, поступать иначе — то же самое, что сидеть сложа руки, когда самолёт быстро снижается.
В той или иной форме контрольные собрания проводятся почти в каждой группе. Контрольные собрания — замечательный способ сбора и распространения ключевой информации о состоянии проекта, поддержания контактов и совместной работы в коллективе. Но если контрольные собрания проводятся плохо, они могут до смерти наскучить людям, породить ощущение беспомощности и нарушить сплочённость группы. Ниже перечислен ряд правил, придерживаясь которых, можно извлечь из контрольных собраний максимум пользы.
•
На контрольном собрании участники группы сообща обсуждают крупные достижения, неудачи и трудности. Сосредоточьтесь на том, что удалось и что не удалось. На собрании также поднимают важные проблемы, требующие внимания одного или нескольких участников группы.
•
На контрольном собрании должны быть все участники реализации проекта. К ним относится основной состав группы (см. главу 4): менеджер проекта, разработчики, тестировщики, специалисты по обучению пользователей и технологи.
•
Собрания часто становятся местом встречи нескольких участников группы, которые хотят