На этой неделе на работе меня снова взволновали . Пройдя стандартную гибкую, TDD, совместную собственность, методологию разработки ad hoc, никогда не планируя ничего, кроме нескольких пользовательских историй на карточке, словесно пережевывая технические нюансы интеграции сторонних разработчиков до тошноты, даже не делая никаких реальных действий. продумывая или проявив должную осмотрительность и архитектурно связав весь производственный код с первым тестом, который приходит в голову кому-либо за последние несколько месяцев, мы достигаем конца цикла выпуска и вот, и видим, что внешне видимая функция, которую мы разрабатывали, слишком медленная использовать, глючить, становиться лабиринтно сложным и абсолютно негибким.
В ходе этого процесса были сделаны «пики», но они никогда не были задокументированы, и не было создано ни одного архитектурного проекта (не было ФС, так что, черт возьми, если вы не знаете, что разрабатываете, как вы можете планировать или исследовать это? ?) - проект переходил от пары к паре, каждый из которых когда-либо фокусировался только на одной истории пользователя, и результат был неизбежен.
Чтобы решить эту проблему, я вышел из радара, пошел (страшный) водопад, спланировал, закодировал и, по сути, не поменял пару и попытался сделать все возможное, чтобы работать в одиночку - сосредоточившись на твердой архитектуре и спецификациях, а не на модульных тестах, которые придет позже, как только все придавлено. Код теперь намного лучше и на самом деле полностью удобен, гибок и быстр. Некоторые люди, кажется, действительно обижались на меня, делая это, и старались изо всех сил саботировать мои усилия (возможно, неосознанно), потому что это идет вразрез со священным процессом гибкой разработки.
Итак, как вы, как разработчик, объясняете команде, что планирование работы не является «негибким», и как вы подходите к планированию гибкого процесса? (Я не говорю об IPM; я говорю о том, чтобы сесть с проблемой и сделать набросок сквозного проекта, который говорит, как проблема должна быть решена достаточно подробно, чтобы любой, кто работает над проблемой, знал, что архитектура и шаблоны, которые они должны использовать, и где новый код должен интегрироваться в существующий код)