Краткий конспект доклада TDD вверх ногами.
Егор считает, что юниттесты - неотъемлемая часть работы программиста. Егор приводит в пример метафору про сетку безопасности, которую натягивают гимнасты для отработки своих трюков. Егор очень сомневается, что гимнасты не будут натягивать сеть по причинам, по которым некоторые разработчики отказываются писать тесты:
Сеть безопасности дает гимнастам уверенность, что совершённые ошибки в тренировке не будут стоить здоровья и карьеры трюкачам. Как гимнаст, не имеющий сети под собой, боится рисковать, так и разработчик не будет экспериментировать при реализации новых фич, боясь сломать предыдущий функционал.
Егор считает, что эти причины довольно нерациональны. Наивно полагать, что написание тестов - это какая-то второстепенная работа, которую делают (если делают) в последнюю очередь “когда остается время”. По мнению Егор, разработчик не должен делить время на разработку и на тесты, потому что тесты - неотъемлемая часть разработки. Тесты - это “сеть безопасности”, которая уберегает разработчиков от появления новых критичных и повторных появлений старых.
Более того, Егор считает, что когда разработчики говорят, что у них нет времени на тесты, они просто не умеют писать тесты.
You just don’t know how!
Егор ссылается на свою статью Fools don’t write unit tests, где объясняет более подробно свою точку зрения.
Вторую причину также Егор ставит под сомнение. Вы никогда не услышите от гимнаста, что он не натянул сеть, потому что “это слишком дорого”. То же можно уверенно сказать и про строителей, которые используют сети для падающих людей и инструментов. Сравнение разработки софта и гимнастов со строителями имеет смысл, потому что часто баги в продакшене приводят к не меньшим потерям, а иногда даже и к краху всей компании.
Егор считает, что предлагать заказчику варианты “Разработка софта за N денег” и “Разработка софта с тестами за N+ денег” совершенно не имеет смысла, ведь заказчик выберет в большинстве случаев первый более дешевый вариант.
Мы построим вам здание без систем безопасности за один миллион долларов, а без них - за миллион двести.
Строители почти никогда не предложат такую сделку заказчику, так почему же разработчики предлагают. По мнению Егора, заказчикам нужно предлагать вариант разработки софта без тестов как гораздо более дорогой. Объяснить увеличение стоимости Егор предлагает тем, что команда разработки без тестов будут меньше экспериментировать и дольше тестировать. Это явление Егор называет “Fear driven development”.
Эта причина однозначно нерациональна. Ее корень - неумение писать тесты.