Recommended books for Software Industry professionals

Recommended books for Software Industry professionals feature image
Anastasios Piotopoulos
Written by Tasos Piotopoulos
Software Engineer, Technical Architect, M.Sc.

Updated October 2019

These hand-picked book collections have helped my skyrocket my career in the Software Industry. Apart from pushing me to become a better professional, they have also inspired me to pursue personal goals and overall achieve more in life. This intro used to be much longer, and all the book descriptions used to be in this page, but I have decided to move my thoughts on books to the end and book descriptions at their respective collection’s page.

Whether you are a Software Engineer, DevOps Engineer, Architect or Manager, I guarantee that you can find something that deserves a spot in your personal book collection. Most of the books in this list I have read more than once, as the experiences I acquire between reads help me see that knowledge in a different light.

You can only connect the dots looking backwards. – Steve Jobs

I tend to update this list about once or twice a year. To get notified when this happens, you can subscribe to the DrinkBird newsletter (a very low frequency newsletter).

Jump to collection:


Software Engineering - Architecture and Microservices Books

This book collection deals with all things architecture, from design to implementation, with a focus on microservices.

Microservices, what a topic! Everybody seems to be developing microservices, but if you ask a hundred people to describe their approach you will most likely get as many deviating answers. The reasons are many, but it all boils down to proper education.

Blog posts and YouTube videos can be valuable sources of information, but I’ve found the signal-to-noise ratio to be quite low so I don’t spend much of my time there. On the other hand, I’ve realized that peer-reviewed work that has gone through a publishing process has a much better chance of offering a high return on investment.

Having survived a few years of designing, developing, shipping and operating numerous cloud-native microservices at scale makes me truly appreciate the books that have helped me stepping up my engineering game. I’m confident that this collection will help you get your architecture skills to the next level.

View full book descriptions

Clean Architecture: A Craftsman's Guide to Software Structure and Design
Clean Architecture: A Craftsman's Guide to Software Structure and Design
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Microservice Patterns: With examples in Java
Microservice Patterns: With examples in Java
.NET Microservices: Architecture for Containerized .NET Applications
.NET Microservices: Architecture for Containerized .NET Applications
Building Microservices: Designing Fine-Grained Systems
Building Microservices: Designing Fine-Grained Systems
The Tao of Microservices
The Tao of Microservices
Microservices: Flexible Software Architecture
Microservices: Flexible Software Architecture
Domain-Driven Design: Tackling Complexity in the Heart of Software
Domain-Driven Design: Tackling Complexity in the Heart of Software
Building Evolutionary Architectures
Building Evolutionary Architectures
Microservices Development on Azure with Java [Video Course]
Microservices Development on Azure with Java [Video Course]

Back to top


Software Engineering - Software Development Books

In this collection you can find some legendary books that have left their mark on the industry, plus many more that can help you strengthen different angles of your career as a programmer.

Towards the end you will notice a few books about functional programming with .NET and F#, a niche that I have been working with for a few years now. At first I felt like a fish out of water, but once I got the hang of it I was able to build really cool software and improve my overall skills in software development.

View full book descriptions

Code Complete: A Practical Handbook of Software Construction
Code Complete: A Practical Handbook of Software Construction
The Pragmatic Programmer
The Pragmatic Programmer
Clean Code: A Handbook of Agile Software Craftsmanship
Clean Code: A Handbook of Agile Software Craftsmanship
Agile Principles, Patterns, and Practices in C# (Robert C. Martin)
Agile Principles, Patterns, and Practices in C# (Robert C. Martin)
Refactoring: Improving the Design of Existing Code (Object Technology Series)
Refactoring: Improving the Design of Existing Code (Object Technology Series)
The Art of Unit Testing: with examples in C#
The Art of Unit Testing: with examples in C#
xUnit Test Patterns: Refactoring Test Code
xUnit Test Patterns: Refactoring Test Code
Head First Design Patterns
Head First Design Patterns
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Design Patterns in Ruby
Design Patterns in Ruby
You Don't Know JS: Up & Going
You Don't Know JS: Up & Going
C# in Depth, 4th Edition
C# in Depth, 4th Edition
ASP.NET Core in Action
ASP.NET Core in Action
Real-World Functional Programming: With Examples in F# and C#
Real-World Functional Programming: With Examples in F# and C#
Programming F# 3.0: A Comprehensive Guide for Writing Simple Code to Solve Complex Problems
Programming F# 3.0: A Comprehensive Guide for Writing Simple Code to Solve Complex Problems
Stylish F#: Crafting Elegant Functional Code for .NET and .NET Core
Stylish F#: Crafting Elegant Functional Code for .NET and .NET Core
Domain Modeling Made Functional
Domain Modeling Made Functional

Back to top


Software Engineering - Career Building, Professionalism and Inspiration Books

Technical knowledge alone won’t get you very far. To get anything meaningful done, you will need to work with lots of people from many different backgrounds, each having their own agenda and incentives, sometimes not even knowing (or caring) about how software development works.

Also no career comes without its ups and downs. Every now and then you might find yourself demotivated, or lacking inspiration to get creative work done. As a professional, it is your responsibility to ensure that you work output is of high quality, reliable and effective while coordinating with everyone else, no matter if you feel like it or not.

