One of the things that I see repeated over and over again is the simple question “What books should I read to become a better developer?“. Or “How did you learn about that?“. Or even “What does a coding standard matter?”… OK, so that last one was a bit of a sentinel question, but the point is clear. Where should you look if you want to read to improve your development abilities? Well, I figured I’d take a few pages out of my library and share which books worked for me, in order of significance. If you remember from a prior post, I indicated that you should choose concepts over implementations. This list should illustrate that.
Code Complete 2 - Steve McConnell
To be completely honest, this book changed the way that I write code. Not only did it change how I write code, but it changed my whole approach to code. Before reading this book, I wrote code to solve a problem. Reading code? Who’d need to do that? After this book, I really started focusing more on writing clean, readable code. It was so well presented, that I actually read this in a long weekend.
I still keep it on my desk at work for those times I need to reference a figure, or demonstrate to others the statistics behind why something is (or is not) a good idea. It’s proved an invaluable book in my library.
This is a must for anyone who considers themselves to be a professional developer.## Gödel Escher Bach - Douglas Hofstadter
This book didn’t change how I write code. It changed how I solved problems. But it did more than that. It really changed how I looked at the world. It taught me about the power of symbols and abstractions.
I HIGHLY recommend reading this book. It has a bit of math in it, but the book doesn’t loose much value if you don’t understand that math. He does a very good job explaining the concepts and not just the details.
The Clean Coder - Robert C. Martin
This is another book that I value dearly. Oddly enough, it’s not really about code. It’s a code of conduct for professional developers. It really changed the way that I interact with business stakeholders.
It’s a very good read, and an absolute must for anyone who develops professionally. If even for the part about managing expectations, it’s worth it.
The Rest Of The List
Those three books are musts for every single professional developer (In my opinion at least). The rest here are a few selections from my library that I’d recommend highly (in no particular order). * Clean Code - Robert C. Martin - Another great book, similar in content to Code Complete 2, but from a different angle.
- Patterns Of Enterprise Application Architecture - Martin Fowler - A bible for object oriented design and application structure.
- SQL Antipatterns - Bill Karwin - A must-read for any developer who deals with database design and architecture.
- Working Effectively with Legacy Code - Michael Feathers - A good read for anyone who maintains or works with a legacy codebase.
- Test Driven Development - Kent Beck - A very easy to follow introduction into TDD.
- Driving Technical Change - Terrence Ryan - A great book about working with teams and getting ideas past people who don’t want to change.<
- 97 Things Every Project Manager Should Know - Various - Yes, this is a book about project management. But it’s loaded with good information that every developer should know as well. It’s really a great read.
- Being Geek - Michael Lopp - A really good book for thinking about programming as a career and not just a job.
Note that there’s not a single PHP specific book in that list. That gets back to my belief that I shared earlier that you should focus on concepts instead of implementations. That’s not to say that there aren’t good PHP books out there (I’m sure there are), just that I prefer to stay language agnostic when it comes to what I read…
What books would you recommend? Follow up in a comment, on twitter or on your blog!