Аз съм програмист на договор с много опит. Свикнал съм да бъда нает от клиент, за да вляза и сам да направя софтуерен проект под една или друга форма, обикновено от нищото. Това означава чист лист, почти всеки път. Мога да внеса библиотеки, които съм разработил, за да получа бърз старт, но те винаги са незадължителни. (и зависи от получаването на правилните клаузи за IP в договора) Много пъти мога да уточня или дори да проектирам хардуерната платформа... така че тук говорим за сериозна свобода.
Виждам употреби за конструиране на автоматизирани тестове за определен код: библиотеки с повече от тривиална функционалност, основна функционалност с голям брой препратки и т.н. По принцип, тъй като стойността на част от кода нараства при интензивна употреба, мога да го видя би било все по-ценно автоматично да тествам този код, за да знам, че няма да го наруша.
Въпреки това в моята ситуация ми е трудно да рационализирам нещо повече от това. Ще приемам нещата, когато се окажат полезни, но нямам намерение да следвам сляпо каквото и да било.
Намирам много от нещата, които правя в „поддръжката“, всъщност са малки промени в дизайна. В този случай изследванията нямаше да ми спестят нищо и сега трябваше да се сменят и те. Силно итеративен подход за проектиране, който първо е мъниче, работи много добре за мен. Не мога да си спестя толкова много време с по-обстойни тестове.
Хоби проектите са още по-трудни за оправдаване... те обикновено са всякакви - от уикенди до около месец. Грешките в крайния случай рядко имат значение, всичко е свързано с игра с нещо.
Четейки въпроси като този, най-гласуваният отговор изглежда казва, че в опита/мнението на този автор TDD всъщност губи време, ако имате по-малко от 5 души (дори да приемете определено ниво на компетентност/опит с TDD). Това обаче изглежда покрива първоначалното време за разработка, а не поддръжката. Не е ясно как TDD се натрупва през целия жизнен цикъл на даден проект.
Мисля, че TDD може да бъде добра стъпка към ценната цел за подобряване на качеството на продуктите на нашата индустрия като цяло. Идеализмът сам по себе си обаче вече не е толкова ефективен за мотивирането ми.
Наистина мисля, че TDD би бил добър подход в големи екипи или в екип от всякакъв размер, съдържащ поне един ненадежден програмист. Това не е моят въпрос.
Защо единствен разработчик с добри резултати ще приеме TDD?
Бих искал да чуя за всякакъв вид показатели, направени (официално или не) на TDD... фокусирани върху соло разработчици или много малки екипи.
Ако това не е така, анекдоти от вашите лични преживявания също биха били добри. :)
Моля, избягвайте да изразявате мнение без опит, който да го подкрепи. Нека не превръщаме това в идеологическа война. Също така аргументът за пропускане на по-големи възможности за заетост. Това е просто въпрос за ефективност.