- •Эдвард Йордан «Смертельный марш» Полное руководство для разработчика программного обеспечения по выживанию в безнадежных проектах
- •Глава 1. Введение 6
- •Глава 2. Политика 29
- •Глава 1. Введение
- •1.1 Определение безнадежного проекта
- •1.2 Категории безнадежных проектов
- •1.3 Почему существуют безнадежные проекты ?
- •1.3.1 Политика, политика, политика
- •1.3.2 Наивные представления маркетинговых служб, высшего руководства, менеджеров проекта и др.
- •1.3.3 Наивный оптимизм юности: «Мы сможем сделать это за выходные!»
- •1.3.4 Менталитет первопроходцев у неопытных предпринимателей
- •1.3.5 Менталитет «Морского Корпуса»(Marine Corps):Настоящиепрограммисты не нуждаются в сне!
- •1.3.6 Высокая конкуренция, порожденная глобализацией рынков
- •1.3.7 Высокая конкуренция, вызванная появлением новых технологий
- •1.3.8 Сильное воздействие неожиданных правительственных решений
- •1.3.9 Неожиданный и/или незапланированный кризис
- •1.4 Почему люди участвуют в безнадежных проектах?
- •1.4.1 Риск высок, но вознаграждение тоже
- •1.4.2 Синдром покорителей Эвереста
- •1.4.3 Наивность и оптимизм молодости
- •1.4.4 Альтернатива - безработица
- •1.4.5 Возможность будущей карьеры
- •1.4.6 Альтернатива - банкротство или прочие разные бедствия
- •1.4.7 Возможность победить бюрократию
- •1.4.8 Месть
- •1.5 Заключение
- •Глава 2. Политика
- •2.1 Идентификация «игроков», вовлеченных в проект
- •2.1.1 Владелец
- •2.1.2 Заказчики
- •2.1.3 Акционеры
- •2.1.4 Заинтересованные лица
- •2.1.5 Защитники
- •2.2 Определение сущности проекта
- •2.3 Отношение участников к проекту
- •2.4 Заключение
- •Глава 3. Переговоры
- •3.1 Нормальные переговоры
- •3.2 Допустимые компромиссы
- •3.3 Переговорные игры
- •3.4 Стратегии переговоров
- •3.5 Что делать в случае провала переговоров
- •Глава 4. Человеческий фактор в безнадежных проектах
- •4.1 Кадровые вопросы
- •4.2 Лояльность, отношение, мотивация и вознаграждения
- •4.2.1 Стимулирование участников проекта
- •4.2.2 Сверхурочная работа
- •4.3 Значение коммуникации
- •4.4 Проблемы формирования проектной команды
- •4.5 Условия работы
- •4.6 Заключение
- •Глава 5. Процессы
- •5.1 Концепция «triage»
- •5.2 Важность управления требованиями
- •5.3Sei, iso-9000. Формальные процессы против неформальных
- •5.4 «Достаточно хорошее» программное обеспечение
- •5.5 Наилучшая практика и наихудшая практика
- •5.6 Принцип «ежедневной сборки проекта»
- •5.7 Управление рисками
- •5.8 Заключение
- •Глава 6. Технология и средства
- •6.1 Минимально необходимый набор средств
- •6.2 Средства и процессы
- •6.3 Риск выбора новых средств
- •6.4 Заключение
- •Глава 7. Безнадежные проекты как образ жизни
- •7.1 Почему безнадежные проекты становятся нормой
- •7.2 Учреждение «культуры» безнадежных проектов
- •7.3 Обучение участников безнадежных проектов
- •7.4 Концепция «военных игр»
- •7.5 Заключение
3.1 Нормальные переговоры
Заявление о том, что мы в самом деле знаем, как точно оценить сроки, бюджет и ресурсы какого-либо нетривиального проекта, наверняка вызовет бурные дебаты между различными группами софтверных профессионалов и менеджеров. Наши результаты, полученные в течение ряда лет, вряд ли будут слишком убедительными; с другой стороны, многие могут заметить, что проблемы, возникающие при оценке, являются результатом политических игр, связанных именно с безнадежными проектами, которые мы обсуждаем в данной книге. Однако, в большинстве крупных организаций могут припомнить дюжину-другую проектов, в которых команда разработчиков сама планировала, составляла бюджет и твердо обещала создать в этих условиях функционально полную систему; потом все эти обещания лопались как мыльный пузырь, и в результате не получалось вообще ничего. Поэтому нет ничего удивительного, что во многих таких организациях пользователи и высшее руководство, не отвлекаясь на переговорные процессы, просто навязывают жесткие сроки и бюджеты типа «сделай-или-умри». Таково происхождение многих безнадежных проектов.
Сказанное вовсе не означает, что мы не должны прилагать никаких усилий к получению «разумных» оценок, которые можно было бы использовать во время предварительных переговоров по проекту. Крайне важно, чтобы менеджер проекта избежал соблазна пойти по пути наименьшего сопротивления и принять любые начальные условия безнадежного проекта как указ свыше. Одним из общих признаков того, что проектная команда приняла стиль поведения «самоубийственного» проекта (который обсуждался в предыдущей главе) является позиция, выражаемая менеджером проекта (и разделяемая участниками команды), которая заключается в следующем: «Мы не имеем представления, сколько времени реально потребует этот проект, да это и не имеет значения, поскольку нам уже сообщили конечный срок. Таким образом, нам придется работать семь дней в неделю и 24 часа в день, пока мы не свалимся от изнеможения. Пускай нас ругают и колотят, но мы не в состоянии прыгнуть выше головы...»
Я не собираюсь долго обсуждать различные методы оценки; если у менеджера проекта нет никакой квалификации или опыта в оценке, то безнадежный проект - совсем неподходящее место, чтобы начинать обучение таким методам. Позволю себе все же отметить некоторые полезные и доступные ресурсы, которые имеются в данной области:
Средства оценки, являющиеся коммерческими продуктами - такие, как SLIM (Quantitative Systems Management), ESTIMACS (Computer Associates) и CHECKPOINT (Software Productivity Research (SPR)). Глава SPR Capers Jones, «гуру» в области метрик ПО, оценивает рынок средств оценки проектов примерно в 50 продуктов. Эти продукты нельзя назвать совершенными, и все они требуют от пользователя высокого уровня квалификации (здесь, как и в других областях деятельности, действует принцип «мякину заложишь - мякину получишь»). В лучшем случае с помощью таких продуктов можно получить оценку с точностью с точностью 10%. Даже если точность будет 50%, чем иметь дело только с продиктованными политикой требованиями, с которыми приходится справляться менеджеру проекта и которые на 1000% выходят за пределы возможностей проектной команды.
Динамические модели систем - разработано множество имитационных моделей, которые позволяют исследовать нелинейные зависимости между различными факторами, влияющими на динамику проектных процессов. Например, если частью стратегии безнадежного проекта является требование сверхурочной работы участников проекта со стороны менеджера, каков будет эффект через несколько недель или месяцев? Естественно предположить, что по сравнению с нормальным восьмичасовым рабочим днем «отдача» увеличится, однако наиболее опытный менеджер проекта также отметит, что производительность (измеряемая в количестве функциональных точек в день, строках кода в час и т.д.) по мере накопления усталости будет постепенно снижаться. Кроме того, возрастет количество ошибок, что, очевидно, повлияет на трудоемкость тестирования и отладки. И, если сверхурочная работа будет продолжаться достаточно долго, то проектная команда просто окажется на грани истощения. Из всех имитационных моделей, которые я видел, наилучшей представляется модель, описанная в [1], которая реализована на языках DYNAMO и iThink.
На тему об оценке проектов написано множество книг. Лучше всего начать с книги Барри Боэма [2]; отметим также, что его модель COCOMO, разработанная в начале 80-х годов, была позднее модифицирована в модель COCOMO-2 [3]. Другой классической работой является книга Фреда Брукса [4], также недавно переизданная с учетом современной технологии и практики разработки ПО. Еще одна новая книга, которую можно рекомендовать - это работа Джима Маккарти [5].
Сам процесс оценки достаточно изучен и документирован, и организации, подобные Software Engineering Institute (SEI), уже опубликовали различные руководства и отчеты [6,7], которые могут помочь при выполнении оценки проектов.
Такие распространенные методы, как прототипирование, также могут использоваться для оценки критичности тех или иных проектных ограничений для всей разрабатываемой системы в целом. Этот подход ни в коем случае не может служить «защитой от дурака», но, тем не менее, он позволяет привнести немного здравого смысла в проектную команду и окружающих ее менеджеров и заказчиков. Если руководство хочет, чтобы команда из трех разработчиков написала миллион строк кода за 12 месяцев, то следовало бы в течение первого месяца разработать небольшой прототип будущей системы, который, по крайней мере, позволит грубо оценить производительность проектной команды, а также реализуемость проекта в целом.