В новом проекте мы начали внедрять множество новых технологий, с которыми мы не были знакомы, и архитектуру, в которой у нас нет большой практики. Другими словами, интерфейсы и взаимодействия между классами сервисов и т.д. то, что мы строим, довольно изменчиво, тем более благодаря внутренней и обратной связи с клиентами. Хотя я всегда был разочарован постоянно меняющейся спецификацией, я вижу в какой-то мере необходимую часть построения чего-то, чего мы никогда не строили раньше - если бы мы просто придерживались первоначального дизайна и объема, конечный продукт, вероятно, был бы намного менее инновационный и полезный, чем он становится.
Я также представил тестовую разработку (TDD), поскольку преимущества хорошо документированы и концептуально мне понравилась эта идея. Еще две новые вещи, которые нужно изучить - NUnit и насмешка - но, увидев все эти зеленые круги, все это стоило.
Тем не менее, с течением времени эти постоянные изменения в дизайне, по-видимому, означали, что я проводил гораздо больше времени, меняя свои тесты, чем я сам писал сам код. По этой причине я вернулся к старым способам тестирования, то есть не автоматизирован.Хотя я не сомневаюсь, что приложение будет гораздо более надежным с сотнями отличных модульных тестов, я нашел компромисс, чтобы запустить продукт в основном недопустимым. Мой вопрос заключается в том, что - кто-нибудь из вас также обнаружил, что TDD может быть проблемой, если вы прототипируете что-то/создаете бета-версию? Разрабатывает ли TDD гораздо более естественно рука об руку с чем-то, где спецификации более фиксированы или где разработчики имеют больше опыта в языке и технологиях? Или я сделал что-то принципиально неправильное?
Обратите внимание, что я не пытаюсь критиковать TDD здесь - просто я не уверен, что он всегда подходит для всех ситуаций.