This is my personal reading list. It mostly contains books that both are on my shelves, and are somewhat timeless. Sure, there are great books about transient things and technologies, but I don’t feel like updating my recommendations that often. These recommendations should remain valid for the foreseeable future! Enjoy.
Oh, and I try to keep my Goodreads profile in synch, to a degree.
TLDR: My recommendations
These are books that I keep around on my bookshelf, and that I would most usually recommend to people. Further down the page are tiny reviews of these books. Then there’s also a section with several “Special Cases”, books with important caveats.
In alphabetical order:
Here’s a super quick review of all those recommended books.
Agile Estimating and Planning (978-0-13-147941-8)
This book, preferably preempted by reading the official scrumguides.org description, is probably the best possible source of information for Scrum and Agile in general. The book clearly reinforces pieces I’d puzzled together already using common sense and experience, as well as introduces new ideas and tricks.
Wish I had read this book much earlier in my career, but better late than never I guess. Higly recommended!
The Art of War (978-0-00-742012-4)
This book is on my list of recommendations, because I enjoy stretching analogies as far as they can just to learn something from the source material. The text is old, and it shows. So if you also like historically important texts where analogies can help you understand modern days: this one’s for you too.
The Culture Map
An absolutely amazing book for understanding other cultures, as well as your own. Invaluable even if you only incidentally work together with people from other cultures.
The book provides you with a framework to understand the differences between people from different cultures, as well as some ways to deal with those differences.
Wish I had read this years earlier!
Death March (978-0-13-143635-0)
This is a very negative book. As long as you are prepared for that, it is actually a very helpful book. I’ve read every chapter as: “Okay, assuming the worst, what are my options?”. With that in mind, it is a very helpful book.
As such I don’t intend to pick up many of the techniques. Things like “Chinese Water Torture” as a technique for negotiating budget for IT projects are not my style. But what the book does do is help recognize when others employ those techniques. And that’s very helpful.
Design Patterns (0-201-63361-2)
Whether you like it or not, this book is a must read. I can do nothing but recommend it, because so many other books refer to this one.
It doesn’t hurt to recommend this one though. Dated it may be, it is still a well-written book. In some sense it being dated is even fun: you already know which patterns withstood the test of time.
Dependency Injection in .NET, 2nd edition
The only book where I’ve bought a 2nd edition and read the whole thing again. Even though “.NET” is in the title, it can be useful to any developer. The authors are absolute experts, and this latest edition is a must read for anyone building full-scale modern applications.
Domain-Driven Design (978-0-321-12521-7)
Having a background in logic, math, language analysis, and philosophy, this book was an open door. That is: a brilliantly shaped open door, to greener pastures, and it was a lot of fun seeing someone go through the door in a deliberate manner.
The first part of the book is great: in clear chapters it is explained how to structure your domain in a codebase. I found the second part a little less entertaining, as it was not really bringing much (new) interesting info to the table.
On the whole though: a great book.
Don’t Make Me Think (978-0-321-34475-5)
If you want to read all the classics in IT literature: pick up this book. It’s a fun read, and you’ll get through it in a few hours.
If you want to learn something new: don’t pick up this book. That is assuming you’ve got your web-design basics alread: don’t clutter the home page, make clickable things look clickable, less is more, do user testing, etc.
Yet still, a few years after reading it, I upgraded it to be on my recommendations list. Why? It’s a classic, an easy and quick read, and helps understand the software space as a whole.
The Infinite Game
Yes, you can watch a 10 minute YouTube video on this subject and get 80% of the knowledge from this book as well. Technically a better deal, right?
Wrong! Reading through the book firmly settles the core message in your mind, because it is not 10 minutes. I remember little more than the core message from this book, yet I’m sure that if I had only watched the YouTube version, it would’ve been filed under “cat videos” in my brain instead.
Influence: The Psychology of Persuasion
This book is absolutely amazing!
If nothing else, it should save you a lot of money. By knowing when tricks described in this book are being used on you, you will be able to adjust accordingly.
In addition, you can do the reverse. Proper and ethical use of the techniques from this book will help you in both personal and work life.
A book I’m likely to read more than once, and if you know me, that is enormous praise!
Made to Stick
This was recommended reading for a 7-day course on public speaking. It has changed the way I write and talk with people. And not only in “public speaking” contexts. My e-mails, presentations, conversations, contributions in meetings, documentation, code, and even mundane interactions have been changed (for the better) by the knowledge from this book.
On a side note, being able to sell an idea is a crucial skill for software developers, as much as for any discipline. Sure, the book doesn’t teach you how to code, but it teaches you equally important “soft” skills.
The Mythical Man-Month (978-0-201-83595-3)
This book is a classic, and for good reasons! The book has aged, and I did struggle with grasping some parts of the context (what the **** is System 360?), but perhaps that allowed me to focus even more on the timeless bits of advice in this book.
Not all the chapters (which are in fact seperate essays) were equally good. But I very much enjoy knowing where “Second System Syndrome” and “Mythical Man-Month” have their roots.
The Non-Designer’s Design Book (978-0-3215-3404-0)
Thoroughly enjoyed this book! It taught me a lot about design heuristics, which is great for someone who isn’t artistic in nature. Only two minor pieces of critique come to mind. First, the book is plain damn ugly, not even sticking to its own advice at times. Second, (mainly because the book’s aged a bit) the advice doesn’t carry over to online publishing without effort on the readers part. Nonetheless: recommended!
The Pragmatic Programmer (978-0-2016-1622-4)
Even though I’ve been reading programming books as a hobby for several years, it was this book that inspired me to read even more.
This book is a great read, and I’d recommend it to any programmer, any day. It may be a little bit dated, and at times perhaps even a little bit “zealotry”, but if you know that up front you should go through this book in a breeze.
PS. Since I wrote this review, there’s been an “Anniversary Update” of sorts, and I presume it’s even better than the original!
The Prince (Machiavelli)
Like “The Art of War”, this book is a bit of a stretch for a top-books recommendations list of a programmer. Yet, here we are!
Yes, you have to draw your own analogies to modern day life. Yes, those might be a stretch. But still, you can learn a lot from them. Many things from the book have a modern-day equivalent, and even if the analogy breaks at times, of even if the advice is not always timeless, it still nets a positive.
So You Want to Talk About Race?
I enjoy nearly all the privileges a western software developer can have. This requires that I should put effort into paying it forward to those who didn’t or haven’t got a similarly privileged situation.
This book helped me understand parts of this equation. Sure, it’s not specifically about my trade, it focuses mostly on one particular aspect (race), and it’s even somewhat tied into the situation in the United States as opposed to my region. But if you adjust for those minor changes, the book is still super helpful in all regards.
The book on the “Google Ventures Design Sprint” principle is an easy and fantastic read! Reality has caught up with it, and its proponents have already (true to the idea behind the book) evolved the way they run Design Sprints. But, if you know this, the book is still a great starting point, or at the least historical context.
The book details the original idea behind a “one week design sprint”, where you test and (in)validate an idea you have. With real users, and a real prototype.
Having tried this actual approach as well showed me the ideas in the book are sound, especially when adapted to your specific situation.
Mostly, this book was a lot of fun to read! In anecodotal fashion, the anatomy of a great presentation is laid out. To be used as inspiration for your own presentations, as well as other situations where you want to convince someone of your ideas.
And that latter part is where it shines, and why it makes my list of recommended books. Take the ideas and inspiration from this book, and apply them in your everyday life! Convince your colleague of an idea you have, excite your audience in any situation with a proper bit of storytelling: this book tells you how!
This Is Lean
In a world of “Scrum Certifications”, the “SAFe Framework”, and other agile nonsense, this book is a breath of fresh air! It revitalizes your enthusiasm for working in a truly agile manner. This can be summed up by an abbreviated and paraphrased anecdote from the book:
The Lean expert was shown around the factory, shown all the practices and ideas and whatnote, and was asked if he didn’t think the western company was really “Lean” now!? The answer: I can’t know, I wasn’t here yesterday.
And that pretty much sums up what’s wrong with most companies trying to be “agile” nowadays, and it’s great to read it so eloquently written down.
Working Effectively With Legacy Code (978-0-13-117705-5)
The book starts off with a mild surprise: its definition for what “legacy code” is. It is defined as “Code without unit tests”. A more appropriate title for this book would’ve been “Making Legacy Code Unit Testable”. Luckily, my colleague warned me beforehand, so I knew what I was getting into.
So I started reading with adjusted expextations, and the book lives up to them. It inspires to take a new look at the legacy code I’m currently dealing with, explains pretty well what refactoring- and dependency breaking techniques are available. Some chapters I skimmed (C macros for unit testing, anyone?), but on the whole: recommended!
For better or for worse, here are some books that were worth a special mention, but did not make my list of recommended books.
Books with caveats
- Clean Code: a great book in isolation, but the author has in recent years shown support for many things (including mysoginism) that I vehemently oppose. Even though this doesn’t show that much in the book, I still am not comfortable anymore plainly recommending this book.
- The Clean Coder: same as the previous book.
- Smart & Gets Things Done: an inspiring book when I read it, but would have to re-read it to make sure it doesn’t miss the mark on inclusiveness.
- Building Microservices: a great book, but not expected to be entirely timeless.
- Agile Retrospectives: the book which I often do recommend with the caveat that “it’s not actually a good book” but “you may find inspiration for retro’s in it nonetheless”.
- Writing Effective Use Cases: I do recommend reading this! But it merely teaches you (nicely) how to write use cases. The caveat: there are limited use cases for the Use Case format.
- Code Complete, 2nd edition: this is a horrible book! I didn’t even finish it. I’m stumped why this makes all the “top” lists. Not worth your time or money.
- Never Split the Difference: I disagree with much of the advice, and have ethical and moral issues with the fact that the book acts as if it’s okay to use its advice in daily life. But if you adjust for that, it’s actually a fun and insightful read. If nothing else for you to know when the tactics are being used against you.
Good but not great
- The Design of Everyday Things: a fun book! But not super-insightful.
- Agile Software Development: a classic, I suppose.
- Test-Driven Development: open doors at worst, a somewhat dated okayish TDD tutorial. Better pick a good online course.
- The Mom Test: worth your time since it’s short, but not “game changing”.
- Escaping the Build Trap: worth your time, but not mind-bending material.
- Beyond the Prototype: just fine for inspiration, but not great.
- Inspired: a fun read for sure, but not game-changing.
- 100 Things (Every Designer Needs to Know about People): okayish, nice to read if you want to check a bucket list of UX books.
- Sapiens: interesting read especially to “know what everyone’s talking about” since the book’s so often read, but the book contradicts itself in many ways and forms.
- Freakonomics: a collection of great economic and socio-political stories, most of which you’ve probably already heard about.