Books that a Java programmer should read: from beginner to professional
[Translator's note: the terms of the gradation of "professionalism" are left in English because of the difficulty of their adequate translation into Russian and the discrepancy with the usual Junior-Middle-Senior-Lead. The translation is quite free - if there is enough knowledge of the language, then it is better to read the original, as advised by the author. Both languages ​​are not my family, so tell me about mistakes in PM - fix it. Hereinafter, in brackets, translator's notes]
I have noticed that in recent months I recommend the same books to both newbies and experienced developers. So I decided to make a list of these books. They made me a good company in the process of my growth from beginner to today's level (whatever it was :))
My friends and colleagues helped me to make a list. Special thanks to
Frank Appel ,
RĂĽdiger Herrmann ,
Benjamin Muskalla and
Ralf SternbergThe order of the books in the list reflects my personal choice. Change it as you like :) One important thing - if you buy a book from this list, then always choose the English version. Even if there is a translation in your native language, the original version is almost always the best choice.
')
Beginner
If you are just starting to get acquainted with Java, then first you need to get acquainted with the syntax of the language. There are a large number of books for this. Almost always the content of these books is very similar, but the style of writing differs dramatically.
There are two books that are worth recommending.
Head First Java is non-standard, but easy to read. Like the whole series, you can love it or not (I adore them).
Java, A Beginner's Guide is a more traditional book that perfectly explains Java. After you have fully familiarized yourself with the syntax and basic constructs, I recommend reading another book before proceeding to the next stage (this is also true for other programming languages).
Test Driven Development (by Kent Beck) describes the programming technique that we use in the EclipseSource. IMHO TDD should be included in the course of each programmer.
Journeyman
Journeyman - a programmer who already knows the language, has made several small projects, but which has yet to evolve into a professional. Of course, I am sure that you do not agree with this statement (for example, I did not agree). But after five years in this status, you will agree :)
Simple language skills are not enough - you need to deepen them. For these purposes, virtually any Java professional will recommend the book
Effective Java , by Joshua Bloch. Another book -
The Pragmatic Programmer - is similar to a collection of notes. It reveals in detail those topics that you will encounter as a programmer, so you should also read it. But knowledge of the language does not teach you to write good programs. From my point of view, one of the long-term tasks of a programmer is to learn how to create an application architecture correctly. For these purposes, the
Design Patterns Book , written by Gang of Four [no, these are not the ones left in the CCP, but the common name of the group of authors (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides)] is a good start.
According to TDD (Beck), the golden rule is red, green, refactor. Martin Fowler explains the last paragraph in his book
Refactoring Book . After all the tests have passed successfully and you have thoroughly reworked the code, you should read the book
Clean Code (Robert C. Martin) (at least twice). After the first time, I am more than sure that you will start thinking about your code differently [and hardly for the better].
OSGi in Action looks weird on this list. I added it here because I think that modularity is one of the most important principles of application design. A Java programmer just needs to know OSGI. Remember, I mentioned that you will not agree with me, that you will not become a Professional until you have been in the status of Journeyman for at least a few years? I am sure that after reading
The Clean Coder, I convinced you. Robert C. Martin writes about himself and his development path from novice to professional. This is truly the most revelation!
Professional
I use the word "Professional" because in this context many authors use it. But I do not like to use this word to describe the level of the programmer. “Professional” sounds like you’ve already reached the top. But this is simply not true. A programmer can never complete his studies [however, this is true for 83% of professions]. The books I put in this category are simply more advanced. They go into details or train you for the role of team leader.
Quite a bit can be done in Java without using multithreading. While you are in the status of Journeyman, most likely you will have a person in the team [well, yes, well, yes] who can help you with this topic. But sooner or later the moment will come when you will need to learn how to multithread yourself. Brian Goetz did a great job in his book
Java Concurrency in Practice . To be a professional is to take responsibility. And since you are a programmer, it also means being responsible for the outdated code. Micheal Feathers described this boring topic a little more fun in the book
Woking Effectively with Legacy Code . You should also be able to take responsibility for your team. Tom DeMarco and Timothy Lister tried to reveal this topic in
Peopleware , where they described how effective teams and important characteristics of such teams work. Just explaining a difficult topic is a very difficult task. Few authors are capable of this. Martin Fowler did a great job in the book
Patterns of Enterprise Application Architecture , where he described in detail the software design process.
I hope you liked (or like, if you have not read) these books. If you do not agree with the list, or can recommend other interesting books - please note in the comments [I join the author. Also in the comments to the original article there are some interesting books. Those books from the list that I have already read are definitely worth it. Well, now there is a good list to continue]