Books for Software Engineers

Paul Milian
5 min readFeb 16, 2019

--

Photo by Jonas Jacobsson on Unsplash

Reading is a great way to progress as a software engineer. There is a ton of reading material on the internet. However, books will always be of better quality as they will dive much deeper into subjects.

Theoretical knowledge is just as important as practical experience. School can only teach us so much before we are thrown out into the real world. Certain books are extremely invaluable for beginners. They will teach you how to program or how to think. That knowledge will be useful throughout your career. More importantly, it can prevent you from building bad habits. Books are also very important for more experienced programmers as they can keep up-to-date with newer technology and practices.

“Practice does not make perfect. Only perfect practice makes perfect.”
― Vince Lombardi

Following are some of the books I read that I believe are worth your time.

Clean Code: A Handbook of Agile Software Craftsmanship

by Robert C. Martin

This is a book about software craftsmanship. I highly recommend it to beginners. It shows how to write clean code and explains why it is considered clean. It is also very approachable. More experienced programmers might already know most of what is written in the book. However, they can definitely learn a thing or two. Moreover, it is good to read this book every now and then to refresh our memory in case we are lead astray.

Not only should you read this book, you should also practice writing code this way too. The craftsmanship taught in this book is one you will keep all your life as a programmer.

Uncle Bob (Robert C. Martin) has written many other books that are all just as good as this one. You should definitely check them out too. With them, you will learn all about SOLID principles.

The Pragmatic Programmer: From Journeyman to Master

by Andrew Hunt and David Thomas

This is one of my favourite books about programming. It covers a broad spectrum of topics. This book will make you a much better-rounded software engineer.

This book teaches you how to take responsibility as a programmer. It teaches you how to work in a team and on projects. It will also talk about how to use tools at our disposal and how to approach certain problems. It’s a philosophy lesson about pragmatism in our craft.

This book is a must-read for all software engineers. It is also very approachable, so no excuses not to read it!

Code Complete: A Practical Handbook of Software Construction

by Steve McConnell

This book is considered a bible by many. It covers everything about software construction such as designing, implementation, debugging and testing. It’s a very exhaustive and qualitative guide.

This is a must-read for any intermediate to advanced programmer. I wouldn’t recommend it to beginners just yet though. It would be better for them to read Clean Code and Pragmatic Programmer first. This book is very long (900 pages) and very difficult to understand. It is quite a challenge to get through it. Beginners might not grasp most of the concepts just yet.

Refactoring: Improving the Design of Existing Code

by Martin Fowler

The first chapters of this book will take you through a practical refactoring example. It will explain the importance of testing when it comes to refactoring. It will also give a step by step guide on what to do and what are the best ways of doing it. There is a lot of insight that can be taken from this practical example.

The following chapters are more of a reference to different refactoring techniques. They aren’t too useful anymore because modern IDEs automate those processes nowadays.

The first few chapters are definitely worth a read though, especially for beginners.

Domain-Driven Design: Tackling Complexity in the Heart of Software

by Eric Evans

This is a great book that explains how to tackle domain complexity. Some of the major concepts talked about in this book are Bounded Contexts, Ubiquitous Language and Value Objects. These are very important and every programmer should know about them.

I often hear about this book, especially at conferences. I read it because of the hype that surrounded it. A lot of the concepts explained were really interesting but I couldn’t see any direct use-case for me. I was working on projects that were very simple domain wise. A lot of the DDD practices come with tradeoffs that aren’t always worth it. That being said, the concepts of Bounded Context, Value Object, and Ubiquitous Language can be and should be, used as much as possible.

I would only really recommend reading this book if you work in a field with a lot of domain complexity or if you have time to spare. Working with microservices is another good reason to read this book.

Please make sure you read about the concepts mentioned above, on the internet or elsewhere. You can read more about value objects here:

To wrap it up

There are many other books worth mentioning but I’d prefer to keep the article short.

Feel free to share your favourite books and authors in the comments.

Thanks for reading! 🤓

“I’m not a great programmer; I’m just a good programmer with great habits.”
Kent Beck

--

--

Paul Milian

A Software Engineer who is passionate about his craft.