This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
<pre>Author/s : Kent Beck Publisher : Addison-Wesley Category :Project management, Process and Best Practices Review by : John Wetherbie Rating : 7 horseshoes</pre> This book to introduces programmers to Test-Driven Development (TDD). The book is divided into three sections: the first two take the reader through the development of tests and code for multi-currency arithmetic and an automated testing framework. The third section presents patterns for Test-Driven Development. TDD can help (or make) you think about interfaces. On page 4 the author writes: "When we write a test, we imagine the perfect interface for our operation. We are telling ourselves a story about how the operation will look from the outside. Our story won't always come true, but its better to start from the best-possible application program interface (API) and work backward than to make things complicated, ugly, and 'realistic' from the get-go." How very true! One problem I had was that I found myself thinking: "C'mon, hurry up! Why is this simple little thing taking so long?". The answer is that the author is showing you how TDD works and that it is OK to take small steps. The author writes: "Remember, TDD is not about taking teeny-tiny steps, it's about being able to take teeny-tiny steps. Would I code day-to-day with steps this small? No." I needed to remind myself of this from time-to-time. This book is a very good introduction to Test-Driven Development. It contains software development nuggets that can be applied whether or not you are using this development approach. </review>
<pre>Author/s : Kent Beck Publisher : Addison Wesley Category :Project management, Process and Best Practices Review by : Jason Menard Rating : 6 horseshoes </pre> This Kent Beck title is an introduction to the world of Test-Driven Development (TDD). The book teaches the concepts of TDD by working through two complete sample projects. Along the way, Beck gives the reader valuable insight into the thought process and techniques behind successful test-driven development. When the reader has finished working through these sample projects, he should know enough about TDD to get started working on a TDD project. The book is divided into three sections. The first two sections are each walkthroughs of the aforementioned sample projects using TDD. The third section is a collection of notes and useful tips to try to get the most out of TDD. If you've ever read anything from Beck, then you should be familiar with his style. If you haven t, Beck is an engaging enough writer, and the text flows smoothly and is fairly pleasant to read. It would help to be familiar with some member of the xUnit family prior to reading this book. Beck uses Java and JUnit for the first section, but never really goes into discussing the JUnit API. Readers unfamiliar with xUnit may have no idea how to proceed with writing their own tests using one of these frameworks. True the API is simple enough that its functions may be ascertained simply by reading the code, but this is no reason not to provide explanation. The second sample project is an actual implementation of xUnit, so a bit more information may be gleaned here. Beck made the curious decision to use Python as the language of implementation for the second project, although he does provide explanation of the language's fundamentals. Finally, none of the sample projects are really complicated enough to do more than get us going on the path of TDD. There will still be many hurdles to climb when working on a real-world project. If you are seeking a basic introduction to test-driven development, then you might enjoy this title. If you are a Java developer interested in exploring TDD more in-depth, there are better books out there.