A while back, my friend Joe asked me to put together a list of books he should buy which inspired the article Joe’s Book List. After putting that together, I thought it would make sense for me to setup a page dedicated to what is on my bookshelf. At one point in my career, I had a *ton* of books surrounding me but I’ve realized that’s I’m better off having a small set of truly great books. It’s easier to keep track of and it’s less to move! So, here is the current set of books that I have come to rely on. Oh, this isn’t in any particular order…
The Design of Everyday Things
Simply put, this book changed the way I think. If you ever pushed a door when you should have pulled or found yourself turing on the wrong burner of your stove, this book is a must read. Don Norman is truly one of the founding fathers or the human computer interaction world – you should pay attention to anything this many writes. If I had my way, *every* developer would read this book before building anything that is used by anyone.
The Pragmatic Programmer
Anyone that thinks books need to be three inches thick to be valuable has never read this book. Not only does Pragmatic present a ton of useful information, it does it in a way that is approachable. If I had my way, every developer would read this book (right after DoET) before touching anything else. I find myself quoting Pragmatic on a regular basis.
Effective Java Programming Language Guide Joshua Bloch has got to be one of the smartest guys around. If you’ve been programming in Java for more than a year or so, you should really take a look at this book – I changed some of the fundamental things I do as a programmer thanks to this book. Presented as a set of short set of idioms, this isn’t a “cover-to-cover” style book – basically, I’ll read an entry or two on the specific thing I’m working on. If you’ve ever wondered how to write a decent hashcode – this book will help! A must have for any intermediate to advanced Java developer.
Refactoring: Improving the Design of Existing Code
I’m a big fan of everything I’ve ever read by Martin Fowler – and this book is no different. Another “advanced” book, this book provides a lot of great advice to something that is key in software: refactoring. I’m of the opinion that we create better code when we start writing knowing that we’ll refactor later. While I appreciate up front design, I think we spend too much time on trying to get everything right before we sit down and actually create something of value. Tools have started to pick up things from this book but I consider this a vital entry in the professional developers toolbox.
Design Patterns: Elements of Reusable Object-Oriented Software
What developer doesn’t have this on their shelf? If you ever wondered why so many development books have “patterns” in the title – it’s all this book’s fault. I wouldn’t start someone knew with this book, you really need a few years under your belt to really get it, but for anyone that designs solutions, Design Patters should be near by. While some of the patterns probably need to be removed this book has stood the test of time (how many 10 year old books do you know that are still ranked in the top 10 of the Computer and Internet section on Amazon?) i wonder if the “Gang of Four” would ever consider writing an updated version.
Foundations of Ajax
Of course I have a copy of my own book…
Look for me to add more to this in the coming weeks!