And since software development is a team sport, inspiring and influencing others is key to becoming a force multiplier and making an impact, therefore good communication and other soft skills are imperative to your growth.

In this collection you will find the books that forged me from a laborer into a professional.

Laborers are hired to take direction. Professionals are hired to ensure that the direction chosen makes sense. – Robert C. Martin

View full book descriptions

Soft Skills: The software developer's life manual
Soft Skills: The software developer's life manual
The Clean Coder: A Code of Conduct for Professional Programmers (Robert C. Martin)
The Clean Coder: A Code of Conduct for Professional Programmers (Robert C. Martin)
Practices of an Agile Developer: Working in the Real World (Pragmatic Bookshelf) (Pragmatic Programmers)
Practices of an Agile Developer: Working in the Real World (Pragmatic Bookshelf) (Pragmatic Programmers)
The Complete Software Developer's Career Guide
The Complete Software Developer's Career Guide
97 Things Every Programmer Should Know
97 Things Every Programmer Should Know
Steal Like An Artist
Steal Like An Artist
Show Your Work!: 10 Ways to Share Your Creativity and Get Discovered
Show Your Work!: 10 Ways to Share Your Creativity and Get Discovered
Keep Going
Keep Going
The Accidental Creative: How to Be Brilliant at a Moment's Notice
The Accidental Creative: How to Be Brilliant at a Moment's Notice
On Writing Well, 30th Anniversary Edition: An Informal Guide to Writing Nonfiction
On Writing Well, 30th Anniversary Edition: An Informal Guide to Writing Nonfiction
Made to Stick: Why Some Ideas Survive and Others Die
Made to Stick: Why Some Ideas Survive and Others Die

Back to top


Governance, Product Management and Technical Project Management Books

Software is everywhere; in your phone, microwave, car and airplane. Everywhere.

If your business depends on software and you have any kind of authority, you are responsible for treating software engineering with respect and making sure that you understand what it takes to utilize it efficiently and reliably. Human lives may depend on it.

We are turning the U.S. Air Force into a software company that happens to deliver airpower.
– Adam Furtado, Chief Product Officer at Kessel Run / U.S. Air Force, UXDX 2018

If the world’s largest bureaucracy can undergo such a significant digital transformation, then so can your business.

If every CTO, VP, director, product stakeholder, manager and engineer were to read even a subset of books in this list, our industry would be in a much better shape, whether you realize that your organization is a technology one, or still kid yourself that is not.

View full book descriptions

Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations
Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations
Clean Agile: Back to Basics (Robert C. Martin)
Clean Agile: Back to Basics (Robert C. Martin)
The Lean Startup
The Lean Startup
The Devops Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations
The Devops Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations
The Phoenix Project: A Novel about It, Devops, and Helping Your Business Win
The Phoenix Project: A Novel about It, Devops, and Helping Your Business Win
Continuous API Management
Continuous API Management
Release It! 2nd Edition
Release It! 2nd Edition
User Stories Applied: For Agile Software Development
User Stories Applied: For Agile Software Development
Managing Humans: Biting and Humorous Tales of a Software Engineering Manager
Managing Humans: Biting and Humorous Tales of a Software Engineering Manager
The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)
The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)
Smart and Gets Things Done: Joel Spolsky's Concise Guide to Finding the Best Technical Talent
Smart and Gets Things Done: Joel Spolsky's Concise Guide to Finding the Best Technical Talent
Creativity, Inc.: Overcoming the Unseen Forces That Stand in the Way of True Inspiration
Creativity, Inc.: Overcoming the Unseen Forces That Stand in the Way of True Inspiration

Back to top


Thoughts on books

Not all books have the same lifespan

Some people believe that since technology advances so rapidly, books become obsolete the moment they hit the shelves. Although that’s true in some occasions, it ignores an important distinction between different book types.

Knowledge is divided into two categories, information and fundamentals. The former includes specific knowledge that helps people deal with certain problems and usually has a short lifespan, whereas the latter includes broadly applicable knowledge which isn’t constrained to a specific implementation and can be relevant for years.

The hierarchy of knowledge

Especially books around people and behavior can be relevant for a lifetime, as technology changes but people don’t.

Having a solid skill set based on fundamentals can help us learn new technologies on demand, rapidly adapt to new requirements and ultimately live a more fulfilled professional life. Skills based on information have to be built on top of fundamentals.

Note: I have included a few exceptional books that live in the cross section between information and fundamentals. I make an effort to keep those in my lists only as long as they remain relevant.

Don’t judge a book by its cover programming language

It is common for books that target fundamental knowledge to utilize specific programming languages to illustrate their examples. Some people get discouraged and reject the book if they haven’t worked with that language before, or have no intention of using it in the future.

Fundamental knowledge is widely applicable. Learning a concept or technique in one technology stack and transferring the implementation to another should be business as usual. Smart engineers have no such limits.

Success is a process, not a moment

Investing in your craft takes a lot of time and effort. Reading one book won’t bring you success overnight, but creating a habit of reading books regularly - along with plenty of practice - will definitely transform you to a better engineer and stronger professional.

Got any book suggestions of your own? Don’t hesitate to drop a line in the comments below!

Did you enjoy this post? Spread the word by giving it a share, and happy coding! :)