As software developers we constantly need to learn new concepts, programming languages and technologies to stay up to date.
One of my preferred methods for learning is by reading books, and there is no shortage of great books on software development.
The problem is, there are so many books that it can be difficult to find the ones that are worth your time.
That is why in this article I have covered some of the best books I have found over the years that are worth reading.
These books can be read at any level, but some of them are quite advanced, so I would recommend you have at least a couple of years experience already to get the most out of these books.
For anyone who has read any of my other articles on books, you will know I love books that are thought-provoking and motivational.
A quick warning before reading this book. It will make you want to quit your job and become a consultant.
Software Developers hold an enormous amount of power. We are the ones who are producing the assets for the companies we work for. Often, if it wasn’t for the software developers, the company wouldn’t make any money.
So, why is it that we end up in subordinate positions, being dictated what to work on as well as how and where to work.
Developer Hegemony looks at the past, present, and future of corporations and what it means for software developers.
This is a great book that will make you realise your potential as a software developer and can help you find ways to gain more respect and freedom from your coding skills.
It is no accident that the cover of this book has woodworking tools instead of a keyboard and mouse.
This book encourages you to see programming as a craft and not just a data input job. Although written 20 years ago, this book is still relevant today and covers various tips to help you can become a better programmer.
If you are keen to learn how to write flexible, adaptable code that is easy to maintain, then this book is a must-read.
What programming book list would be complete without mentioning Clean Code by Robert C. Martin?
There is a good reason why this book appears on every developer's reading list. It is the bible for learning to write clean code, and practically, everything written on the topic originates from this book.
I think most of us are familiar with the damage that messy code can do to an application. On a personal level, you want to avoid being known as the person who writes bad code, either.
If you want to be known as the person who writes elegant code rather than other developers cursing your name under their breaths, then you need to read this book.
Design patterns are mentioned in a lot of software development books. They are really the key to writing clean, maintainable code that other developers can work on easily.
When everyone is “singing from the same hymn sheet”, it makes developing code as a team a lot easier. One way to do this is by using reusable design patterns that other developers will recognise.
If you can become familiar with the main design patterns, it also makes writing code easier as well as you don’t have to solve the same common programming problems yourself.
Although this book was written nearly 30 years ago, the design patterns are still relevant today, and it is worth having this book on your desk to reference.
Beginners always tend to get a bit stuck when it comes to data structures and algorithms, but like anything they become easier with practise.
This book will give you a good introduction to the topic, but also provides many puzzles and examples to see how data structures and algorithms can be used.
If you are preparing for an interview and are expecting plenty of questions on data structures and algorithms, then it is worth giving this book a read beforehand.
Anyone who has been a programmer for a little will have come across Martin Fowler. He writes numerous useful articles on his website, I especially like his posts about microservices.
This book is just as useful as his website and covers how to refactor your code to improve the maintainability of your applications.
Everyone is familiar with refactoring now, but it wasn’t as common when this book was released, and it has become the goto reference on the subject.
If refactoring isn’t your strong point, or you just want to find some more techniques you can use daily then it is worth giving this book a read.
Another classic software development book, although some concepts are a little bit dated now.
Instead of covering programming, this book is more about the more project management side of developing software.
It is the book you wish your project manager had read.
The book covers the author's experience as a project manager at IBM, where he was responsible for some massive software projects.
It has some great advice which some of us know but would be worth passing on to your PM. For example, how adding more engineers to an already late project isn’t going to help.
This book isn’t like the other books on this list. It is a collection of 15 interviews by renowned programmers.
There are not many books that give us an insight into the minds of some of the best programmers of our time. The book is packed full of advice and inspiration that is useful, no matter where you are in your career.
Everyone has heard of Test Driven Development (TDD) but few people do it.
If you want to write maintainable, robust code, then you need to test it before you write it. Building up your application one test at a time helps you think through how your application is going to work before you waste lots of time writing code.
This is the goto book on Test Driven Development and is packed with examples, so you can see how to do it in practice.
If you want to get started with TDD, then it is worth reading this book first.
From one of the authors of The Pragmatic Engineer (#2), this book's subtitle is “Refactor Your Wetware” and refers to your brain and how we think about solving problems.
This book is full of tips on ways to improve your thinking, learn faster and remember what you learn.
Software development is more about problem solving than writing code, so it is important to improve your brain along with your coding skills.
Another classic which should be on every developers' bookshelf.
Although some concepts are a little outdated now (waterfall anyone) this book is still packed with a practical tips on how to write better code.
This book covers everything from design, testing, naming conventions as well refactoring. Everything in this book is backed with data and real-world scenarios, so it isn’t just “fluff” that you see in plenty of other books.
Software developer interviews can be pretty daunting. Whether it is being asked to code with an audience or redesign the companies' architecture on a whiteboard, they can cause anyone's palms to sweat.
Before going to an interview, it is worth reading this book. Gayle is a former software developer and hiring manager and this book covers everything including problem-solving, data structures, and algorithms.
It is packed full of 189 interview questions that are most commonly asked in interviews, as well as giving us a behind-the-scenes look at how big companies such as Facebook and Google hire developers.
This book is a must-read for anyone considering applying for a software development job.
Many of us understand how to write code, but don’t understand the inner workings of the very computers the code is running on.
This book covers topics such as the binary system and logic gates that many developers don’t understand.
Even though the subject is quite complex, Petzold does an impressive job of breaking down the concepts and making them accessible for a wider audience.
If you want to get a better understanding of the software hardware interface and how your computer actually works “under the hood” then I would recommend reading this book.
This is a 5 books set covering everything from the fundamentals as well as algorithms and the mathematical foundations of computer science.
If you are serious about being a software developer, then this book set is a worthwhile investment. It is definitely an investment given the price of this set compared to the other books on this list.
If you are looking for a comprehensive resource on programming that you can reference throughout your career, then these books are worth getting.
There is a key word in the subtitle of this book, “How to Leverage Your Efforts In Software Engineering to Make a Disproportionate and Meaningful Impact”.
Leverage. One of the greatest things about being a software developer is that you can impact so many people with your code. Once written, your code can scale indefinitely.
This book, written by the former CTO of Facebook, aims to help developers be more effective at their jobs by showing us how to focus on the most impactful project and tasks.
You have probably heard of the 10X engineer. These engineers are not a thing of myth and legend, they really can have a 10X impact compared to others; however, they don’t achieve this by working 10 times the hours.
If you want to find out how to be a more effective engineer and reap the success that comes with it, then it is worth reading this book.