В эту пятницу я провел несколько мучительных часов в попытке слегка подкорректировать разрабатываемое нами приложение: вынести часть логики из одного класса в другой (поместить его на уровень выше).
В процессе изменения одной части кода возникало желание поменять ещё и соседние функции, благо все изменения лежали в рамках намеченной цели. Много маленьких модификаций, которые не должны были сильно повлиять на общую работу, повлекли за собой сбой во многих тестах.
Я провел 4 часа в попытках привести тесты и код в порядок. Потерял уверенность в стабильности нашей системы и уже был готов к тому, что проведу все выходные с мыслями о том, как же мне все переделать, чтобы было красиво и работало
За час до конца рабочего дня я открыл книжку Кента Бека “Test Driven Development”, чтобы вдохновиться. Просмотрев пару страниц я обратил внимание на одну фразу, которая помогла мне вспомнить один из важных принципов TDD и XP - Baby Steps: делать за один шаг очень маленькие изменения и проверять их, запуская все тесты.
Я взял лист бумаги, написал список желаемых изменений и определил порядок их внесения. Откатил проект к предыдущей версии, не смотря на то, что мой код казался мне очень хорошим и было жаль потраченного на его написание времени. Начал последовательную реализацию пунктов списка и после каждого запускал тесты.
Последовательные изменения и малое количество “упавших” тестов позволяли четко видеть причину. Я правил тесты и добивался их 100% работы. Делал commit в репозиторий и переходил к следующему пункту своего списка.
В итоге вся работа была выполнена за 40 минут. В конце рабочего дня я был уверен в системе, в себе и в том, что проведу хорошие выходные.
Внося изменения в систему делайте маленькие шаги. Контролируйте поток своих желаний и идей. Фиксируйте их на листе бумаги, а не в коде. Я отступил от этого правила, за что и был наказан.













Мы на эти грабли наступили - затеяли как-то рефакторинг подзабив на юнит тесты (чего их править - один фиг после рефакторинга много чего поменяется).
Проект просто рассыпался. Пришлось взять тайм-аут на неделю чтоб восстановить работоспособность