7 Great Books for Software Engineers

April 10, 2022

As a Software Engineer you are likely to spend a lot of time (aside from meetings) reading.

From documentation, blog articles, newsletter, Twitter and tutorials the internet is - undoubtedly - a source of knowledge where you can find anything.

All the information that you acquire by consuming those resources are vary valuable in your day-to-day job but I think they lack a certain depth” that might prevent you to take your career to the next level.

If you want to be a better, all-around Engineer that is able to understand complex business scenarios and build advanced solutions and architectures you have to go deeper and read books.

At least, it’s a big part of it in my opinion :)

Better at what? Software engineering” is a wide and varied field

I hear you. The way I think about how I can improve my knowledge and progress in software development is by working on the T shape.

The concept of T-shaped skills, or T-shaped persons is a metaphor used in job recruitment to describe the abilities of persons in the workforce. The vertical bar on the letter T represents the depth of related skills and expertise in a single field, whereas the horizontal bar is the ability to collaborate across disciplines with experts in other areas and to apply knowledge in areas of expertise other than one’s own.

Source: Wikipedia

Reading books help you expand your T shape both ways. When you are too focused on solving the problems at hands with tools and patterns that you are familiar with, you might miss other way of solving them.

Software development revolves a lot around figuring out the right trade-offs for solving a user problem.

Reading books will help expand your toolbox” and learn to tackle even more complex scenarios.

Here, you’ll find 7 book suggestions that should get you started:

Release It!, 2nd Edition


Book - Release It

With a combination of case studies about huge losses - lost revenue, lost reputation, lost time, lost opportunity - and practical, down-to-earth advice that was all gained through painful experience, this book helps you avoid the pitfalls that cost companies millions of dollars in downtime and reputation.

Understanding Distributed Systems


Book - Understanding Distributed Systems

If you are a developer working on the backend of web or mobile applications (or would like to be!), this book is for you. This book will guide you through the fundamentals of large-scale distributed systems, with just enough details and external references to dive deeper.

Building Evolutionary Architectures


Book - Building Evolutionary Architectures

Over the last few years, incremental developments in core engineering practices for software development have created the foundations for rethinking how architecture changes over time, along with ways to protect important architectural characteristics as it evolves.

This book ties those parts together with a new way to think about architecture and time.

Get Your Hands Dirty on Clean Architecture


Book - Clean Architecture

Ever wondered about how to actually implement a Clean Architecture” or a Hexagonal Architecture”? There’s a lot of noise around these keywords, but you can find very little hands-on material on this topic.

This book fills a void by providing a hands-on approach to the Hexagonal architecture style from the concepts behind it down to actual code.



Book - Refactoring

The book describes the process of refactoring and spends most of its time explaining how to do the various refactorings - the behavior preserving transformations.

The book opens with a simple example that describes the whole process. There are then some introductory chapters that discuss broader issues around refactoring, the code smells” that suggest refactoring, and the role of testing.



Book - Code

This book by Charles Petzold that seeks to teach how personal computers work at a hardware and software level. In the preface to the 2000 softcover edition, Petzold wrote that his goal was for readers to understand how computers work at a concrete level that just might even rival that of electrical engineers and programmers”.

Domain Modeling Made Functional


Book - ddd

You want increased customer satisfaction, faster development cycles, and less wasted work. Domain-driven design (DDD) combined with functional programming is the innovative combo that will get you there.

In this pragmatic, down-to-earth guide, you’ll see how applying the core principles of functional programming can result in software designs that model real-world requirements both elegantly and concisely - often more so than an object-oriented approach.

In the case of good books, the point is not to see how many of them you can get through, but rather how many can get through to you.

—Mortimer J. Adler

If you have any suggestions, questions, corrections or if you want to add anything please DM or tweet at: @zanonnicola