What are your recommended books for programming

The best books for programmers (updated 2020)

In the following I present a list of the most important books for programmers.

The books come from the subjects of programming in general (hard skills and soft skills) and Java programming in particular.

Books for software developers are rarely suitable as audiobooks because they often contain code examples and complex diagrams. Fortunately, there are a few exceptions. I therefore state for each book whether it is suitable and available as an audio book.

Books on Programming in General - Hard Skills

Agile Software Development: Principles, Patterns, and Practices

by Robert C. Martin

Link to the book on Amazon

In this excellent book, Robert C. Martin, also known as "Uncle Bob", co-author of the agile manifesto, explains the core concepts of agile software development, Extreme Programming (XP) and "Test-First Design" (the forerunner of test-driven design ). He shows how to write clean, maintainable code through agile design and the application of the SOLID principles. He demonstrates these principles and the application of known design patterns using three case studies developed in C ++ and Java. I recommend every programmer to study these case studies intensively and to implement them himself.

The book is available from 2002 and now in a new edition from 2013, which I have not read yet.

Suitable as an audio book? Absolutely not! The book is full of the source code and UML diagrams that are essential to understanding this book.

Growing Object-Oriented Software, Guided by Tests

by Steve Freeman and Nat Pryce

Link to the book on Amazon

This book gives a practical introduction to Test-Driven Development (TDD) - especially in object-oriented programming. The authors (one of whom is the developer of jMock) explain how unit tests and mock objects lead to a clean, object-oriented design with reliable and maintainable code. In a case study, they design and implement a test-driven auction system in Java. I particularly recommend this book to any Java programmer. Once you've seen tests lead to more elegant design and code, you'll never want to develop without them again.

Suitable as an audio book? No, due to numerous code examples.

Design Patterns: Elements of Reusable Object-Oriented Software

by Erich Gamma, Richard Helm, Ralph E. Johnson, John Vlissides

Link to the book on Amazon (English original edition)

Every programmer should have read this classic. “Actually” because it is written very academically and is therefore difficult to read - especially if you are not reading the original edition as a non-native speaker. It describes in great detail some of the most important design patterns (if not the most important ones) and how they relate to one another. You can tell that the book is already 25 years old: the code examples are partly out of date from today's perspective and modern aspects such as concurrency are completely ignored. Nevertheless, every programmer should have this work on his bookshelf and know, recognize and be able to apply the 23 classic design patterns.

If you like it a little more practical, I can take the online course "Java Design Patterns" by Dr. Heinz Kabutz, the author of the well-known JavaSpecialists ‘Newsletter, recommend.

German translation: Design Patterns: Design patterns as elements of reusable object-oriented software

Suitable as an audio book? No, due to numerous code examples and diagrams.

Pattern Hatching: Design Patterns Applied

by John Vlissides

Link to the book on Amazon

This book by one of the four authors of the classic "Design Patterns" gives insights into the development process and describes the ten biggest misunderstandings about design patterns. Frequently used design patterns are explained using practical examples - in contrast to the very academic approach in the classic. Variations of established patterns are presented, as well as two completely new design patterns. You don't necessarily have to read this book, but for me after working through “Design Patterns” it was a very pleasant and much more easily digestible read.

Suitable as an audio book? No, due to numerous code examples and diagrams.

The Pragmatic Programmer: From Journeyman to Master

by Andrew Hunt and David Thomas

Link to the book on Amazon

This book contains concentrated, practical experience from several decades of programming practice. It clearly describes the best practices and the greatest pitfalls of many aspects of software development with numerous practical examples. The focus is on the creation of high quality, i. H. working, flexible, reusable, and maintainable code.

The book is suitable for both beginners and advanced programmers.

Beginners will find valuable knowledge in this book that would otherwise take years or decades to build up through their own experience (although the book cannot, of course, replace this experience).

In this book, advanced learners can find their own experience in a structured form, consolidate and deepen it - and certainly take one or the other additional tip with them.

In addition to numerous anecdotes and analogies, each section contains practical exercises with solutions at the end of the book. A book every programmer should read.

German translation: The Pragmatic Programmer

Suitable as an audio book? No, due to numerous code examples and exercises.

Books on programming in general - soft skills

Soft skills: The software developer’s life manual

by John Sonmez

Link to the book on Amazon

In this book, developer and life coach John Sonmez gives helpful tips on building soft skills that a developer should have and that lead to a more satisfying life as a professional software developer. It's about career development, self-marketing, learning, productivity, investment strategies and financial security, fitness and mental health - all from the perspective of a software developer. If you would like to read a book for programmers without source code and diagrams for a change, I can recommend this book.

Suitable as an audio book? Yes absolutely. I particularly like that John Sonmez reads his books himself and keeps throwing in a few paragraphs that are not in the book, e.g. B. when there is something new to say about a topic.

The Complete Software Developer’s Career Guide

by John Sonmez

Link to the book on Amazon

This book is a comprehensive guide to a successful career in software development. It answers questions from all levels of the developer career: How do I start my career? How do I get a job? In which direction can and should I specialize? How do I deal with superiors and colleagues? How do I earn a promotion? How do I develop myself further? The book is written in a simple and entertaining way, enriched with personal anecdotes and overall very pleasant to read.

Suitable as an audio book? Yes absolutely. I particularly like that John Sonmez reads his books himself and keeps throwing in a few paragraphs that are not in the book, e.g. B. when there is something new to say about a topic.

Java programming books

Effective Java (Third Edition)

by Joshua Bloch

Link to the book on Amazon

In this book, Joshua Bloch has compiled the most important do's and don'ts of Java programming: Best practices that help you to write efficient, readable and maintainable - and therefore future-proof - software.

The book is aimed primarily at experienced Java programmers - a good knowledge of the language is required.

