На это решение влияет множество факторов, в том числе «технические»:
- что это за проект (например, в доме, с открытым исходным кодом, термоусадочная пленка, предприятие, драйвер устройства, ...)
- прогнозируемый размер проекта (например, человеко-лет) и команды
- прогнозируемое время жизни проекта (от одноразового прототипа до критически важного корпоративного приложения, которое будет работать в течение следующих 100 лет)
- как часто вы можете / должны выпускать новые релизы
и социальные:
- пользователи, желающие сотрудничать с командой в гибком стиле
- что такое культура, "нормальный способ ведения дел" в организации
- насколько менеджмент (и разработчики) открыты для новых идей, могут ли они быть убеждены в новых подходах (с вескими аргументами и доказательствами)
- это команда, находящаяся в коллективе или физически отделенная
Обратите внимание, что последние являются, по крайней мере, таким же, если не большим, важными факторами, как первые!
Технические факторы
Характер и размер вашего проекта сильно ограничивают частоту публикации новых выпусков, что, в свою очередь, влияет на вашу гибкость. Например. некоторые проекты с открытым исходным кодом могут выпускаться так часто, как вы пожелаете, в то время как согласно Джоэлю , программное обеспечение для термоусадочной пленки не следует обновлять чаще, чем каждые 1,5 года.
По мере роста команды, общение становится более формальным, и команда становится менее гибкой. Кроме того, чем важнее проект, тем более строгим и формальным становится процесс.
Социальные факторы
Если ваши пользователи не хотят или не могут напрямую сотрудничать с вашей командой, ловкость ограничена. Если управление застряло с традиционным мышлением и методами, ловкость снова ограничена. То же самое для физически разделенной команды.
Суть в том, что вам не нужно выбирать процесс раз и навсегда. Кроме того, имена и модные аббревиатуры не так важны, как то, что ваша команда действительно делает изо дня в день. Вы можете делать Waterfall или RUP в гибком стиле, а также эффективно превращать XP или SCRUM в жесткий, формальный процесс. В хорошем проекте процесс постоянно пересматривается, дорабатывается и совершенствуется в зависимости от ситуации и потребностей команды. Начните с чего-то, что кажется достаточно хорошим (и настолько простым, насколько это возможно), затем регулярно проводите ретроспективные встречи, чтобы собрать отзывы о том, что идет хорошо, что пошло не так, и что можно улучшить.