vit_r: default (vit_r)
vit_r ([personal profile] vit_r) wrote2014-11-08 11:47 am
Entry tags:

В дебрях водопада

One of the key principles in the Agile Manifesto is to have working software at the end of every sprint. Yet, only 20% of teams that call themselves ’agile’ actually do this.
Из рекламы вебинара

Они не могут даже этого...

На самом деле, это враньё. Если рассматривать манифест не с точки зрения Эффективных Менеджеров™, а с точки зрения инженеров, если к концу спринта рабочая версия не будет готова, надо сдвинуть сроки, а если направление развития выбрано ошибочно, то вообще выбросить неправильные части и всё перепланировать заново.

[identity profile] vit-r.livejournal.com 2014-11-08 03:59 pm (UTC)(link)
Нет, надо просто добавлять новое, не ломая старое.

Угу. Добавить к самокату ещё четыре колеса и мотор, чтобы оно стало мотоциклом класса Harley Davidson

В любом софте всегда будут ошибки. Причём, не просто программные ляпы, но и архитектурные заблуждения. Их надо исправлять, а не ставить на "почти работающем" софте новые заплатки.

[identity profile] sab123.livejournal.com 2014-11-09 03:16 am (UTC)(link)
> Угу. Добавить к самокату ещё четыре колеса и мотор, чтобы оно стало мотоциклом класса Harley Davidson

А что, у мотоциклов нынче 6 колес? Но вообще принцип именно такой. Менять постепенно, а не переписывать с нуля.

> В любом софте всегда будут ошибки. Причём, не просто программные ляпы, но и архитектурные заблуждения. Их надо исправлять, а не ставить на "почти работающем" софте новые заплатки.

"Архитектурные заблуждения" - это не заблуждения, а нормальное явление. По мере развития проекта накапливается его понимание и соответственно расширяется архитектура. То самое про что я и расскзал. Сначала меняем внутреннюю архитектуру, не меняя функциональность, потом начинаем расширять функциональность.

А вот боязнь поменять архитектуру и жажда все переписывать сначала - это признак отсутствия мозга. И отсутствия нормальных тестов.

[identity profile] vit-r.livejournal.com 2014-11-09 09:03 am (UTC)(link)
Сначала меняем внутреннюю архитектуру, не меняя функциональность

Когда тут перестраивают старые дома, оставляют только фасад, а всё за ним разрушают и делают заново.

[identity profile] sab123.livejournal.com 2014-11-10 05:26 am (UTC)(link)
Программа - не дом, а ЧЕРТЕЖ дома. Дом - это то, что программа делает.

И да, именно так, оставляют видимое пользователем, а остальное меняют. Потому что для видимого пользователем есть тесты. Которые позволяют удостовериться, что измененная внутренняя структура ничего не испортила.

[identity profile] vit-r.livejournal.com 2014-11-10 06:15 am (UTC)(link)
Основные архитектурные ошибки идут из ошибок в ТЗ. То есть, как раз из "видимого пользователем"

[identity profile] sab123.livejournal.com 2014-11-12 03:10 am (UTC)(link)
А это - вторая часть, расширение/изменение функциональности в пределах имеющейся архитектуры. Что действительно просиходит более часто. Архитектуру приходится менять только когда она дальше не растягивается.

[identity profile] vit-r.livejournal.com 2014-11-12 07:22 am (UTC)(link)
Архитектуру надо менять не когда "приходится", а когда её растягивание начинает пожирать ресурсы. А так, знаю проекты, где практически вся работа уходила в это "растягивание".

Но большинство программистов не умеет считать деньги.