Full focus TDD

Не являюсь большим сторонником практик TDD. Скорее всего, дело в том, что я не работал в тех местах, где это было серьезной частью культуры, не видел как это может работать, и/или не находил мотивации перестроить мышление соответствующим образом.

Как правило, по TDD я делаю совсем простые вещи, вроде функций преобразований, валидаций, и так далее, когда результат очень детерминирован и легко кодируем в тестах.

Давно заметил, что наибольшая продуктивность в разработке у меня больше всего связана с понятностью задачи. Всегда я делаю в первую очередь не самые сложные или самые приоритетные задания, а самые простые и понятные. Даже если они объемные.

Теперь мне кажется, что главная польза от TDD не в том, что у вас код покрыт тестами еще до того, как он написан, а в том, что заранее составленный набор условий фокусирует разработчика на решении конкретной маленькой задачи. Вместо прокрастинации и раздумий о том,  с чего начать, какие структуры данных подготовить и так далее, вы предварительно очень сильно уточняете требования буквально до результата возврата функции. Это здорово помогает не отвлекаться и сосредоточиться на главном. Декомпозиция происходит не во время решения задачи, а до неё.

Мамонта нужно есть по частям, и если не сформировать в себе привычку это делать на постоянной основе, то есть большой риск так и не приступить к поеданию, или откусить по кусочку тут и там.

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


Понравился материал? Подписывайся на мой телеграм канал: https://t.me/full_of_hatred