10 years ago, books were the most important medium for developers to learn new things, and to keep up with the innovation in the industry. This has changed completely. In our fast-paced industry, blog posts and social media are the superior medium because they are much faster. Especially some of my younger colleagues don’t read books at all. But when it comes to basics, this can be a problem. Blogs and social media are much faster – but normally they are not that deep and intense.
I stumbled about this a few weeks ago, when I was talking about Domain Driven Design with some colleagues. I’m not an expert in DDD – but I read the book from Eric Evans – so I’m at least familiar with the concepts and terms and I can talk about them with others. Most of my colleagues didn’t even know the book! That’s why I decided to put together a list of books that I expect all my developers to read.
The list represents my personal opinion and has a strong focus on the developers in my business line. I also only present books that I see relevant for today’s coding challenges. Normally list like this start with “The Gang of Four”. But in modern languages, like C#, most of the patterns are already included as a language feature. It’s a very good book – but in my opinion, it is not a must read. If you think there are books missing – please leave a comment. I’m really looking forward to the discussions here.
Note: if you buy a book with one of the links here you will support this blog. If you don’t want to support the blog, just search for the title on amazon yourself.
1. Clean Code: A Handbook of Agile Software Craftsmanship
Author: Robert C. Martin
Publisher: Prentice Hall 2008
So this is really THE book every developer must read. If you haven’t done it yet – buy the book, read it and thank me later. It’s an epic book about software craftsmanship and clean code. It does not only tell you how to write good code – it also provides an effective way to approach software development. It describes principles, patterns and practices for writing clean code.
The examples are in Java – but that doesn’t matter. You can perfectly understand the code as a C# developer.
2. Domain-Driven Design: Tackling Complexity in the Heart of Software
Author: Eric J. Evans
Publisher: Pearson Professional 2003
This is a book about tackling the complexity in software by bridging the gap between the abstract problem domain and the concrete implementation. Every developer – especially when working for different clients and different problem domains like we do – should know what a Ubiquitous Language and a Bounded context is.
3. The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win
Authors: Gene Kim, Kevin Behr and George Spafford
Publisher: Nbn Tradeselect 2014
This one might surprise you in my list. It’s a novel about IT – and if you work in IT, no matter if you are a developer or an IT-Pro, you will find this book very entertaining. But it’s not only entertaining – it really explains perfectly what DevOps is all about. If DevOps is still just a buzzword or a synonym for automation for you – buy the book and read it! It’s a small book and you can read it in one or two days. It’s absolutely worth the time and money.
4. The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations
Authors: Gene Kim, Johm Willis, Patrick Debois
Publisher: It Revolution Press 2016
If you’ve read “The Phoenix Project” and you want to learn more about DevOps – this is the book to read. It’s the DevOps bible, so to say. Since DevOps is the future of software development – I encourage every developer to evolve in this direction.
5. Agile Principles, Patterns, and Practices in C#
Authors: Robert C. Martin, Micah Martin
Publisher: Prentice Hall 2006
This book is about agile software development. It explains the basic principles, patterns, and practices of agile development. The book explains things like spiking, splitting, velocity, planning iterations and releases, Test-driven development etc. It’s very “hands-on” and includes many source code samples.
6. Effective C#
Author: Bill Wagner
Publisher: Pearson Education (Us) 2016
This is the deep-dive book for the language of your choice. If you use JavaScript replace it in the list with a deep-dive book for JS. I read this book in an older version some years ago and benefited a lot from it. I hope the new version is as good.
7. Refactoring: Improving the Design of Existing Code
Authors: Martin Fowler, Kent Beck
Publisher: Pearson 1999
I really like the style of this book. It’s written very precise and clear and has good samples. It does not matter that the samples are in Java. The book goes beyond TDD and shows how you can refactor and redesign code to become “clean”.
8. Art of Unit Testing
Autor: Roy Osherove
Publisher: Manning; 2013
This was my first book about unit testing and it’s for me “the book” about this topic. If you preach TDD and unit testing – like I do – you get a lot of different opinions from other people. It’s really good to have a reference that you can refer to.
Summary
So, does the world need another list of “books that every developer must read”? I thought not – but the last month showed me the opposite. This is my personal top 8 and I sure it is not complete. What do you think? Do you have any books that are missing? Leave a comment or contact me on Twitter. I’m interested in what you all think.
I would add Code Complete by Steve McConnell to the every developer must read list. He overlaps with Uncle Bob’s Clean Code, but has lots of really useful advice for new and old developers.
I will add that to my personal list 🙂 Haven’t read ot yet.