As I have done for the past many years, I will again this year create a list of my favourite books on software development. In recent years I have started reading more about software architecture than programming, therefore you will find some of these books as well. A lot of the books are the same as last year as many are timeless classics as the fundamental principles of software development do not change much over the years. Therefore these are not books that have been published in 2022. I have read all of the books on this list and enjoyed every single one of them.
Disclosure: Bear in mind that some of the links in this post are affiliate links and if you go through them to make a purchase I will earn a commission. Keep in mind that I link these companies and their products because of their quality. The decision is yours, and whether or not you decide to buy something is completely up to you.
Here is my list for 2022.
1 - The Pragmatic Programmer: From Journeyman to Master
Author: Andy Hunt (Sometimes Andrew)
Again this year, this book is number one on my list. I think it is because it was one of the first books I read on software development on general software development skills. I remember when I read it I was about a year into my professional career - which I think is the perfect time to read it. Many of the things mentioned in this book are very basic and easy to understand. If you are new to programming you may learn a great deal from this book. If you have years of experience it will likely confirm what you are doing is right (or wrong). Therefore I believe this book is great for developers of all levels of skill.
Something that you will learn is how to approach development pragmatically. This book will guide you through the obstacles and technical decisions in the daily work of a programmer. Amazon has the following summary of its contents:
- Fight software rot
- Learn continuously
- Avoid the trap of duplicating knowledge
- Write flexible, dynamic, and adaptable code
- Harness the power of basic tools
- Avoid programming by coincidence
- Learn real requirements
- Solve the underlying problems of concurrent code
- Guard against security vulnerabilities
- Build teams of Pragmatic Programmers
- Take responsibility for your work and career
- Test ruthlessly and effectively, including property-based testing
- Implement the Pragmatic Starter Kit
- Delight your users
2 - Release it!
Authors: Michael T. Nygard
This book is also on my list of great architecture books. This is a great hands on book, which takes you through all the things that can go wrong with software and operations of software systems. Michal Nygard mentions a long range of entertaining war stories of different software failures that make systems crash horribly. My most favourite part of the book is on stability patterns and stability antipatterns. These are patterns found around connections/endpoints which improve or decrease stability. This book is more relevant than ever these days with the amount of connections our software has. It is especially relevant if you are working with micro services or distributed systems in general.
I have created a thorough review of this book here.
3 - Head first Design patterns
Authors: Eric Freeman, Bert Bates, Kathy Sierra and Elisabeth Robson
Do you want to learn about design patterns? look no further! I got this book in my hands while I was studying for my AP in computer science. I did not at the time understand how great this book was and still is. But I read it again after I had worked a couple of years and then I found it to be such a great dictionary and lookup for design patterns.
Even though this book is very technical with a lot of code to grasp. It is still relatively easy to read. It has some great examples and humor. The examples in this book are in Java, but they are applicable for most programming languages. The examples are easy to follow and gives you hands on experience. If you already have this book and is looking for an alternative. You could try an older book I also have enjoyed: Design Patterns: Elements of Reusable Object-Oriented Software
4 - Building microservices
Authors: Sam Newman
You may associate the word "microservice" with "buzzword" and I will not judge you for that. You may replace the word "microservice" with "service" and carry on reading. Microservices are an architectural design pattern and approach to make a system as a set of services with the following properties:
- Highly maintainable and testable
- Loosely coupled
- Independently deployable
- Organised around business capabilities
- Owned by a small team
Even though you are not working with microservices, this book is a great help for defining systems/services and their responsibilities. This book takes you through the setup you need to make, in order to succeed in creating continuously delivered software and be able to easily make changes to your system. It goes through some of the aspects such as log aggregation, how to decouple software, versioning, testing and deployment. Overall when you are done with this book you should be able to make better architectural decisions when designing your services.
Sam Newman also has a presentation of the topics in his book here.
You may also learn more in-depth what microservices are about - or get this refreshed.
5 - Test Driven Development
Author: Kent Beck
Test driven development (TDD) - by now I believe all software developers have heard about TDD. It is a practice where your writing of tests drives your software development. If you have practised TDD you will already know most of this book has to offer and you may not learn a lot from it. I personally read it long after I had started to practice TDD and still enjoyed it. Sometimes we like to read books that confirm what we are doing is right, however if you are new to TDD, this book is a must-read. It is very short and easy to understand. The code snippets are in Java, but they are so simple that you can read them with any programming language background. I would say this is the best book for entering the world of test driven development. Kent Beck also included some humour in this book which makes it fun to read. The book is relatively short - it can easily be read in a couple of days (perhaps even one).
Even if TDD is not you, you will still learn how to structure your code better and make it more SOLID. Which is something another book "Refactoring" on this list focuses on, however that is a lot longer and without the focus on TDD.
6 - Soft Skills: The software developer's life manual
Author: John Sonmez
This book aspires to make you the best software developer you can be. That is no small feat and it does not disappoint. It goes above just learning to code and how to solve programming issues. It focuses on the software developer as a whole (a holistic view), that includes the life outside of work. It goes into a long range of topics, it even goes into how to keep yourself in shape as that will improve your overall life quality. That might turn some people off, like "I just want to focus on coding for now" and that is all fine. I believe for this book to make sense you have to be quite a few years into your career and have the basics in place. It makes more sense if you know about the work place and already have som working experience. From there you can build your "soft skills" around what you already know. By this, this book will not just impact your life at work, but your life as a whole.
Topics this book goes into:
- Career and the corporate ladder
- Productivity - how to get more done
- Finance - how to handle your paycheck and negotiating for a better one
- Marketing yourself
- Fitness and spirit
- and much more!
7 - Refactoring (2018 version)
Author: Martin Fowler
A list without refactoring? Well not this time. Among lists on software development the book refactoring or clean code always show up. I have never read clean code so I will include refactoring in this list. As you may already know, refactoring is a book on how to create great code. This includes continuously refactoring and improving your code - which also makes it more maintainable. Cleaning up your code also makes it easier to comprehend and reason about which makes making changes easier.
November 2018 Martin Fowler released a new version of the book. I have not yet read this one, but I have read the old one. Seeing as the new book is already a bestseller I have included the new one instead of the old one here:
8 - Enterprise Integration Patterns
Authors: Gregor Hohpe and Bobby Woolf
I read this book many years ago during a class on how to integrate systems. At first I did not like it much as I thought many of the patterns were too simple. However through the years it has been a good reference when working with developers who have also read the book. This book is especially good if you are working with messaging in large distributed systems (such as microservice architectures). I have used this book mostly as a reference as it can be hard to just read through.
Be warned this book has a massive 736 pages! I would use it mostly as a reference and not something you read from the beginning to the end in one go. However, that might just be my preference.
9 - Don't make me think
Author: Steve Krug
Quite a few developers who end up on this page are web developers or work with user interfaces. I used to do this a lot myself, and during my time working with web development I read the book "Don't make me think". This is a fantastic and comprehensive book on usability. Steve Krug takes you through many annoying and irritating situations while dealing with the web. He illustrates the user's frustration in a way which makes you feel compassion. There is a lot to learn from this book and it is also a great entry level book for User experience. Even though the book focuses on web development, it can still be used for general user experience.
His overall mantra "Don't make me think" is the theme throughout the book. If you have to think in order to use an interface - then it is not that good. Whenever a user interface is not meaningful or frustrates me, I think of this book.
This book is excellent to bring on a vacation, as it is short, fun and inspiring.
That is my list for 2022!
Did you not find what you were looking for? Please take a look at my lists of Great Asp.net core books or Great books for software architects - there are some great books on these lists as well. You can also take a look at my list for 2016, 2017, 2018, 2019, 2020 and 2021 for further inspiration.
That was my list of great books to read in 2022. If I missed any books or if you disagree with my picks, please let me know in the comments down below! If you have any suggestions for me to read in 2022, please write a comment down below as well.