Core Java
10 Books Every Java Developer Should Read
I have read my share of software development books and I have noticed that it is very rare to find a book which I want to read more than once.
However, once in a while I find a book which teaches me new things every time when I read it. This blog post is a tribute to these rare gems.
And now, without further delay, I present to you ten books which have earned a special place in my bookshelf:
- Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin teaches you three things: how to write good code, how to tell the difference between good code and bad code, and how to transform bad code into good code. These are essential skills for every developer. That is why you should read this book.
- Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides is a true classic. It presents elegant solutions to common design problems. If you want to learn the basics of writing elegant object-oriented code, this is the book you should read.
- Domain Driven Design: Tacking the Complexity in the Heart of Software by Eric Evans is a book for developers who want to understand how they can transform the knowledge of domain experts into a useful domain model. If you have noticed that often it is hard to find a natural place for “business logic”, you should do yourself a favour and read this book.
- Effective Java by Joshua Bloch is a book that requires no introduction. If you want to write more robust Java code, you have 78 reasons to read this book.
- Effective Unit Testing: A guide for Java developers by Lasse Koskela is the second testing book of Lasse Koskela, and it helps you to improve the quality of your test suite. Reading this book helped me to write cleaner and more maintainable tests. I guess you could say that this book helped me to realize that tests have no value if they don’t express the intention of each test. I think that this is a valuable lesson, and that is why you should read this book too.
- Patterns of Enterprise Application Architecture by Martin Fowler has a “boring” title but you shouldn’t let it scare you. Reading this book gave me a better understanding about the basic building blocks of the “enterprise” frameworks which I use every day. If you want to understand your tools, this is the book you should read.
- Refactoring: Improving the Design of Existing Code by Martin Fowler is another timeless classic. It describes more than 40 different refactorings which can be used to improve the design of existing code. Every software developer should have good refactoring skills and reading this book will take you one step closer to that goal.
- SQL Antipatterns: Avoiding the Pitfalls of Database Programming by Bill Karwin is a book that is very useful to all developers who use relational databases. This book helps you to avoid the most common design antipatterns, query antipatterns, and application development antipatters. To be honest, I have to admit that I have made a few mistakes described in this book. That is why I am extremely happy that I read it and learned how I can avoid making the same mistakes in the future.
- SQL Performance Explained by Markus Winand promises that it will teach you everything you need to know about SQL performance. That is a very bold tagline and I was very happy when I realized that this book keeps its promise. I think that you should read this book for two reasons: it proves that relational databases aren’t slow, and it explains how you can make your SQL queries as fast as possible (they can faster than you ever imagined).
- Test Driven: TDD and Acceptance TDD for Java Developers by Lasse Koskela is the first testing book which I have ever read, and that is why it has a special place in my heart. It is a very good introduction to TDD, but you can learn a few testing tricks from this book even if you aren’t a TDD fanboy. That is why this book is a very good addition to your bookshelf.
This list is based on my (subjective) opinion and it is very likely that your list will look completely different. If you think that I missed a book which should be in this list, share your opinion in the comment section.
Reference: | 10 Books Every Java Developer Should Read from our JCG partner Petri Kainulainen at the Petri Kainulainen blog. |
Thanks for this list, I’m just looking forward to read some of them I didn’t even know.
You are welcome! I am happy to hear that this blog post was useful to you.
there’s been like 10 different lists like this out there already
Thank you for your comment!
I think that the most important word of your comment is: different. I have read quite many blog posts like this, and I think that the value of these blog posts is that they showcase different books. There are two reasons for this:
1) Different people value different books.
2) There are many tech books out there and it is impossible to read all of them.
I like these blog posts because they help me to add new books to my reading list.
Hi, I see that you mentioned it’s a subjective list based on your opinion. But I am curious to know what you think of Head first Java, SCJP by Kathy Sierra, Head first design patterns books. Thank you.
Hi Petri. Great fan here. One highly recommended book is “Release It!” By Michael T. Nygard. Every developer should read it at least once in his life