Thursday 15 February 2007

You must read

I was talking to some guys from another dept in the pub the other night and one of them mentioned Patterns of Enterprise Application Architecture by Martin Fowler. We discussed it a little and I then brought up a few other texts which I have read and was surprised that no one else had heard of them. So that prompted me to write this. I've been reading software development books regularly now for about 3 years and this is the list I think is essential reading. If you are in the same boat I'm afraid you'll find nothing too original, if not I hope you are inspired... not by me of course, but by the texts themselves.

Title: Extreme Programming Explained
Author: Kent Beck
Why: This book explains how software should be developed... IMHO. It details how to plan, design, code, and test in a easily digestible and, more importantly, inspiring way. It introduced to me great concepts like pair programming, iterative development, test driven development and stand up meetings etc.

Title: Test Driven Development
Author: Kent Beck
Why: This book holds your hand through the process of TDD. Once you have finished reading this you should know exactly how to code test first and, more importantly, not want to do it any other way.

Title: Domain Driven Design
Author: Eric Evans
Why: After reading XP explained I often wondered about how to gain and manage domain knowledge effectively... this book explains it. It explains how to manage Domain Models across large teams and introduces some great design patterns, my favorite being the Value Object pattern (not to be confused with the J2EE DTO pattern). It also shows you how to manage domains in a number of different environments.

Title: Refactoring
Author: Martin Fowler
Why: In the same way Kent Becks book teaches TDD, this book holds your hand through the process of refactoring. It then goes on to introduce a whole host of code 'smells' and refactorings that can be applied to them. As an aside i think the term 'refactoring' is being abused at the moment. It is being used to denote large scale code redesigns or even ground up redevelopment. From my understanding of MFs book this isn't what refactoring is about.

Title: The Pragmatic Programmer (From Journeyman to Master)
Author: Andy Hunt & Dave Thomas
Why: Like the Ronseal adverts this "does exactly what it says on the tin". It introduces an number of great approaches that all good/great programmers should abide by. Things like the DRY principal (Don't Repeat Yourself) and how they apply this to the whole spectrum of systems analysis, design and development and other gems like Tracer Bullets and Broken Windows are priceless.

There are a number of other great books I toyed with putting on my list. P of EAA was a contender along with Rod Johnsons J2EE Design and Development, I also considered Bruce Tates Better Faster Lighter Java. These are all books that I have really enjoyed and have been taken with. However, I had to draw the line somewhere.

BTW if I had read the GoF book I'm sure it would have been there... I promise to get my finger out and read it this year. As much as the Head First Design Patterns book covers most of the patterns, I know, it's just not the same.

No comments: