Growing Object-Oriented Software Guided by Tests jest pierwszą książką, której przeczytanie pomogło mi tak naprawdę zrozumieć na czym polega TDD. Termin ten jest powszechnie używany, jednak niewiele firm/projektów, które deklarują używanie TDD w procesie rozwoju oprogramowania, stosuje tę metodologię poprawnie.
We wstępnych 3 rozdziałach autorzy tłumaczą jakie miejsce i rolę zajmuje TDD w typowym projekcie, oraz wprowadzają do testów JUnit. Całkiem przyjemne wprowadzenie dla osób kompletnie niezaznajomionych z tematem. W następnych paru rozdziałach opisywany jest rozwój projektu snajpera aukcyjnego, począwszy od pierwszej linii kodu. I tutaj niestety jest słaby punkt tej książki. Dostępny kod na stronie wydawcy został wrzucony jako jedna paczka, bez zachowanej historii. Jest to o tyle dziwne, że kod jest udostępniony na Githubie. Nie widzę powodu, dla którego autorzy nie mogliby nie chcieć uwidocznić każdego kroku w historii repozytorium. Ułatwiłoby to znacznie podążanie za przykładami w książce i analizowanie kolejnych zmian. Mimo wszystko, rozdziały są napisane dostatecznie szczegółowo, a decyzje dotyczące projektu wyjaśnione w miarę przejrzyście.
Funkcje snajpera są rozwijane rozdział po rozdziale, aż do końca założonego planu, w rozdziale 19. Ostatnie parę rozdziałów porusza kwestie jakości testów, ich czytelności czy testowania trudniejszych aspektów (persystencja, wątki) projektu.
Ocena 7/10, gdyby kod z zachowaną historią byłby dostępny to byłoby 8/10. Tak czy inaczej, polecam.