Ответ на этот вопрос может заполнить книгу.
Я думаю, что одной из основных причин является то, что гибкая разработка фокусируется на результатах. Он всегда ориентирован на то, чтобы доставить именно то, что наиболее актуально здесь и сейчас.
Другая причина состоит в том, что основанные на истории практики планирования и оценки, которым следуют гибкие процессы, дают гораздо лучшую оценку того, что и когда можно доставить.
Хороший пример того, насколько эффективно планирование на основе истории, - это проект, над которым я работал. В течение пары месяцев (до того, как мы приняли гибкую разработку), руководитель проекта считал, что мы можем выполнить его в срок, и это было около 18 месяцев с момента его окончания. У всех разработчиков было ощущение, что это, вероятно, нереально. После начала гибкого планирования у руководителя проекта все еще была оптимистичная оценка ситуации. Но только после нескольких спринтов руководитель проекта понял, что у команды просто не было возможности выполнить все требования в ожидаемое время. И это было все еще больше чем 12 месяцев от крайнего срока.
Так что гибкие практики также проясняют реальность намного раньше.
И, наконец, гибкие команды, как правило, чаще применяют практики, которые создают лучшее качество кода, например, разработку на основе тестов, частый рефакторинг, постоянную интеграцию, обзор однорангового кода / парное программирование и т. Д. Не то, что традиционные программные проекты запрещают эти практики, они просто склонны не так много внимания.