3 Недели назад начал применять практики из
экстримального программирования (ныне плавно эволюционировавшего в Шуструю разработку -
Agile Development. Просто название у первого более красивое... как раз для заголовка) в проекте, над которым я работаю уже
почти год (9.5 месяцев). Проект представляет из себе нечто похожее на небольшую
ERP систему, которая должна сменить в производстве старую версию системы, для решения проблем автоматизации некого заграничного предприятия.
Причины которые, подтолкнувшие меня к этому шагу:
- Необходимость в
автоматическом тестировании (С ручным, я просто не мог справиться)
- Большое количество новых фунциональностей, необходимостить в которых возникла в последнее время
- Переработка существующего кода, что более 3м
клиентского и
серверного кода -
Рефакторинг (
Refactoring). Часть которого использует достаточно не стабильный компонент, от которого со временим придеться избавиться (в следующей версии... через год)
-
Короткие релизы - раз в неделю, чтобы конечный пользователь мог оценивать результаты и выдыигать свои пожелания.
-
Постоянное общение с заказчиком.
От работы не более 40 часов в неделю пришлось отказаться - сроки...
Как показала практика, идея себя оправдала:
В последнем
релизе не было обнаруженно
ни одного изъяна (тестировали его под нагрузкой в реальных условиях, с самыми произвольными данными).
До этого, в 3-х недельных релизах находили по 20-25 проблем.
В результате, основной упор был сделан на
Test-Driven Development (по-русски: пишешь тест - потом уже код логики) и
рефакторинг (приписал тест ко компоненту и рефакторишь его). При этом в паре эти практики оказались гораздо более эффективными, нежли поодиночке.
При этом, это далеко не первый мой опыт работы в стиле
Agile, но подобных результатов он мне еще не приносил.
Осталось пересилить в себе свинью, и начать писать тесты всегда и с самого начала.
В дальнейшми постараюсь поделиться своим опытом более развёрнуто, с конкретными примерами.
П.С.
Сегодня будет первая ночь за последнюю неделю, когда я могу спать спокойно.