Software engineering reading list

Gang of Four Design patterns

This book must be read and understood in detail by every developer.  Don’t learn the patterns.  Learn the thought process.


Eric Evans DDD

Although Evans does lay out a methodology in this book, that’ s not where the books real value lies (as Evans himself now says).    The real message is about the role of good design, with an emphasis on particular design styles, in managing software complexity.


Scott Ambler Database refactoring

Read this to cure yourself of “don’t touch the database” disease.


Fowler PoEAA

Fowler IMHO is the only true successor to the GoF, in that his pattern catalog is invariably interesting in detail.  In particular, Fowler’s set of ORM patterns are essential reading for anyone using an ORM.


Fowler refactoring


Larsen Applying UML and patterns

This is the best and clearest demonstration of how the concepts OOP and design pattern actually play out in a project.


Jim Highsmith Agile ecosystems

This book and the next one are IMHO all you ever need to read about agile methodologies.


Cockburn Crystal Clear


Beck TDD

TDD is another concept that many developers get weird ideas about.  Some people think that the point of TDD is to end up with lots of tests.  The guy who invented the concept sets the record straight.


Linda Rising Fearless Change

This isn’t really a technical book, but it’s one of the best demonstrations of the generality of the design pattern concept that I’ve seen.  The idea of design patterns is one that many developers find hard to grasp (and in fact it’s common to get the concepts completely backwards).  See how the concepts apply to a related but dissimilar field is very useful.  And also this is a great book on change management.


Kerievsky Refactoring to Patterns

This is a bit of a bonus read.  It’s not as important as the core patterns books and Fowler’s refactoring, but it is excellent example of applying higher level thought process to detailed program structures.


Adele Goldberg Smalltalk-80

OK, really nobody is going to read a 45 year old book about a dead programming language.  But this is a sentimental favourite from the most prolific group of visionaries ever to grace computer science.  It’s refreshing to look back past all the decades of nonsense that has been written about OOP and realize that in 1975 these guys really got it.