It struck me that a good reading list is always welcome to find, and while I suspect most of these books are not entirely new to you, I thought it a good idea to list what I think is the basis of any good development library. Start with these books and you cannot go far wrong, what they teach will be valuable for many years to come.
The links go off to Amazon for information purposes, but I get no referrer fee or credits, so feel free to purchase where you find the best deal!
|
Code Complete 2
There is no better book for teaching the fundamentals of good software development. This is a book that explains exactly what goes wrong in software projects, and makes excellent observations and recommendations to avoid falling into the same pitfalls over and over again. |
|
Domain Driven Design
Eric Evans has made a wonderful contribution to code design with this book, neatly encapsulating a number of OOD and OOP principles into a coherrent world he defined as Domain Driven Design. Regardless of whether you buy into DDD as a fashion accessory, this book provides masses of valuable information on how to structure and design your applications. |
|
Enterprise Integration Patterns
This is a no compromise, heavy reading book on just how to put patterns into your enterprise code. It proves to be an invaluable resource when read alongside Domain Driven Design, giving well explained patterns for dealing with many of the concepts DDD puts forwards. Martin Fowler writes the forward (I put him as the author ... silly me!) |
|
Patterns of Enterprise Application Architecture
A Martin Fowler classic, that has become almost the bible of patterns in the enterprise world. While some of the patterns here may run contrary to later evolutions and thinking, this book provides a good solid foundation of patterns at a higher (and in my opinion, more useful) level than the original GoF book did. |
|
Refactoring to Patterns
Where most books focus on defining patterns in isolation from real code, or real usage, this book very clearly sets out to put patterns in their context in existing code bases, and provides many good approaches to refactoring code into a set of recognisable patterns. If nothing else, this book shows how to improve your own code, by showing how simple it is to make a few small changes, and increase code quality significantly. |
|
Working Effectively With Legacy Code
Sometimes you cannot avoid legacy code, sometimes you end up with legacy code on a new project. Michael Feathers' book is an excellent resource when trying to bring some sense of order back on to an unruly code base. At a slightly grittier level than Refactoring to Patterns, this book gives practical ways of dealing with low quality code, and either isolating it, or bringing it into some kind of order. |
