Must-reads for Java Developers: From Beginner to Professional

In the last few months I noticed that I’ve been recommending the same books again and again to new and also to experienced developers. For this reason I decided to put together a list of must-reads. The books I’ll recommend were good company during my journey from beginner to the level I’m currently at (whatever level that is ;)). Many fellow programmers were involved in assembling the list. Special thanks go to Frank Appel, Rüdiger Herrmann, Benjamin Muskalla and Ralf Sternberg.

The ordering of the list reflects my personal choice. Feel free to shuffle it ;). One important thing – if you buy a book from the list, always chose the English version. Even when a translation is available in your language, the original version is almost always the better choice.

Beginner

If you are new to Java development, you need to get up to speed with the language first. Many books are available for this purpose. The content of these books are almost always the same, but the style of writing differs dramatically.

head first java Must reads for Java Developers: From Beginner to Professional Java A Beginner s Guide 5th Edition 01 ht Must reads for Java Developers: From Beginner to Professional tdd Must reads for Java Developers: From Beginner to Professional

There are two books to learn the language that are worth recommending. Head First Java is nontraditional but really, really fun reading. As with all Head First books, it’s up to you to like them or not (I love them). Java, A Beginner’s Guide is a more traditional book that explains programming Java really well. Once you know the Java language, I recommend one book before you are granted the level of Journeyman (also valid for other languages). This is Test Driven Development by Kent Beck. It describes a way of development that reflects the way we code at EclipseSource. In my opinion Test Driven Development (TDD) should be part of the introductory education of every programmer.

Journeyman

As described in many books, a Journeyman is a developer who knows his language and has done smaller projects but still has a long way to go to being a professional. At the beginning of this stage I’m sure you didn’t agree with this statement (I didn’t, either). But after 5 to 6 years as a Journeyman, I’m convinced you will agree ;).

effective java Must reads for Java Developers: From Beginner to Professional pragmatic Must reads for Java Developers: From Beginner to Professional design patterns book cover Must reads for Java Developers: From Beginner to Professional

Knowing a language is not enough! You need to master it! For this purpose almost every experienced Java programmer will recommend reading Effective Java by Joshua Bloch. The Pragmatic Programmer is like a dictionary. It covers many topics you will face in your career as a programmer and therefore is a must-read. Knowing your language does not enable you to write good software. From my point of view learning about software design is one of the most important, long term challenges in the career of a programmer. For this, the Design Patterns Book by the Gang of Four is probably a good start.

refactoring Must reads for Java Developers: From Beginner to Professional cleancode Must reads for Java Developers: From Beginner to Professional osgi Must reads for Java Developers: From Beginner to Professional cleancoder Must reads for Java Developers: From Beginner to Professional

When you have read Beck’s TDD Book you know that the golden rule is: red, green, refactor. Martin Fowler explains how the last step works in his Refactoring Book. After your tests are green and you have refactored the code you need to read Clean Code by Robert C. Martin at least twice. Once you’ve read it, I’m sure you will think about your code differently. The OSGi in Action book feels a little odd in this list. The reason it’s here is that I think modularity is one of the most important design principles. For a Java developer, learning about OSGi is a must. Remember when I said you won’t agree that you are not a professional unless you’ve been a Journeyman for several years? I’m sure you will reach this point after reading The Clean Coder. Robert C. Martin writes about himself and his journey becoming a professional in this book. It’s really an eye-opener!

Professional

I use the word “Professional” because many authors use it in this context as well. But I don’t like to use the word to categorize a programmer. Professional sounds like you are done. But this is simply false. As a programmer you can never stop learning! The books I put in this category are just “more advanced”. This means they either go deeper into detail or start to train you for leadership.

concurrency Must reads for Java Developers: From Beginner to Professional  Must reads for Java Developers: From Beginner to Professional peopleware Must reads for Java Developers: From Beginner to Professional patterns eaa Must reads for Java Developers: From Beginner to Professional

You can do quite a bit with Java without facing concurrency and as a Journeyman you will hopefully have a master in your team helping out with this topic. But there is a point in time when you will be the master. Thus mastering concurrency in Java is a must. Brian Goetz did a great job explaining the topic in his book Java Concurrency in Practice. Being a professional means taking responsibility. As a programmer this also means taking responsibility for legacy systems. Micheal Feathers made this boring topic fun in Woking Effectively with Legacy Code. As a professional you not only take responsibility for code, you also take responsibility for your team. Tom DeMarco and Timothy Lister write in Peopleware about how effective teams work and the important characteristics of an effective team. Explaining hard things right is one of the most difficult tasks. Few authors know how this works. Martin Fowler did a great job in Patterns of Enterprise Application Architecture which is an excellent lesson in software design.

I hope you had, or will have as much fun as I did reading these books. Please feel free to disagree or add additional recommendations in a comment.
followme Must reads for Java Developers: From Beginner to Professional

8 Responses to “Must-reads for Java Developers: From Beginner to Professional”

  1. Barista in javaczyherbata.pl says:

    It’s very common with this list of book http://javaczyherbata.pl/must-read/

  2. Adedayo says:

    Great list i must say.. Am spending some time with the book Java Performance by Charlie Hunt and Binu John.. Have been privileged to have read some of these books. My observation is that an average corp/developer seem most interested in having code that just works. Lets push to PROD . Maintainability, clean code, testability, performance all seem secondary. I should say your posts on Effective Mockito were great

  3. @Barista: It’s a good sign, right?

    @Adedayo: Having code that just works is my goal, too. But sadly I’m not able to write code that just works without tests. Therefor my code has to be testable and simple. This can be reached by writing clean code. So, writing code that just works goes hand in hand with writing tests and make the code clean. Just my 2 cents ;)
    But good to hear you care about those topics too ;)

  4. Christian Baranowski says:

    Nice book list, I really like your selection.

    For a LIGHTNING talk I also create a TOP 10 must read list, not only for Java developer, but some recommendation are consistent with your list you can find my slides here (sorry the slides are in German) http://de.slideshare.net/tux2323/top10-software-engineering-books.

    What I miss in your list is the great testing book “Gerard Meszaros – xUnit Test Patterns”.
    But the rest is perfect.

  5. Muhammad Khojaye says:

    Nice list having awesome recommendation. However, I would only like to add “Head First Object-Oriented Design And Analysis” in Journeyman section. Another thing I would like to have must read is “Collection Framework”. The oracle site already has very nice tutorial.

    Khojaye
    http://muhammadkhojaye.blogspot.com

  6. Scott Stirling says:

    The source docs are pretty handy for understanding the brass tacks:

    The Java Language Specification
    The Java Virtual Machine Specification

    Both free online. These are dense documents. But it is worth working through them and referring back to them as your understanding and experience grow.

  7. Vaclav Tuma says:

    To Author: perfect article! all that is written is true (for somebody ‘good news’ for some readers ‘sad true’ of their knowledge level).

    To commentors: if I catch the idea as well … I don’t thing it’s about ‘this or that book is missing in list’ … but about the level of developer thinking and interest and only point to the milestones of knowledge (exampled by books) … ;)

  8. Chris says:

    Thanks for the article! Just had my copy of Clean Code delivered. Time to take the next step!

8 responses so far

Written by . Published in Categories: EclipseSource News

Published:
Sep 18th, 2012
Follow:

Twitter Google+ GitHub Facebook