By now it has become a habit to create this list every year. I have made little changes as I still think the books below stand the test of time. Many of them I read years ago. So the books on my 2017 are still to be found on the list. These are programming books that I think every developer should read. This is a list of some of my favourites and they are best selling classics. Here we go, my favourite books as of year 2018:
1 - The Pragmatic Programmer: From Journeyman to Master
Author: Andy Hunt (Sometimes Andrew)
This is one of the first books I ever read on programming. I remember I was about a year into my professional career. At first I found it funny, because the book was about Pragmatism and I was working at Pragmasoft back then.
Well, about the book! I believe this book is great for developers of all levels of skill. If you are new to programming you will learn some basic concepts about the craft. If you're a master you will very easily get through it. But you might still learn a thing or two. Something that you will definitely learn is how to approach development pragmatically. This book will guide you through the obstacles in the daily work of a programmer.
2 - Test Driven Development
Author: Kent Beck
Test driven development (TDD) - This topic comes up again and again. If you have practised TDD you will already know most this book has to offer. 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 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).
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 finished my education. I found it to be such a great dictionary 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 are looking for an alternative. You could try an older book I also enjoyed: Design Patterns: Elements of Reusable Object-Oriented Software
4 - Don't make me think
Author: Steve Krug
This is the best book I have read 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.
5 - The art of Scalability
Authors: Martin L. Abbott and Michael T. Fisher
Are you into software architecture? Do you work on large projects or systems? Then this book is definitely for you! Among the books on my list this is one of the largest (500+ pages). 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 programmers. It is also great for software architects or operation engineers.
6 - Slack
Author: Tom Demarco
This book is not directly about programming. It is about how you spend your time. The message is to spend more time on innovation. Tom Demarco tells us that only a small part of our job is to program. Our most important duty is to be great thinkers. This requires time. Which is like the saying "The more experience you have as a developer, the less code you write". If you are into management, you might also enjoy his book Peopleware.
7 - Enterprise Integration Patterns
Authors: Gregor Hohpe and Bobby Woolf
I read this book many years ago during a class on integrations. 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 also great if you are working with microservices and communicating through a broker (Messagequeue system). Many of the patterns described in the book are targeted messaging systems. I use this book mostly as a reference as it can be hard to just read through.
If you truly are into Microservices, I would suggest Sam Newman's book named "Building microservices" to go with this book.
Any items on the list that you think are missing? Thinking about a book that I should read? Please let me know in the comments below and have a great 2018! :)