If you’re a programmer or software developer, you’ve probably done a lot of reading. And if you’re interested in becoming a better programmer, there are many books you can read to improve your skills.
This page contains a list of the best books for programmers. I’ve looked at different lists on Google, Reddit, Twitter, and other places.
The list does not include language-specific books, as some languages change often, and languages can be learned in many other ways.
Also, I’ve added some of my own notes next to each book. You can read the Amazon reviews for each book to get a wider and more detailed view of each book (which is what a lot of us use to decide whether or not to buy a book anyway), but my comments can help explain my own experiences and opinions with the book or why it’s on this list.
Finally, you can use the Table of Contents to navigate to a specific category of books on this page.
Let’s take a look at this list!
Table of Contents
This is one of the few books that is commonly referred to as a "must read" for developers, and I agree. I read this book and learned a lot about how to write clean code and better code. Robert Martin, or "Uncle Bob", is a well-known figure in the software industry and this book is a great book to read.
This is another book that I can highly recommend. It has a lot of code samples and advice on improving the way you write code. It's another book that's on a lot of "must read" lists for developers.
This book is one of the original books on software design. It's often referred to as the "gang of four" design patterns book. If you want to learn more about software design patterns and improving your code design in consistent ways, check out this book.
Another book on design patterns which follows the Head First concept of books. It's easier to understand than other design pattern books, so if you tried the Design Patterns book above and didn't like it, try this one.
This book won't teach you how to code, but it explains what code is and how it interacts with computers. It's got a lot of great reviews and is on a lot of lists of best books for programmers, so if you want to learn more about code, I suggest reading this book.
This book provides a good theory on software development and how to simplify your code. As you get more experienced with software development, you'll learn that simple code is good code, and this book covers that concept.
Learning how to write code is something you'll learn when you start learning a programming language. But there is much more to being a developer than writing code, and that's what this book covers. You'll learn about source code control, bugs, unit testing, logging, and more.
All developers at some point will need to make improvements to existing code. This book is one I found very interesting and useful, as it explains why to refactor, and many examples of how to refactor effectively.
This book explains what software craftsmanship is and shows developers how to improve and master skills for that role.
Test-driven development, or TDD, is a concept where you write a failing test before writing the code that makes it pass. It's explained (and proven) by many to be a more efficient way to write working software. This book explains more about what it is and covers many examples.
A fundamental series of books on computer programming. It can take a while to read but covers a lot of computer programming concepts that are not covered elsewhere. There are many positive reviews on Amazon saying that these books have helped them become a better developer.
Many of us will work with legacy code, or code that has been around for a long time. This book teaches you strategies for improving how you work with that code, which may be in a poor state, and can help you improve it.
This book helps you solve problems. It's a great complement to other books on improving your programming skills, as this focuses on ways you can solve problems, which aren't taught very often.
Developing applications that are secure is important, but the concepts are often not taught to the level that's required. This book covers those concepts and includes some examples. The material focuses on Windows development and can be quite dated, but the concepts are worth knowing.
Debugging the Development Process: Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams
This book is about the concept of debugging. It's a relatively short book, and while it's about debugging, it's more about how developers work on debugging code and how to help them improve. It's helpful if you want to convince your team to improve the way you work.
This book is about using Test-Driven Development (TDD) to improve the way you write software. It covers how to get started, how to create cleaner code, how to focus on quality, and more.
This book contains a range of opinions and insights held by the software development community, and explanations on whether they work or not. If you've ever had a question or heard something about how things are done, then read this book to learn more about it.
This book covers object-oriented design, what all of the terms mean, and how to create and understand UML diagrams. It's quite a few years old now, but the material is still good quality and useful.
This book collates a range of advice and tips from different experts in the software development world. Some of the topics are covered in other books, but this is a great collection of ways you can become a better developer.
This book shows you how to learn more effectively and improve your skills. Learning is something that developers need to do constantly, and this is a good book to help you improve.
This is a helpful book if you want to learn more about the science of computer science and programming. Many reviewers say it's one of the best books they have read on programming, but can be hard to get through.
This is probably the most popular and most recommended book on algorithms. Algorithms are commonly used in programming and this book covers the most important ones. You'll see a lot of examples in this book and is a good book to learn more about this topic.
Another good book on algorithms, this one targets those who are new to algorithms. Some of the reviews say it's harder to read, but it's in a more formal style than other books.
This is a commonly recommended book when learning about algorithms and programming interviews. It has a range of tips and advice on real problems.
This book covers the concept that to be a better developer you should understand the domain that you're working in. It's helpful for developers, and while some of the material is covered in other books or seems like common practice, you may get some value from it.
This book covers some best practices in software architecture and how systems are meant to interact. It's helpful if you work on large systems.
If you work on systems with a microservice architecture, or want to, then this book can be helpful to you. it shows you examples and advice on working with this type of architecture.
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Some systems you work on will make heavy use of data, and there are some considerations you need to make when designing them. This book goes into detail on these topics to improve the way you design and develop these systems.
This book covers how you can refactor existing code to use design patterns. It's a mix of the concepts from other books on refactoring and design patterns. It has short chapters and explains many different strategies for refactoring.
This is known as the book to read if you work on any kind of messaging system. There's a helpful vocabulary and many examples of different technologies. A case study is also used to demonstrate and explain the concepts.
This book would be helpful for you if you work on large systems. It has a lot of advice and patterns for us that work on large systems.
This is a great book about working with SQL. The book includes many antipatterns, and each of them include an explanation of the antipattern, why it's an issue, and what your alternatives are. I learned a lot from reading this book.
Refactoring code is often easier than refactoring databases, as code represents the current state of the application. Databases contain data and are harder to deploy. This book contains a lot of strategies for refactoring the design of databases and deploying them to reduce risk and downtime for users.
This book contains 25 different patterns for improving the way your applications access data. Whether you use them or not, you'll likely learn a lot about accessing and working with data.
Testing, Deployment, Operations
If there was one book that changed the way I thought about developing software, this might be the one. The concepts in this book blew my mind when I read it and got me excited about deployment and automated testing. Almost all of the teams I've worked with have a long and painful manual testing and release process, and this book explains the why, what, and how to improve that process to make it mostly or completely automated.
This is another great book if you're a developer on an agile team. Rather than having a "testing" phase that was common on waterfall projects, Agile testing is done within the same sprint. This book covers some reasons why that is, strategies for testing code and how to work more effectively with testers.
This book covers strategies and concepts of testing your software. It's not only for testers, it's for developers as well. It can show you how to find bugs quickly, describe errors, use a bug tracking system, and improve your tests.
This book covers software quality and testing, and explains why we test code, and whether perfect software is possible. There are also discussions on many other frequently asked questions on testing and software.
This book covers the concept of DevOps, how it works, and case studies of making it work in different organisations.
This book covers why and how you can get started with DevOps from within your team, then work with other teams and your wider organisation.
This book has a collection of tips and techniques for working on successful projects. It includes things like tools that help and don't help, what's normal on a project and what isn't, and how to notice and fix danger signs.
These days, moving services from on-premise to cloud hosted is a common task undertaken by organisations. This book covers the advice and experience of someone who migrated a Microsoft service to the cloud.
This book covers the experience of people working at Google and how they run their production systems. While much of it is Google-specific, you might get some good information from it.
The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations
This book explains what DevOps is, why it's helpful, and how to get started with it. The reviews are polarising: many say it's too wordy, a lot of hype, and written for managers rather than developers, and others say it's a good guide. Take a look at the reviews and the description to see if it's something you'll get value from.
This is a highly recommended book for those who are looking for a job as a programmer. It has a lot of exercises with solutions to help you improve and refine your skills.
This book focuses on the interview process as a programmer, including what the interviewer wants to hear, the screening process, and how to come up with the solution to demonstrate your skills.
This book is written to help programmers design better user interfaces. As a programmer, a good UI design might be hard and best left to others who are more creative. But this book shows that is not the case and explains how you can improve your UI designs.
This book covers more than just UI design. It covers things like typography, font, and designing interfaces in general. It's a good book if you want to learn more about designing or if you need to for your role.
This book explains a range of user interface design mistakes and issues from around the web, why they are bad, and how to avoid them. It's a good way to learn what not to do.
This is a book on Agile development methodologies, written by a software developer for software developers. It shows you how you can solve problems and work well in an Agile environment.
This is a great book on how Agile teams can estimate and plan their work. There are many stories and experiences online about how this is done, and after reading this book you'll have a better understanding on how to plan your team's work and how to estimate it, and what to avoid.
This book can help you better understand user stories. If you're on an Agile team that writes user stories, learning some helpful ways of writing them is useful, as it's not up to the Product Owner or Business Analyst to write them all of the time.
This book covers concepts such as creating code that satisfies requirements and the users, career development, and writing flexible code. It's a good read if you're looking to improve your career and is often recommended by others online.
This book is a collection of interviews of different programmers, offering advice on how to become a good programmer and solve problems. It's written in the style of another book called Founders at Work.
This is a commonly-recommended book on software design and user interface design. It's a great guide on web development and how to design the layout of web applications and improve how the user experience works.
This book is an explanation of concepts to improve your programming career. Not to be confused with "Clean Code", this book is more about the mindset, managing time, working in teams, and improving the quality of your work.
This book covers a range of topics to improve your career, such as improving your knowledge, taking a contract role or permanent position, whether earning a degree is necessary, coding bootcamps, dress code, and more.
This book covers the process of going from an engineer to a technical manager. Even if this career path is not for you, it can be a good read to understand the things that technical leaders need to deal with.
This book explains that the common problems on software projects are related to people and not technical. It discusses many issues and how to resolve them on your projects.
This book covers a lot of strategies and tips to help software development projects get completed faster. Some tactics work and some don't work, and this book explains why.
This is a commonly-recommended book and tells the stories and experiences of someone working as a software project manager. It describes problems on large projects and how to overcome them.
This book explains the concept that you should treat your career as a business, and look to improve it and drive it in a direction that you want. It covers how to build a career in the same way as if you were building a product.
This book covers the process and experience of teaching yourself to program. The author focuses on learning Python, but covers a lot of things that aren't taught when learning a programming language.
A recently written book on habits, this book will explain why habits are useful and how you can define and implement your own.
A classic book on improving your own habits, you can learn how to become more effective at what you do with the advice in this book.
A great book on why focused, deep work is important. As a developer, we thrive in long blocks of uninterrupted time, and this book explains how you can achieve that.
This book states that a persons' skill and talent is more important than their passion. This can help you understand and work out where you want to go in your career.
This is another book by the team at 37signals, and explains their principles of business and programming. It's got a collection of advice, some of which you might not find in other places. It's helpful if you're building your own application or if you're working in a team.
This is one of the most important and impactful books I've ever read. As we get older, we take on more responsibility in life and at work. The concept of this book is that your brain is great for having ideas but terrible for holding them, so you should use a system to record what you need to do and help you to get it done. This book teaches this system, known as GTD.
Another classic book on personal development, and while the title may seem fluffy or shady, it's a genuine book on how to do the right thing and be considerate of everyone you may work with.
This book, from the authors of software company 37signals, explains how you can use the tools available today to start a business. While it's not about software development, the principles in the book can be used in your career, even if you don't want to start a business.
This is a great book on the mindset of creating wealth and investing. While the book can be a bit repetitive, the concepts are solid, and they are helpful to learn.
A great book to read to learn how to manage your own finances and what to avoid doing. Don't judge the book by the title: it's a great read and has been recently updated.
This book explains the concept of constraints, which is that every system or process has a bottleneck, and that improving anywhere else but the bottleneck can cause more problems. It's a concept I've found helpful when working with teams, as management often wants to add more developers to a team, when more benefit can be gained in other ways. The reviews of the book indicate it's hard to read, so if you don't want to read the book, you can search for more on this topic online.
This book explains that allowing teams to have a little "slack" time in their plans, they can better achieve their goals. Slack time is not time for slacking off, it's a buffer of time so that teams are not 100% accounted for. It's a helpful concept and this book helps to explain why it's beneficial.
A book on founders and starting a business. This can be useful even if you don't want to start your own business, as the tips can be applied to your career.
This book is actually a novel about an IT project that's over budget and behind schedule. It's often recommended by other developers and has some great advice about the problems on software projects.
A great book on personal development and improving how you approach life. It's humorous and to the point. If you want to get a preview of the author's work, check out his website.
This book explains that emotional intelligence, which is concepts like self awareness, motivation, persistence, is more important than intelligence. This is helpful for us as developers as it can improve how we interact with others and move ahead in our career.
This book covers a range of strategies and advice for improving your efficiency with programming, such as how to work smarter, avoid interruptions, and avoid repetition. It's also got a section on questioning authority, which is something that can be helpful and not discussed often.
This book is a collection of essays about software development by a range of other developers. It's been collated by Joel Spolsky and contains a lot of good advice on working with software.
That brings us to the end of this collection of best books for programmers. If you have any thoughts on these books, or any other recommendations, let me know in the comments below.