Hi, this is 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 contains 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 pragmatical to read about how to become 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 craftmanship.
Early career
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.
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.
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.
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.
Code Complete: A Practical Handbook of Software Construction (second 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
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.
Software Estimation: Demystifying the Black Art (Best Practices (Microsoft)) (Developer Best Practices), 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 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.
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.
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.