image I’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.


  1. http:// says:

    Where do you find time to read all these books?

  2. http:// says:

    @Mauro — I’ve spent way too much time on airplanes over the last 6 months 🙂

  3. Sendhil says:

    Hi Stephen,
    I also liked the following books.

    1) Practices of an Agile Developer by Venkat Subramaniam and Andy Hunt – Pragmatic Bookshelf…/097451408X
    2) Applying Domain-Driven Design and Patterns: With Examples in C# and .NET by Jimmy Nilsson – Addison-Wesley Professional…/0321268202
    3) Object Design: Roles, Responsibilities, and Collaborations by Rebecca Wirfs-Brock – Addison-Wesley Object Technologiey Series…/0201379430


  4. capgpilk says:

    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.

  5. http:// says:

    I found nice clean C# versions of the Head First Design Patterns over on – in addition to their free code showing the GoF patterns ( ), they sell a downloadable “pattern framework” which includes the C# versions of the Head First patterns ( )

    [Be warned – that very long page is a “hard sell” reminiscent of the many “make millions working from home” scams, but at least this one does actually have useful code samples!]

  6. http:// says:

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

  7. http:// says:

    @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?

  8. capgpilk says:

    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.

  9. Troy Goode says:


    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.

  10. Hanife says:

    this post is great..!, I have been waiting your MVC book. thanks for sharing us.

  11. You had a lot of books list for
    i see what i want..
    thanks for sharing..

  12. fuh!!!….a lot of books to read. i hope i can finish all in 2 years.

  13. Great list..
    this is your books?

  14. Blue Eyes says:

    very nice post… thanks!!!

  15. Be Creative says:

    very nice post.. thanks!

  16. ASP.NET page represents a class. And, not just any class.

  17. Belkys says:

    “Clean Code: A Handbook of Agile Software Craftsmanship” – Robert C. Martin Series. It is a good book to include in your list…

  18. Ya really very useful list. Thanks for sharing.

  19. 8 I tried to mock a call to a Linq to SQL query, but I am struggling.

  20. Degrees says:

    Great question! In Firefox, the __proto__ magic property is read/write as demonstrated by the following script:
    early childhood education degree | marketing degree | computer science degree

  21. Degrees says:

    I have same problem as Jerry. I followed your video “Preventing JavaScript injection” but my code always produce the following page “A potentially dangerous Request.Form” with and without using Html.Encode.
    online doctoral degree | accounting degree

  22. Really very useful list. Thanks for sharing.

  23. f343f– It looks like DataContextExtensions.cs line 45 of the Save method should pass the primaryKeyName through to Update.

  24. HD Video Converter says:

    As the users of HD Camcorders like Sony, Canon, Panasonic, this HD Video Converter is necessary to help us convert hd Video easily and quickly. The Converter for HD provides several practical editing functions to help you achieve ideal output effect. Trim function is to cut videos into clips which you can just convert and transfer to your player. Crop function helps you remove black bars around the movie. You could use Effect function to adjust video brightness, contrast, saturation and more parameters. More powerful and considerate functions are waiting for you to explore.

    Mac Video Converter l Rip Blu Ray l VOB Converter .