As I have done for the past 3 years, I will again this year create a list of my favourite books on software development. As seen before you will see some books that were on my previous list and some new additions.
These are not books that necessarily have been published in 2019, but they are books which still keep their value. You will still learn from them and they will improve your skills at software development. I have read all of them and enjoyed every single one of them. Here is my list for 2019:
1 - Release it!
Authors: Michael T. Nygard
This book is also on my list of great architecture books. For the past many years the book The Pragmatic Programmer has resided as number one on my list. This changed this year due to me reading "Release it!" This is a great hands on book, which takes you through all the things that can go wrong with software and systems. Michal Nygard mentions a long range of 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 in 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 more thorough review of this book here.
2 - The Pragmatic Programmer: From Journeyman to Master
Author: Andy Hunt (Sometimes Andrew)
This is likely the first book I read on programming. I remember I was about a year into my professional career. 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. 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 definitely 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.
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. But I read it again after I had worked a couple of years. 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. 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 "buzz" and I will not judge you for that. You may replace the word "microservice" with "service" and carry on reading. 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 continuous 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.
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 practiced TDD you will already know most this book has to offer. I read it long after I had started to practice TDD and still enjoyed it, even though there was little to learn for me. However if you are new to TDD, this book is a must-read. It is very short and easy to comprehend. The code snippets are in java. But 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 humor 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).
6 - Refactoring (2018 version)
Authors: 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. Continuously refactoring and improving your code - which also makes it more maintainable.
Martin Fowler has just released a new version of the book in November 2018. 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 here:
7 - The art of Scalability
Authors: Martin L. Abbott and Michael T. Fisher
By now you can see from my list that I am into software architecture and professionally I am working with large systems. In large systems or systems with big throughput there is always one thing to look out for: scalability. When it comes to scalability, this is the go-to book. It takes you through everything you need to know about scaling large systems. It is based a lot on theory. But theory that can easily be applied to the systems you are developing. This book is not only interesting for software architects. It is also great for software developers or operation engineers. The only negative thing I have to say about this book is that it is a long read (500+ pages).
8 - Don't make me think
Author: Steve Krug
Some 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 users' frustration in a way which makes you feel compassion. There is a lot to learn from this book. It is also a great entry level book for User experience. Even though the book focuses on the web, it can still be used for general purpose 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.
That's my list
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 must-read books on these lists. You can also take a look at my list for 2016, 2017 and 2018 for further inspiration.
This was my list for going into 2019, I hope you enjoyed this. Let me know what you think in the comments - may 2019 be a great year for you.