 |
Growing Object-Oriented Software, Guided by Tests by Nat Pryce, Steve Freeman
Book Summary InformationAuthor: Nat Pryce, Steve Freeman Edition: Paperback Audio: English (Unknown); English (Original Language); English (Published) Published: 2009-10-22 ISBN: 0321503627 Number of pages: 384 Publisher: Addison-Wesley Professional
Book Reviews of Growing Object-Oriented Software, Guided by TestsBook Review: Excellent, Though Short of Its Potential Summary: 4 Stars
On the whole, this is an exciting book, one that shows that the book industry is not dead yet (although screening developers for an open position would make you think it were), but it's not what it thinks it is. It's almost comical, in a way, to see this book's conception of itself unfold. In the beginning of the book, it seems the authors believe they can show us ways to make TDD better. By the end, the Little Corporal is crowning himself emperor. The TDD/BDD historicity (and its nationalistic twinge) are ludicrous and add nothing to the book. Example of the Trump school of PR: DIY. On the substantive level, this book is confused about what it is because it takes its example (one of the best things about the book) as a representative of the world, which it most certainly is not.
The example, which is detailed, thoroughgoing, and significant, is an auction application, and the focus in 'building' it is restricted completely to laying down the various protocols that dictate how parties interact through bidding, winning, losing, etc. This is not only not a serious picture of a project (as in one), it's laughable to be considered even complete for what it was. I am so bloody sick of examples that are of the form 'let's look at writing the 10 thousandth version of ______.' I am in software development (and love it) because it is invention. There is zero invention here. [Somebody, please address the part of the programming audience who are not ankle-chained to a rock pile, just once!]
But there are other reasons why this 'work' is not representative. It's focused solely on the protocols in the program. If there were any honest, self-reflexive rhetoric in this book, the authors would have at least nodded toward the other things one would have to do to make an auction work. Their total absence beckons simultaneously to wizardry (Oz/Maxwell's Demon) and infantilism. What is JMock going to do to make it easier to build interfaces? to test the obvious role of things like little languages (DSLs)? If your favored way of situating yourself in reality is statistics, what percentage of the overall effort does this protocol layer represent? Even of an auction app that has no invention, a small fraction. I could bring up a ton of examples off the top of my mind that would have almost no protocol work to them.
Does this mean JMock or mocking in general are useless? No. I am offering a counter argument to the preposterous one in the book that makes it seem like JMock was the keystone to the last decade.
The best things about this book are: 1. even though it's a narrow one, a book like this is much better using real examples, real code. 2. the concept of the walking skeleton (this is one of the areas of seriously underdelivery) and 3. some of the tips about using static builders, creating test data, acknowledging the limits of mocks, etc.
The boldest thing in this book is the concept of the walking skeleton. If I could have coaxed the authors in process, I would have not only told them to make this the centerpiece of the book, but to address the difficulties in being able to really accomplish this in practice. Frankly, if these guys helped us conquer something in the last decade, they ought send out a memo to the Java world, which is more fragmented than ever, and I think everyone would agree, has no grip on the technological underpinnings such a strategy implies (falls down on the first requirement: the ability to perform end-to-end tests). Ironically, one of the reasons this IDEA was so compelling to me is precisely the opposite implication herein: because we have NOT been able to practice this though many of us have wanted it FOREVER!! Did you ever use Cactus? I did. In the bloody beginning. But this is compelling to me now because I have been doing Objective-C/Cocoa programming, and though they don't have this right now, they showed it at WWDC in the form of unit tests for the components and fully functional integration tests in the coming version of Instruments. In summary: the book is attempting to milk an empty utter here, and it doesn't tug very hard or for very long.
Do I think this book is worth reading? Yes, absolutely. I look forward to the book that's going to deliver the real promise of the check this one writes itself and then cashes, in any language, on any platform. Hopefully soon..
Summary of Growing Object-Oriented Software, Guided by TestsForeword by Kent Beck "The authors of this book have led a revolution in the craft of programming by controlling the environment in which software grows.? --Ward Cunningham ?At last, a book suffused with code that exposes the deep symbiosis between TDD and OOD. This one's a keeper.? --Robert C. Martin ?If you want to be an expert in the state of the art in TDD, you need to understand the ideas in this book.?--Michael Feathers Test-Driven Development (TDD) is now an established technique for delivering better software faster. TDD is based on a simple idea: Write tests for your code before you write the code itself. However, this "simple" idea takes skill and judgment to do well. Now there's a practical guide to TDD that takes you beyond the basic concepts. Drawing on a decade of experience building real-world systems, two TDD pioneers show how to let tests guide your development and ?grow? software that is coherent, reliable, and maintainable. Steve Freeman and Nat Pryce describe the processes they use, the design principles they strive to achieve, and some of the tools that help them get the job done. Through an extended worked example, you?ll learn how TDD works at multiple levels, using tests to drive the features and the object-oriented structure of the code, and using Mock Objects to discover and then describe relationships between objects. Along the way, the book systematically addresses challenges that development teams encounter with TDD--from integrating TDD into your processes to testing your most difficult features. Coverage includes ? Implementing TDD effectively: getting started, and maintaining your momentum throughout the project ? Creating cleaner, more expressive, more sustainable code ? Using tests to stay relentlessly focused on sustaining quality ? Understanding how TDD, Mock Objects, and Object-Oriented Design come together in the context of a real software development project ? Using Mock Objects to guide object-oriented designs ? Succeeding where TDD is difficult: managing complex test data, and testing persistence and concurrency
Languages & Tools Books
|
 |
|
|
Agile Software Development, Principles, Patterns, and Practicesby Robert C. Martin Prentice Hall; Published: 2002-10-25; Hardcover; BookBest price: $55.73Price in other shops: $80.00
Continuous Integration: Improving Software Quality and Reducing Riskby Paul M. Duvall, Steve Matyas, Andrew Glover Addison-Wesley Professional; Published: 2007-07-09; Paperback; BookBest price: $37.01Price in other shops: $49.99
The Pragmatic Programmer: From Journeyman to Masterby Andrew Hunt, David Thomas Addison-Wesley Professional; Published: 1999-10-30; Paperback; BookBest price: $34.95Price in other shops: $49.99
xUnit Test Patterns: Refactoring Test Codeby Gerard Meszaros Addison-Wesley; Published: 2007-05-31; Hardcover; BookBest price: $41.86Price in other shops: $64.99
Succeeding with Agile: Software Development Using Scrumby Mike Cohn Addison-Wesley Professional; Published: 2009-11-05; Paperback; BookBest price: $33.57Price in other shops: $49.99
Working Effectively with Legacy Codeby Michael Feathers Prentice Hall; Published: 2004-10-02; Paperback; BookBest price: $38.33Price in other shops: $59.99
Test Driven Development: By Exampleby Kent Beck Addison-Wesley Professional; Published: 2002-11-18; Paperback; BookBest price: $28.04Price in other shops: $49.99
Refactoring: Improving the Design of Existing Codeby Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts Addison-Wesley Professional; Published: 1999-07-08; Hardcover; BookBest price: $25.00Price in other shops: $64.99
Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series (Fowler))by Jez Humble, David Farley Addison-Wesley Professional; Published: 2010-08-06; Hardcover; BookBest price: $31.27Price in other shops: $49.99
Clean Code: A Handbook of Agile Software Craftsmanshipby Robert C. Martin Prentice Hall; Published: 2008-08-11; Paperback; BookBest price: $32.89Price in other shops: $49.99
|