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