Skip to content
HomeVideosBooks
AllTopicsTrends
BlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    Cover of Growing object-oriented software, guided by tests

    Growing object-oriented software, guided by tests

    Steve Freeman · 2010

    Foreword 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.

    Software EngineeringProgramming
    Open LibraryAmazon
    Stats for nerds
    43recommend
    64mentions
    54people
    2010–2026years
    78% recommend19% neutral3% critical

    Mentions per year

    201020122014201620182020202220242026

    What Hacker News says

    1. voiceofunreasonApr 2026
      My recommendation: you should probably start from _Working Effectively with Legacy Code_ by Michael Feathers.

      The best "let's do something not trivial" TDD book is probably still _Growing Object Oriented Software, Guided by Tests_ by Steve Freeman and Nat Pryce.

      Most of the "more than the basics" topics are the same kinds of practices that were considered "good design" whether you were using TDD or not. For example, Parnas 1971, Berard 1993, John Carmack 1998 ("Time is an input...."), and so on.

      If you are interested in more than the basics on TDD, the right starting point is _Test Driven Development by Example_ by Kent Beck, which while a bit thin on examples actually covers a nice variety of more advanced topics (although not in great depth). If you are going this route, you should pair that with Beck's 2023 essay "Canon TDD".

      thread
    2. Fr3dd1Aug 2025
      I had quiet a ride myself with that topic. For years my opinion was, that I dont want to, as the auther here suggests as well, go with tdd as long as I dont know exactly what I need. Than I switched over and used tdd for everything with a more regid (interface) design upfront. Nowadays I use tdd from the integration side and only add unit tests later or case by case when I think its usefull. A really good ressource is "Growing Object-Oriented Software, Guided by Tests"
      thread
    3. jansimonekDec 2023
      I found the book Growing Object-Oriented Software Guided by Tests to be very inspiring. The book demonstrates how to evolve the code architecture, how and when to add new concepts and abstractions, how to listen to the tests, when to refactor etc. The tech in the examples is dated, but the gist of the book is very relevant.

      Another classics are: - Working effectively with legacy code - Refactoring: Improving the Design of Existing Code

      All of these books have a lot of depth to them

      thread
    4. chris_jMar 2023
      On the subject of TDD, the way I've done TDD has been very similar to the technique described in the article. Work in very small increments, try to get a very thin vertical slice of functionality working through the system as soon as possible and, whatever you build, try to get it working end-to-end as soon as you can. Of course, I use tests to drive the work but I find it very helpful to use tests to drive those thin vertical slices of functionality.

      The book that really helped me to start working in this way is Growing Object Oriented Software, Guided by Tests by Steve Freeman and Nat Pryce [0]. The book has been around for a few years at this point and tech has moved on since then, as have some of the techniques, but it's still a very interesting read. (Disclosure: I was lucky enough to briefly work with one of the authors a few years ago but I was a fan of the book long before then.)

      [0] http://www.growing-object-oriented-software.com/

      thread
    5. belfalasJan 2023
      Many more beyond this but these are my for sures.

      People / Soft Skills:

      * How to win friends and Influence People - Dale Carnegie

      * Secrets of Consulting - Gerald Weinberg

      * Peopleware - Tom DeMarco & Timothy Lister

      * Nurtured by Love - Shinici Suzuki

      * Turn the Ship Around! - David Marquet

      * Never Split the Difference - Chris Voss

      http://dhemery.com/articles/resistance_as_a_resource/

      http://dhemery.com/articles/managing_yourself_through_change...

      Macro Skills:

      * Toyota Production System - Taiichii Ohno

      * Workplace Management - Taiichii Ohno

      * Thinking in Systems - Donella Meadows

      * Fifth Discipline - Peter Senge

      Agile:

      * Extreme Programming, Explained (2nd ed.) - Kent Beck (the annotated bibliography is a goldmine)

      * Chaos: Making a New Science - James Gleick

      Programming:

      * Implementation Patterns - Kent Beck

      * Test-Driven Development, By Example - Kent Beck

      * Refactoring (both editions) - Martin Fowler

      * Refactoring to Patterns - Joshua Kerievsky

      * Practical Object Oriented Design - Sandi Metz

      * Functional Programming in Scala - Chiusano & Bjarnason

      * Growing Object-Oriented Software, Guided By Tests - Freeman & Pryce ("The Goose Book")

      * Modern Java in Action - Raoul-Gabriel Urma

      * Java Concurrency in Practice - Brian Goetz

      * Grokking Algorithms - Aditya Y. Bhargava

      Architecture:

      * Righting Software - Juval Lowy

      * Release It! - Michael Nygard

      * Site Reliability Engineering - Beyer, et al. ("The SRE Book”)

      * Domain Driven Design - Eric Evans

      * Introduction to Permaculture - Bill Mollison and Mia Slay

      * Fun with a Pencil - Andrew Loomis

      Design:

      * All books by Edward Tufte, especially “The visual display of quantitative information”

      * The Elements of Typographic Style - Robert Bringhurst

      * Understanding Comics - Scott McCloud

      * Design of Everyday Things - Don Norman

      * Notes on the Synthesis of Form - Christopher Alexander

      * The Timeless Way of Building - Christopher Alexander

      thread
    6. pramodbiligiriAug 2022
      There’s TDD by Example, and there’s also “Growing Object-Oriented Software, Guided by Tests”.
      thread

    Related

    Growing object-oriented softwareSteve Freeman
    2011–2026

    Growing object-oriented software

    Steve Freeman
    16 recommend · 27
    Cover of Test-driven development
    2007–2026

    Test-driven development

    Kent Beck
    30 recommend · 62
    Cover of Domain-Driven Design
    2007–2026

    Domain-Driven Design

    Eric Evans
    104 recommend · 252
    Cover of Implementation patterns
    2010–2025

    Implementation patterns

    Kent Beck
    6 recommend · 7
    Cover of Patterns of Enterprise Application Architecture
    2009–2026

    Patterns of Enterprise Application Architecture

    Martin Fowler
    34 recommend · 87
    Practical Object-Oriented DesignSandi Metz
    2012–2026

    Practical Object-Oriented Design

    Sandi Metz
    14 recommend · 17
    Cover of Object-oriented software construction
    2010–2026

    Object-oriented software construction

    Bertrand Meyer
    22 recommend · 53
    Cover of Designing Data-Intensive Applications
    2014–2026

    Designing Data-Intensive Applications

    Martin Kleppmann
    457 recommend · 846