Must Read Books

Hi, this is a list of technical books that have affected my career and way of thinking about software development. By reading these books (and of course working hard), I was able to rise from a junior developer to a software architect in just four years.

The books are categorized into two categories: Early career books and late career books. The early career books contain books that are more suitable for developers with one to three years of work experience, and the late career books are intended for more experienced developers. I chose these categories because I think it is not very pragmatic to read about how to become an effective team lead or how to change company work culture in the early part of the career. At junior level it is more important to master the syntax of programming languages, learn about design patterns and practices, and read about software craftsmanship.

Early career

Cover of The Pragmatic Programmer: From Journeyman to Master

The Pragmatic Programmer: From Journeyman to Master

1999, Andrew Hunt and David Thomas

The Pragmatic Programmer was one of the first software books I read, and it made a big impact on me. The stories about boiling frogs and broken windows really clicked with my way of thinking, and I still share those stories with junior developers. The idea of the broken window is super important when it comes to taking care of software that's been around for a while. I highly recommend this book to developers who've had some work experience but want to step up their game in architecture or leadership. It won't turn you into a software architect, but it's got must-know stories that really help you out.

Cover of Clean Code: A Handbook of Agile Software Craftsmanship

Clean Code: A Handbook of Agile Software Craftsmanship

2008, Robert C. Martin

Consider 'Clean Code' your essential guide in software development. If you haven't read it yet, grab a copy now. The book is packed with valuable general principles, covering topics like effective naming conventions, optimal method and class lengths. It serves as the bedrock for software development, irrespective of whether you're working on microservices or a monolith, a cloud-native application, or an on-premises one. Every application involves variables, functions, and error handling, and this book shows you how to handle them correctly.

Cover of C# in Depth

C# in Depth

2019 (4th edition), Jon Skeet. Manning Publications

C# in Depths is the reference book of C# language. Book is the complete cross-section of the C# programming language. The structure of the book is chronological, which means that the reader will understand why things are done in a way they are. C# contains lots of history and usually the new features are build on top of the existing features. For example delegates and expressions are way to enable LINQ and other complicated features. If you are using C# in your daily life, please read this book.

Cover of Design Patterns: Elements of Reusable Object-Oriented Software

Design Patterns: Elements of Reusable Object-Oriented Software

1994, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

I don't recommend this book as a bedtime reading, because it is super boring, but this book contains some very important pieces of software skills. Design patterns are the fireproof practices that can be used to harden the software architecture and they can raise your application performance into next level. For example factory and singleton patterns are the backbone of many modern application. Read the book, understand the need of design patterns and you have gained a new level in your software career.

Cover of Code Complete: A Practical Handbook of Software Construction

Code Complete: A Practical Handbook of Software Construction

2nd edition, 2004, Steve McConnell

If the Clean Code is bible, then this book is the reference book of software development. Book is full of concepts, practices, tips & tricks that every developer should know. The defensive programming, deep nesting issues, high quality routines, etc. are all vital bits of information that every developer should live and breath. If I would have to pick two books from this list, I would pick Code Complete and Clean Code.

Late career

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

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

2003, Eric Evans

Domain-Driven Design is a interesting beast. It contains lots of very important design guidelines and principles that can drives towards good architecture and software design, but some of the practices are just impossible to follow. For example the unified language practice is usually impossible to follow if your native language is not English, but all the code is written in English. The problem with unified language is that it is the core of Domain-Driven design, however the book contains lots of good tips about system boundaries and domain objects.

Cover of Software Estimation: Demystifying the Black Art

Software Estimation: Demystifying the Black Art

2006, Steve McConnell

At some point of software developer career the requirement to give work estimates appears. It usually starts by pulling some small estimates out of the sleeves, but when it comes to starting to take on more responsibility about software projects and give bigger and bigger estimates, the sleeve strategy starts to crumble. You start seeking for better solutions and practices to estimate software projects and then from the shadows, the Software Estimation book arrives. Book has a punch of good practices that can be applied into almost any company estimation process and it will improve your software estimation skills a lot.

Cover of Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation

Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation

2010, Jez Humble, David Farley

If the Clean Code is bible of software development, the Continuous Delivery is the bible of DevOps. The book basically goes through almost every aspect of DevOps practices. After this book you know the difference of continuous delivery, continuous integration and continuous deployment. Must read for everyone that is working with DevOps practices.

Cover of 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

2016, Gene Kim, Jez Humble, Patrick Debois, John Willis

The DevOps Handbook is more of an introduction to DevOps than handbook. It has lots of war stories about DevOps practices which will give an insight about why and how to use DevOps. The book contains basically three basic things that every company should apply: Systems thinking, Feedback Loops and Continuous Learning. The core of DevOps is actually that simple, but usually the problems lies within the organization structure and people.

List updated 28.12.2023.