You are certainly already using some of the practices in your everyday life; others may be new to you and help you take your skills to the next level.

The book contains 90 articles divided into 11 topics. A lot of material - but you can take it to heart little by little. Because the articles each represent a self-contained unit.

Each article contains specific, easy-to-understand advice, accompanied by concise, clear code examples.

Every Java programmer should have read this book. I recommend that you read the book in full and then, if you have to solve specific tasks in everyday programming, consult the relevant article again.

When buying, make sure (especially if you buy used) that you are purchasing the current, third edition! The second edition is based on Java 6 and is no longer up-to-date.

German translation: Effective Java: Best Practices for the Java Platform

Suitable as an audio book? No, because of the numerous code examples.

Mastering Lambdas: Java Programming in a Multicore World

by Maurice Naftalin

Link to the book on Amazon

This is a great book on the Lambdas and Streams introduced in Java 8. Despite their presence in the title, lambdas only take up about the first quarter of the book. Most of it describes streams: how to use them, how to create them, and how to terminate them with the help of collectors and reducers. I recommend this book to both beginners and advanced learners. Beginners are introduced step by step to the functionality of lambdas and - based on them - streams. For advanced users, it goes from programming spliterators to generate streams to individual collectors and reducers.

Suitable as an audio book? No, due to numerous diagrams and code examples.

Java Generics and Collections

by Maurice Naftalin and Philip Wadler

Link to the book on Amazon

While the introduction to generics can be skipped by most Java developers these days, the more advanced topics such as subtyping, wildcards, wildcard captures and bounds - topics that every Java programmer has probably had to deal with at some point However, many tend to cling to compiler errors instead of knowing exactly what they are doing. In the second part of the book, the most important collection interfaces and classes of the Java Collection Framework - sets, queues, lists and maps as well as their implementations - are presented and compared with regard to concurrent programming and performance. Any advanced Java programmer should be familiar with these topics.

Suitable as an audio book? No, due to numerous code examples.

Bonus: novels

I mainly read specialist books. But every now and then, when I get a good recommendation, I also read a novel. I would like to recommend a few that have particularly fascinated me:

The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win

by Gene Kim, Kevin Behr, George Spafford

Link to the book on Amazon (English original edition)

A fun and educational story about transforming an old, traditional IT department into a modern, agile DevOps team.

Bill is appointed head of the IT department and is supposed to help the IT project "Phoenix", which is under massive feature and deadline pressure, to a success. In doing so, he has to deal with problems that many of us know only too well: features that are planned months in advance, but not completed; manual deployments that go wrong and keep the ops department up all night; Developers blaming operations and vice versa; Employees who contact developers directly - bypassing all processes. Bill has 90 days to fix the mess, otherwise his department will be outsourced.

German translation: Project Phoenix: The novel about IT and DevOps - New strategies for success for your company

Suitable as an audio book? Yes absolutely.

The Unicorn Project: A Novel about Developers, Digital Disruption, and Thriving in the Age of Data

by Gene Kim

Link to the book on Amazon (English original edition)

"The Unicorn Project" takes place in the same company and at the same time as "The Phoenix Project". It tells the story not from a management point of view, but from the point of view of the top programmer Maxine, who is being "transferred" to the Phoenix department.

There she tries to compile the Phoenix project and runs into problems that most of us know only too well: insufficient documentation about setting up the development environment, missing access, insufficient tests, non-existent build and deployment automation, inadequate infrastructure - both for testing and for production.

Maxine's assertiveness and perseverance help her to get closer to her goal step by step. In doing so, she meets a secret underground organization, the "Rebellion", which has set itself the goal of replacing outdated approaches with modern principles of software development.

Like its predecessor, the book shows what is possible when a traditional company is open to the necessary changes in the digital age. It's entertaining, easy to read, and nice to meet up with some familiar characters.

German translation: Project Unicorn: The novel about developers, digital disruption and survival in the data age

Suitable as an audio book? Yes absolutely.

Ender's game

by Orson Scott Card

Link to the book on Amazon (English original edition)

Ender's Game is the first part of a science fiction epic and for me one of the best novels I have ever read. The story is about Ender, who is recruited as a child for a training program to defend the earth against an impending invasion by an alien species. I don't want to reveal more about the plot. There are several follow-up novels - the first four parts are also available as a set: The Ender Quartet.

German translation: Enders Spiel: Roman (Die Ender-Saga, Volume 1)

Suitable as an audio book? Yes, both the English and German versions are available as audio books - as are the sequels in English.

Seveneves

by Neal Stephenson

Link to the book on Amazon (English original edition)

An epic science fiction story that feels like a multi-novel work that has captivated me from start to finish. Something completely different from what I have known before. In order not to take the tension off, I don't want to tell anything about the plot. I also recommend the description on Amazon to everyoneNot to read, because in my opinion this reveals too much. The book was recommended by Barack Obama and Bill Gates.

The book only has 3.6 stars on Amazon - a rating that I personally cannot understand. Most readers complain that the author describes technical relationships in too much detail. Personally, I liked that and therefore it is a clear recommendation for any other programmer for me. By the way, the book has 4.3 stars at Audible.

Suitable as an audio book? Yes.

Andreas Eschbach

Otherwise I like to read Andreas Eschbach's books. Eschbach is a science fiction writer and I personally like the wide variety of topics he deals with. Each of his stories is unique.

Did you like the article? Then I'll be happy if you share it using one of the following share icons.

I am a freelance software developer with over 20 years of experience in scalable Java enterprise applications. My focus is on optimizing complex algorithms and on advanced topics such as concurrency, the Java memory model and garbage collection. Here at HappyCoders.eu I want to help you become a better Java programmer. Read more about me here.