Нещодавно я зацікавився гнучкими методами розробки програмного забезпечення, і з тих пір, коли я бачив багато статей, вказується, що ці практики дозволяють зменшити загальні витрати.
Логіка, що стоїть за цим, зазвичай йде так: якщо ваші вимоги змінюються, ви можете відобразити цю зміну в наступному відставанні спринту, і це призведе до зниження витрат, оскільки проектування нової функції та її реалізація близькі між собою в часі, тому вартість зменшується, згідно з відомим правилом, що чим пізніше потрібно внести зміни до своїх вимог, тим дорожче буде задовольнити цю вимогу.
Але середні та великі проекти програмного забезпечення є складними. Раптова зміна вимог не означає, що вам не доведеться торкатися інших частин вашої системи, щоб задовольнити цю вимогу. У багатьох випадках архітектуру потрібно буде дуже змінити, що також означає, що вам потрібно буде знову реалізувати всі функції, які спиралися на старішу архітектуру. Таким чином, вся справа зі зниженими витратами начебто йде тут. Звичайно, якщо нова вимога вимагає нової незалежної частини системи, це не проблема, стара архітектура просто зростає, її не потрібно переосмислювати і перевтілювати.
І навпаки. Якщо ви використовуєте водоспад і раптом зрозумієте, що потрібно ввести нову вимогу, можете піти і змінити дизайн. Якщо потрібно, щоб існуюча архітектура була змінена, ви реконструюєте її. Якщо з цим насправді не возитися, а просто вводить нову частину системи, тоді ти йдеш і робиш всю роботу, тут ніяких проблем.
Зважаючи на це, мені здається, що єдиною перевагою спритного розвитку є робота над повною побудовою між спринтами, і для багатьох людей і приходів це не є критичним. Крім того, схоже, що спритний результат призводить до поганої архітектури програмного забезпечення в цілому, оскільки функції якось забиваються одна на іншу, спритні команди лише дбають про те, що функція працює, а не як вона працює. Це здається, що коли системи зростають із часом у складності, то гнучкі практики розробки фактично збільшують хаос у загальній архітектурі продукту, таким чином, врешті-решт, це призводить до підвищення витрат, оскільки вносити зміни буде все складніше, тоді як водоспад дозволяє вдосконалити свою архітектуру перш ніж щось звільнити.
Може хтось, будь ласка, вкаже мені, де я тут помиляюся, бо, очевидно, дуже багато людей користуються спритними у виробничих умовах, тож я десь помиляюся.