Stack of BooksI've been collecting book recommendations on software design principles and patterns, test-driven development, and agile development. I wanted to share my current reading list with you in case you are interested in learning more about these topics. If you have any additional book recommendations -- please share!

Here's my current list of books:

Software Design Principles and Patterns Books

  1. Design Patterns : Elements of Reusable Object-Oriented Software
    by Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides
    This is the book known as the Gang of Four book and it is considered required reading if you want to learn about software design principles and patterns. Several people warned me that this book would be dense. Several people also warned me that the pattern terminology used in the book has changed significantly since the book was published in 1994. So far, this book has not caused any brain injury and I haven’t found it overly difficult to read.
  2. Head First Design Patterns
    by Elisabeth Freeman, Eric Freeman, Bert Bates, and Kathy Sierra
    This book makes the previous book understandable. It has really clear samples of each of the design patterns. This is a great book – it was a joy to read. There are only two things that I don’t like about it. I wish that it did not contain all of the cartoons. Also, I wish the samples were C#/VB.NET instead of Java. Troy Goode originally recommended this book to me.
  3. Framework Design Guidelines
    by Krzysztof Cwalina and Brad Abrams
    If you want to understand why the .NET framework was designed in the way that it is designed, then this is the book to read. The book introduces great phrases like “Fall into the pit of success”. By reading this book, I also learned the origin of the terminology Pascal Casing and Camel Casing.
  4. Refactoring: Improving the Design of Existing Code
    by Martin Fowler
    Martin Fowler’s book got everyone talking about better software design through refactoring. The book contains a catalog of more than 70 types of refactorings.
  5. Refactoring to Patterns
    by Joshua Kerievsky
    As the title suggests, this book combines a discussion of patterns and refactoring. I’ve been told that this is a super important book and that I should read it immediately.
  6. Patterns of Enterprise Application Architecture
    by Martin Fowler
    Another massively important book written by Martin Fowler. Contains a catalog of over 40 patterns that you should know when building enterprise applications.
  7. Domain Driven Design: Tackling Complexity in the Heart of Software
    by Eric Evans
    This book is devoted to the process of building software through patterns and refactoring.

Test-Driven Development Books

  1. Working Effectively with Legacy Code
    by Michael Feathers
    This book has received recommendations all over the place. It is the next book that I plan to read.
  2. xUnit Test Patterns
    by Gerard Meszaros
    This is a big, intimidating book. This book is supposed to do a good job clarifying testing terminology such as the distinction between mocks, stubs, dummies, doubles, etc.
  3. Test-Driven Development in Microsoft .NET
    by James W. Newkirk and Alexei A. Vorontsov
    This was one of the first books on Test-Driven Development that I read. I really liked the organization of the book. I like how the book presents walkthroughs of using TDD when testing ADO.NET and user interfaces.
  4. Test-Driven Development: By Example
    by Kent Beck
    The Kent Beck book on Test-Driven Development. This is a really enjoyable book to read. I was surprised that Kent Beck takes a very practical approach to using TDD. He even presents a few situations in which TDD does not make sense (testing concurrency and security).
  5. Pragmatic Unit Testing in C# with NUnit, 2nd Edition
    by Andy Hunt, Dave Thomas, and Matt Hargett
    This book covers using NUnit when building ASP.NET 2.0 applications.

Agile Books

  1. Extreme Programming Explained: Embrace Change
    by Kent Beck and Cynthia Andres
    The founding book of XP. I’ve been warned that the first edition of this book differs significantly from the second edition.
  2. Agile Principles, Patterns, and Practices in C#
    by Robert C. Martin and Micah Martin
    This is a dense but valuable book. The authors (father and son) do a great job of delving deep into the subject of software design principles and patterns. The code samples in this book are written in C#. Brian Henderson recommended that I read this book.

Almost all of these books were recommended by friends or colleagues. If you know of a good book related to these topics, please leave a comment.


  • Where do you find time to read all these books?

  • @Mauro -- I've spent way too much time on airplanes over the last 6 months :)

  • Good list very similar to mine, I intend on hitting the books over the next couple of months and have just ordered Refactoring: Improving the Design of Existing Code and Test-Driven Development: By Example from Amazon just to get me started. The only addition I can think of is Code Complete by Steve McConnell.

  • @Philip - that is a great resource to know about, thanks!

  • @capgpilk - I considered adding Code Complete to the list since I know a lot of people have recommended the book, but is the book an Agile/TDD/Patterns book?

  • I would say Code Complete is a Software Design/best practice book. Incidently I have come accross the top 100 list of software books. There may be something on there of interest to you.

  • Stephen,

    I'm glad you liked Head First Design Patterns. Java is similar enough to C# that I think it illustrates the point well enough for .Net developers (well, I guess VBers might have trouble with it) and the cartoons may be unnecessary fluff but it keeps the tone of the book a bit lighter and less dry than many other design pattern books I've tried to get through.

    Thanks for the great list of books, many of which I have not yet had the chance to read. I think I may give Refactoring to Patterns and Framework Design Guidelines a go next.

Comments have been disabled for this content.