The best books for software developers 2020
March 2019 · Riga, Latvia · comments
The list was updated in 2020.
Books are your best mentor. If you read one good programming book every month, roughly ten pages a day, you’ll soon have a firm grasp on the industry and distinguish yourself from nearly every developer around you.
There are thousands of books, but not all of them are equally good. Below is my list of the best programming books of all time. I will keep this list in sync with new releases.
The Pragmatic Programmer
Authors: Andy Hunt, Dave Thomas · Topic: general programming · Level: beginner
This book is essential for software developers who want to develop their skills and become masters of the field. It is essential for anyone working in a team or working solo. If you are just starting out, read this book. If you are in the midst of your career, read this book. If you are an experienced veteran of the craft or feel yourself a master, read this book, then teach it.
Head First Design Patterns
Authors: Eric Freeman, Kathy Sierra · Topic: code design · Level: beginner
Knowing the object-oriented programming (OOP) basics does not make you a good OO designer. This book is a fast-track to design patterns - battle-proven solutions to commonly occurring problems in software design. The book presents a complicated topic in a fun, readable and practical way. This book is a better version of the original GoF design patterns book. Must-read for every developer doing OO design.
Head First Object-Oriented Analysis and Design
Authors: Brett McLaughlin, David West · Topic: code design · Level: beginner
This book shows you how to analyze, design, and write serious object-oriented software: software that’s easy to reuse, maintain, and extend; software that doesn’t hurt your head; software that lets you add new features without breaking the old ones. This book explains the best practices such as using delegation over inheritance, the Single Responsibility Principle (SRP), Open-Closed Principle (OCP) in great detail.
Clean Code: A Handbook of Agile Software Craftsmanship
Author: Robert C. Martin (Uncle Bob) · Topic: coding · Level: beginner/intermediate
Clean Code teaches you how to write code that works well, reads well and expresses the intent of the author. This book’s biggest strength is that it includes tons of code examples, including some long and in-depth ones. Instead of just listing rules or principles of clean code, many of the chapters go through these code examples and iteratively improve them. This book is a must-read for every professional software developer.
The Clean Coder
Author: Robert C. Martin (Uncle Bob) · Topic: soft skills · Level: beginner/intermid
The Clean Coder is a sequel to Uncle Bob’s famous Clean Code book. This book contains practical advice about everything from estimating and coding to refactoring and testing. You will learn how to communicate, estimate and deal with difficult situations at work. Strongly recommended for all programmers that would like to call themselves “professional.”
Growing Object-Oriented Software Guided by Tests
Author: Steve Freeman, Nat Pryce · Topic: testing and TDD · Level: intermediate
GOOS is not only the most practical book on Test-Driven Development but also the best book about automated software testing in general. This book shows how to create a realistic project using TDD and is full of code examples. When I meet a developer skeptical about TDD, I give him this book.
The Phoenix Project
Author: Gene Kim · Topic: management and process · Level: intermediate
Anyone who has worked for a large organization will identify themselves with the issues described in the book. The Phoenix Project is an entertaining novel about IT, DevOps and problems every large organization faces. That’s one of the best and funny reads on how to understand, manage and improve large organizations. You will learn a lot about Lean, Theory of Constraints and DevOps.
The Software Craftsman
Author: Sandro Mancuso · Topic: software craftsmanship · Level: intermediate
How it is done is as important as getting it done. Software craftsmanship is a mindset where software developers choose to be responsible for their careers, constantly learning new tools and techniques. In this book, you will find a lot of ideas to improve yourself, your development team and company. If you want to be proud of your work and build a remarkable career, read this book.
Soft Skills: The Software Developer’s Life Manual
Author: John Sonmez · Topic: career · Level: intermediate
Soft Skills is a very unusual book for software developers, but so much needed. This book addresses a wide range of important “soft” topics, from career and productivity to personal finance and investing, and even fitness and relationships, all from a developer-centric viewpoint. Read this book if you want to know how to manage your career, how to market yourself, build right habits or live a more fulfilling life.
Author: Jez Humble · Topic: development best practices · Level: intermediate
Work is not done until it ships. This book sets out principles and technical practices that enable rapid delivery of software to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers, and operations, delivery teams can get changes released in a matter of hours – sometimes even minutes. Skip at your own peril.
Author: Michael Nygard · Topic: software architecture · Level: intermediate
Release It! is a practical guide on building modern fault-tolerant systems. The book examines ways to architect, design, and build production-ready systems that survive high load, hardware failures, and unreliable network. Are you ready for a world filled with flakey networks, tangled databases, and impatient users? Get this book to skip the pain and get the experience.
Author: Tom DeMarco · Topic: productivity · Level: intermediate
Peopleware is a book about productivity. The book explains in great detail that the main software development challenges are sociological, not technical. Read this book if you want to create an environment where people can show outstanding results and performance. The book covers topics such as office space organization, motivation, teamwork, multitasking, and some basic psychology. ️❤️The manager’s function is not to make people work, but to make it possible for people to work.
Author: Jocko Willink · Topic: leadership · Level: intermediate
This a book for team leaders. It is one of those books that really makes you introspect and makes you realise you can be a better version of yourself. You can also transform your workplace in a much better place. Taking lessons from the SEALs and real situations during the Iraq war, the book shows how companies of any size could work efficiently if the people working there at all levels followed some of those lessons.
Author: Marshall Rosenberg · Topic: communication skills · Level: advanced
NVC is a brilliant book on how to deal with different, sometimes complicated people. NVC provides an effective way of communicating, resolving conflicts, learning about ourselves and others, and living according to our needs and values. That’s the best communication book I have ever read, and I practice NVC daily since I read it. This book will change how you deal with colleagues, friends, and family.
The Goal: A Process of Ongoing Improvement
Author: Eliyahu Goldratt · Topic: business and management · Level: advanced
The Goal is a novel about Alex Rogo – a production plant manager. Alex’s plant is not profitable and is soon to be shut down. In this book, Alex, guided by his mentor Jonas, will save the plant from disaster and will make it the most profitable plant in the country. If you want to make your company or organization profitable – read this book. You will read this book in one breath.
Author: Eric Evans · Topic: software architecture · Level: advanced
If you develop large enterprise systems, not reading this book borders on professional negligence. This book is the most fundamental software architecture book ever written. DDD is not an easy read, and you will grasp some of the concepts only after years of practicing. This book will change how you see software development forever.
📚 If you want more books on different themes, check out mustread.tech. It’s an open-source and crowd-sourced book listing: