Tuesday, December 28, 2010

My list of 10 most influential programming books



Here is a list of top ten programming books that influenced my software development life, in the order of publishing date:

1.
Peopleware: Productive Projects and Teams
Lots of companies still try to reinvent the wheel when it comes to managing software teams. This book defines all the best practices. The authors even went as far as recommending the cubicle size.

2. Philip & Alex's Guide to Web Publishing
This book was on the list of recommended readings for the ArsDigita bootcamp. I was for the first time learning how to program a dynamic web site.

3. Refactoring: Improving the Design of Existing Code
I would not go as far as
Steve Yegge and say that after reading the book I’m awash with a horrid cold feeling, as if I’ve just learned I’ve been coming to work for years with my pants down around my ankles. However, it did make a big impact. For example, after reading this book I started putting less emphasis on comments and more on smaller methods with descriptive names. It also made me start actually using the refactoring features in my IDE.

4. The Pragmatic Programmer: From Journeyman to Master
A true classic. Any further comment would be superfluous.

5. Effective Java
If there is a reference on correct usage of the Java language and its API, then it is this book. It could have easily been called Java Tips and Tricks or Java Gotchas. One of my favorite items:
Always override hashCode when you override equals.


6. J2EE development without EJB
It was pretty interesting to read this book after working for a company that had an EJB developer job title and realize the whole world doesn't evolve around EJBs.

7. Head First Design Patterns
I had tried reading the
Gang of Four book several times, without much success. I found it great as a reference book, but not quite suitable for learning design patterns. Then came the Head First Series one and finally shed some light.

8. Java concurrency in practice
Another classic. I ultimately understood the Java Memory Model after reading this book.

9. Programming in Scala
Of course, a Scala book had to make this list, and this is still the most comprehensive one.

10. The Passionate Programmer: Creating a Remarkable Career in Software Development
I read the first edition of this book(
My Job Went to India (And All I Got Was This Lousy Book): 52 Ways to Save Your Job) because I was intrigued by its title, even though the author states it painted the wrong picture. The book is so motivational that I promised myself I will read it every 6 months. In addition to that, the idea for this post came from this very book.