Главные риски программных проектов и способы реагирования
Пример списока из пяти главных причин провала программных проектов — следующий:
· Требования заказчика отсутствуют / не полны / подвержены частым изменениям.
· Отсутствие необходимых ресурсов и опыта.
· Отсутствие рабочего взаимодействия с заказчиком.
· Неполнота планирования. «Забытые работы».
· Ошибки в оценках трудоемкостей и сроков работ.
Это звучит банально, но сколько бы раз об этом не твердили ранее, по-прежнему, приходится сталкиваться с программными проектами, в которых отсутствуют какие-либо определенные цели и требования. Цитата из жизни: «Была бы разработана хорошая программа, а какой процесс автоматизировать с ее помощью, мы найдем». К этому можно добавить только одно: «Когда человек не знает, к какой пристани он держит путь, для него никакой ветер не будет попутным» (Сенека Луций Аней, философ, 65-3 до н.э.)
К часто упускаемым требованиям можно отнести:
· Функциональные
· Программы установки, настройки, конфигурации.
· Миграция данных.
· Интерфейсы с внешними системами.
· Справочная система.
· Общесистемные
· Производительность.
· Надежность.
· Открытость.
· Масштабируемость.
· Безопасность.
· Кросплатформенность.
· Эргономичность.
Как правило, эти требования «всплывают» при подготовке и проведении приемо-сдаточных испытаний и могут сильно задержать проект по времени и увеличить трудозатраты на его реализацию. Чтобы этого не происходило, следует достигать соглашения с заказчиком по всем перечисленным пунктам предпочтительнее еще на стадии инициации проекта. Например, если требования портируемости продукта на разные аппаратно-программные платформы нет, то это целесообразно включить в раздел концепции с допущениями проекта.
Если вероятность изменений требований проекта высока, то возможны следующие подходы для реагирования на данный риск:
· Переоценка проекта каждый раз, когда требования добавляются / изменяются (уклонение).
· Итерационная разработка. Контракт с компенсацией затрат на основе «Time & Materials» (передача риска Заказчику).
· Учет в оценках трудоемкости и сроков возможности роста требований, например, на 50% (резервирование риска).
И еще, при сборе требований следует соблюдать принцип минимализма Вольтера: «Рассказ закончен не тогда, когда в него нечего добавить, а тогда, когда из него нечего больше выкинуть». Для большинства программных продуктов применим принцип Парето: 80% ценности продукта заключены лишь в 20% требований к нему.
Если у нас в проекте недостаточно квалифицированных специалистов, то мы можем снизить последствия этого риска, применив следующие действия:
· Привлечь экспертов-консультантов на начальных этапах.
· Учитывать в оценках трудоемкости издержки на обучение сотрудников.
· Уменьшать потери от текучести кадров, привлекая на начальном этапе избыточное число участников.
· Учесть в оценках «время разгона» для новых сотрудников.
Для установления открытых и доверительных отношений с заказчиком, необходимо предпринимать следующие шаги:
· Постоянное взаимодействие.
· Согласование пользовательских интерфейсов и разработка прототипа продукта.
· Периодические поставки тестовых версий конечным пользователям для их оценки.
При планировании работ по проекту часто «забывают»:
· Обучение.
· Координация работ.
· Уточнение требований.
· Управление конфигурациями.
· Разработка и поддержка скриптов автосборки.
· Разработка автотестов.
· Создание тестовых данных.
· Обработка запросов на изменения.
И еще. Не стоит надеяться, что участники проекта будут каждую неделю по 40 часов работать именно над вашим проектом. Есть множество причин, по которым они не смогут работать по проекту 100% своего времени. К списку наиболее распространенных причин этого относятся:
· Сопровождение действующих систем.
· Повышение квалификации.
· Участие в подготовке технико-коммерческих предложений.
· Участие в презентациях.
· Административная работа.
· Отпуска, праздники, больничные.
Рекомендация, планировать, что разработчики, которые назначены в ваш проект на 100% будут реально работать над вашими задачами в среднем от 24 до 32 часов в неделю.