Feature creep (расползание возможностей)

Feature creep - creeping featurism, ползучий улучшизм - процесс непрекращающегося добавления функций в программу, приводящий фактически к более медленному, неудобному и дорогому и неэффективному продукту.

Продукт, находящийся в состоянии feature creep, часто называют bloatware - раздутое программное обеспечение. Добавляемый функционал называют bells and whistles - свистоперделки (дословно, бубенчики и свистульки)

Основые причины раздувания ПО:

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

Feature creep прямо противоречит: - идеям Zenware и Disctraction-free software - философии UNIX

Feature creep - одна из частых причин того, что проект выходит за рамки бюджета, выбивается из запланированных сроков и, в конечном итоге, закрывается.

Бесконтрольное расползание возможностей ведет к размытию рамок проекта, которые были обозначены изначально. Это называется scope creep.

Расползание возможностей, помноженное на сжатые сроки, всегда ведет к применению непродуманных, дорогих в сопровождении "обходных" решений (hacky solution). Давление по срокам со стороны менеджмента заставляет специалистов проектировать и реализовывать функционал в режиме "лишь бы работало как-нибудь", не обращая внимания на архитектурные просчеты, ошибки дизайна и баги в коде. С течением времени, ошибки накапливаются и через какое-то время, проект проходит точку невозврата и переходит в состояние, когда починка ошибки в одном месте прямо ведет к поломке в другом. И так по кругу.


Источники: