Software engineering reading list

Gang of Four Design patterns

http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented-ebook/dp/B000SEIBB8

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

 

Eric Evans DDD

http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215

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

http://www.amazon.com/Refactoring-Databases-Evolutionary-paperback-Addison-Wesley/dp/0321774515

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

 

Fowler PoEAA

http://www.amazon.com/Patterns-Enterprise-Application-Architecture-Martin/dp/0321127420

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

http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672

 

Larsen Applying UML and patterns

http://www.amazon.com/Applying-UML-Patterns-Introduction-Object-Oriented/dp/0131489062

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

https://books.google.com.au/books/about/Agile_Software_Development_Ecosystems.html?id=uE4FGFOHs2EC&redir_esc=y

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

 

Cockburn Crystal Clear

http://www.amazon.com/Crystal-Clear-Human-Powered-Methodology-Small/dp/0201699478

 

Beck TDD

http://www.amazon.com/Test-Driven-Development-By-Example/dp/0321146530

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

http://www.amazon.com/Fearless-Change-Patterns-Introducing-Ideas/dp/0201741571

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

https://www.amazon.com.au/Refactoring-Patterns-Joshua-Kerievsky/dp/0321213351

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

http://www.amazon.com/dp/0201113716/?tag=stackoverfl08-20

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.