"Death March"
The Complete Software Developers's Guide to Surviving "Mission Impossible" Projects

Edward Yourdon
Prentice Hall, 1997, ISBN 0-13-748310-4
http://www.prenhall.com

Как известно, в среде программистов никогда не бывает застоя - постоянно возникают новые идеи, зарождается множество прекрасных на первый взгляд информационных проектов, инициируются работы над развитием перспективных технологий. Однако все кругом "кипит", а реальное воплощение (не говоря уже о реальном массовом использовании) получает только малая толика проектов.

Предлагаемая книга стала результатом размышлений Эдварда Йордана (http://www.yourdon.com) - классика в области software engineering, автора нескольких бестселлеров по практике программирования, организации проектов, структурой и объектно-ориентированной технологии - о причинах возникновения и судьбах безнадежных проектов.

Согласно данному в книге определению, безнадежные проекты - это проекты, имеющие отклонение от нормы как минимум на 50%. Срок разработки сжат в два раза или людских ресурсов в два раза меньше чем требуется. Так часто бывает, когда возникают иллюзорные представления об истинных возможностях современных инструментальных средств, которые никогда не заменят квалифицированного программиста. Если предусмотренный бюджет оказывается на 50% меньше реально необходимого, либо в два раза завышена ожидаемая прибыль от выполнения проекта, вероятность реалиациии этого начинания сильно снижается, что переводит проект в ранг "мертворожденных".

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

Тем не менее, на невыполнимые проекты можно смотреть по разному, в зависимости от причин их появления. Не последнюю роль здесь играют амбициозные заявки менеджеров, "заболевших" синдромом покорителей Эвереста, а там "хоть трава не расти". Возможность подучиться за счет заказчика (кстати, типичная ситуация для России), заведомо не заботясь о результатах и реальных предпосылках успешной реализации проекта - также весьма распространенная причина. Часто на появление death march влияют недальновидные старшие менеджеры или наивные пользователи, сквозь розовые виртуальные очки смотрящие на действительность. Известно, что если человек занимает должность ниже своих возможностей, то в такой ситуации проявляются его достоинства, если выше - недостатки. Многие менеджеры, в прошлом обычно сами разработчики, оказавшись не на своем месте за год-два теряют связь с реальностью и часто перестают ориентироваться в тенденциях развития ИТ - в результате растет число невыполнимых проектов.

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

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

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

Отдельный интерес представляют исследования автора книги о причинах сознательного участия программистов и менеджеров в заведомо безнадежном проекте. В книге приводятся многочисленные примеры из реальной практики, когда программист, например, желает выглядеть героем - "Я был одним из тех кто принимал участие в космической программе". Среди более прозаических причин - боязнь остаться без работы.

В заключение автор делает достаточно оптимистичный вывод: безнадежные проекты - неотъемлемая часть программистской практики. Задача менеджеров и разработчиков вовремя идентифицировать такой проект, а затем определить свои цели, сведя к минимуму возможные негативные последствия, чтобы в первую очередь не пострадал заказчик. А уж какими именно способами этого добиваться: проводя более четкую оценку рисков, изолируя "гениальных" программистов-одиночек, привлекая консультантов-психологов, выявляющих и нейтрализующих внутренние подводные политические течения внутри компании - выбор варианта зависит от специфики каждого конкретного случая. Кстати, и на этот счет у автора книги наготове ряд рекомендаций.

Книгу можно заказать в компании Фольком Холдинг-Центр, тел. 251-4504, books@df.ru

Дмитрий Волков