Prywatnie w domu klepię sobie jednak projekciki na boku i prowadzę je zgodnie z TDD - czyli najpierw staram się układać testy
Muszę powiedzieć że pisanie w ten sposób znacznie polepsza elastyczność kodu i jego projekt. W ogóle odpada faza projektowania bo projekt tworzy się sam podczas pisania testów; w dodatku projekt ten jest dużo bardziej życiowy niż ten który bylibyśmy w stanie wymyślić na sucho w głowie czy na kartce.
Badania naukowe tego nie potwierdzają [1, 2]. Tzn. nie potwierdzają, że TDD znacząco poprawia elastyczność kodu, projekt, jakość produktu czy produktywność programistów. Moje doświadczenie w recenzowaniu kodu pisanego przez jednych z topowych programistów [3] też pokazują, że TDD nie zastępuje fazy projektowania w głowie czy na kartce. Otóż u nas bardzo rzadko wrzuca się coś bez testów, a mimo to wielokrotnie podczas review wychodziły konkretne zastrzeżenia odnośnie projektu / architektury. Wysokie pokrycie testami jakoś temu nie zapobiegło. Testy jednostkowe są użyteczne, ale nie są "silver bullet" na wszelkie bolączki projektu.
Nie przeczę, że TDD poprawia testowanie kodu w porównaniu z całkowitym brakiem testowania, ale inne efekty są raczej mocno przesadzone. I podejrzewam, że dlatego w wielu firmach się TDD nie stosuje, za to stosuje się inne formy testowania (integracyjne, akceptacyjne itp.). Testy jednostkowe mają tendencję do łapania trywialnych błędów, które i tak łatwo wyłapać i zdebugować, natomiast testy integracyjne/funkcjonalne łapią znacznie "ciekawsze" przypadki i IMHO wnoszą znacznie większą wartość do projektu.
I jeszcze taka ciekawostka: częściej zdarzało mi się, że test jednostkowy się wywalał przez błąd w teście niż przez błąd w testowanym kodzie. Wydaje mi się, że to wynika chyba dlatego, że przypadkom testowym poświęca się jakoś znacznie mniej uwagi, a do tego przypadków testowych jest znacznie więcej niż przypadków w testowanym kodzie - tj. kod jest ogólny, a testy są bardzo specyficzne.
Natomiast jeśli firma nie stosuje testowania w żadnej postaci w ogóle, to zdecydowanie trzymałbym się od takiej firmy z daleka.
[1] http://madeyski.e-informatyka.pl/download/Madeyski05b.pdf
[2] http://dl.acm.org/citation.cfm?id=1968311
[3] że są dobrzy to wiem, bo część pracowała wcześniej w Google/Apple/Microsoft, a część odeszła tamże i raczej nie miała problemów się dostać; część kończyła uczelnie typu Stanford/Berkeley gdzie raczej słabi się nie utrzymują