Book List

This is my personal reading list. It’s by no means comprehensive, nor is it (directly) a recommended reading list. It just contains the books I found memorable for one reason or another.

In hindsight it’s a shame I didn’t start this list way earlier, because the list will now be missing the books I’ve read in the first fifteen years of my programming career. But hey: better late than never!

The “A” List: Recommended

These are some of the memorable computer books I’ve much enjoyed reading.

The Pragmatic ProgrammerThe Pragmatic Programmer

ISBN: 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.

Agile Estimating and PlanningAgile Estimating and Planning

ISBN: 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 two years earlier, but better late than never I guess. Higly recommended!

The Clean CoderThe Clean Coder

ISBN 978-0-13-708107-3

A fantastic book! If you’re (like me) not easily bothered by an emotional, anecdotal, self-help kind of tone, and accept the fact that the book is about the author’s personal practices and standards, this book can be a lot of fun to read. I absolutely devoured the book.

“Professionals recognize “Quick and Dirty” is an oxymoron. Dirty always means slow!”

Clean CodeClean Code

ISBN 978-0-13-235088-4

This is a very decent book. It makes several interesting points. Even though it contains close to zero surprises, it nonetheless manages to surprise with a new perspective on things.

The reason I’d recommend this book: it makes you think about things, even if on some points you’ll disagree with the author. One downside: the page-long slabs of code (which, really, weren’t needed).

The Mythical Man-MonthThe Mythical Man-Month

ISBN: 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.

Death MarchDeath March

ISBN 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.

The Non-Designer’s Design BookThe Non-Designer's Design Book, 3rd ed.

ISBN 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!

Design PatternsDesign Patterns

ISBN 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.

Working Effectively with Legacy CodeWorking Effectively with Legacy Code

ISBN 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!

Dependency Injection in .NETDependency Injection in .NET

ISBN 978-1-935182-50-4

A great introduction with Dependency Injection. The first two sections introducing DI were the best parts, making it a recommended read on itself. The third section was a bit in depth for an overview/introductory book like this.

The fourth section is an overview of a several different DI frameworks available. Useful on one hand, but in hindsight perhaps not meant to read through (should’ve just looked up a chapter when/if the framework was relevant to me). One shame though is that Ninject wasn’t included (which is the framework I ended up trying in some of my projects).

Domain-Driven DesignDomain-Driven Design

ISBN 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.

Seven Databases in Seven WeeksSeven Databases in Seven Weeks

ISBN 978-1-93435-692-0

A great book!

Reading it in fall 2015 its use as a “comparison” is starting to fall off though, because in three years much has changed. However, it’s still a great book to get an overview of the field; just remember that there are new and emerging choices, and the databases in the book have changed a lot in the mean time.

Would recommend, for sure. Would be great if the book gets a second edition somewhere in the next two years…

Smart & Gets Things DoneSmart & Gets Things Done

ISBN 978-1-59059-838-2

This is a fun book to read, both as someone who might need to help with / do recruitment, as wel as someone who may go looking for a job one day (make sure you are the one employers want).

A few open doors (but not too many), several things I disagree with (but that’s not necessarily bad in a book, at least here it isn’t), and not a style of recruitment you might attain, but still: good stuff to be aware of. And short + easy to read.

Building MicroservicesBuilding Microservices

ISBN 978-1-491950357

Small and to the point, this book is a great summary on the do’s and don’ts of microservices. Some advice you’ll already know, some you won’t. Some advice you’ll love, some advice you’ll hate (in a good, thought-provoking fashion).

Probably not “timeless” advice, but a good book for this decade.

JavaScript: The Good PartsJavaScript The Good Parts

ISBN 978-0-596-80552-4

This book is at the bottom of the A-list because (1) it is rather specific (to one language), and (2) it’s probably not everyone’s cup of tea.

This book is recommended nonetheless though, especially to those that (1) can’t seem to grasp JavaScript and (2) have a logical and/or functional-programming background.

The “B” List: Okay-ish

The following books were “okay”, as in they were worth the time reading. Wouldn’t recommend them directly though, unless you have a good reason to pick up the book anyways.

The Design of Everyday Things (Revised and Expanded Edition) The Design of Everyday Things

ISBN: 978-1306432771

The first version from 25 years before this edition was called “Psychology of Everyday Things”, and was a highly influential book. This edition is true to the old material, with some updated examples and new insights from the author from over the years.

The book was fun to read, so in that sense I would recommend it. But if you have some general knowledge of UX, cognitive science, and psychology, this book will not add all too much. Reading an excerpt for the core principles would be equally useful.

Agile Software Development, Principles, Patterns, and Practices Agile Software Development: Principles, Patterns, and Practices

ISBN: 978-0135974445

Okayish book for beginners, but as an experienced programmer I got bored quickly. It’s partially a recap of things you’ve probably already read plenty about (SOLID principles, basic design patterns), and also partially a giant listing of Java code. I personally don’t enjoy pages and pages of sample code just to make small points. But I guess if you’re new to software development it might actually help.

Still, I’d recommend the A-List books over this one any day of the week.

Async in C♯ 5.0Async in C♯ 5.0

ISBN: 978-1-449-33716-2

Very decent introduction on this topic. Short, and to the point, with small well-sized chapters. Even though it would not have added too much, a short Index would’ve been nice.

If you’re above-beginner level C♯ and just starting with async, this book is highly recommended. For in-depth knowledge, you should probably skip this book.

The Art of WarThe Art of War

ISBN: 978-0-00-742012-4

This book sometimes weirdly makes its way into “Top N” lists of management or IT books. This had always fascinated me, and recently I picked up a pocket version.

It requires some imagination and creative thinking, but trying to convert the war-related advice into advice for your professional life is actually quite helpful.

On the B-list, because this book is not for everyone. But if you like analogies and metaphors, this book is fun to read.

Java SE 8 for the Really ImpatientJava SE 8 for the Really Impatient

ISBN: 978-0-321-92776-7

This book does exactly what it promises: gives a quick rundown of Java 8 for those who want the “short short” version.

I’ve used Java quite a lot about 10 years ago. During my .NET career I’ve always kept an eye on Java, and how it evolved along similar yet different lines. The introduction of lambda’s in Java 8 triggered me to read up on current state of Java code. This book delivered nicely.

Test-Driven DevelopmentTest-Driven Development

ISBN: 978-0-321-14653-3

A decent book if you know nothing about TDD yet…. I think. If you’re already doing TDD or even a decent amount of unit testing, then this book may not be the most interesting read anymore.

Understandable that it’s the “seminal work” in TDD-land, but skip it if you know your way around unit testing land.

Programming WCF ServicesProgramming WCF Services

ISBN: 978-0-596-80548-7

We already had this book on the shelf at work, so it seemed like a natural starting point for a study towards MCTS 70-513. The back cover of this book states “Previous programming experience is recommended.“, which in programming-books-land is a euphemism for “This shit is hard!“.

The book is positioned and reviewed as the best in-depth WCF book around. It doesn’t disappoint, though it’s hard not to hold the somewhat boring nature of WCF against this book.

Don’t Make Me ThinkDon't Make Me Think

ISBN 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.

I didn’t regret buying and reading this book (on the contrary), but I wouldn’t recommend it either.

JavaScript: The Definitive GuideJavaScript Definitive Guide

ISBN 978-0-596-80552-4

I’ve read the 6th edition. It’s been the recommended in-depth JavaScript book for some time, and rightfully so. Only recommended if you want to deep dive JavaScript though (obviously).

Professional SQL Server 2012 Internals and TroubleshootingSQL Server 2012 Internals and Troubleshooting

ISBN 978-1118177655

This one is only on the “B” list because it’s very specific. If you’re after an in-depth book about SQL Server 2012 though: this book’s recommended.

I’ve read the book cover to cover, but only because that’s how I prefer to read any programming book. In most cases, reading only relevant chapters works better with this one.

The “C” List

These are the books I’ve read, but I wouldn’t necessarily recommend them. Some of them are still decent, some of them are bad to the bone.

Agile RetrospectivesAgile Retrospectives

ISBN 978-0-9776-1664-0

About 50% of this book consists of summaries of what type of pencils and paper you need for things like “brainstorming”, how many minutes you could spend on it, and other advice you can easily come up with using common sense.

The other 50% is mildly interesting, and had it been condensed into a blog post or two I might’ve even read it.

As it stands I do not spending time on this book.

Writing Effective Use CasesWriting Effective Use Cases

ISBN 978-0-201-70225-5

This book is terrible. And I know the exact moment I realized it: right after I read half a page of text about whether or not to number the steps in a use case. I mean: come on, you don’t need a book to tell you whether to number steps or not, right?

Read the Wikipedia article instead, I’d say.

Responsive Web Design (A Book Apart)Responsive Web Design (A Book Apart)

ISBN 978-0-9844425-7-7

This one is from the Book Apart series, and it’s a lot better than its CSS3 and HTML5 siblings. It’s even fun to read at times. I still can’t put it up in the recommended list though, here’s the main issues I had with this book:

  • The advice will become outdated quite quickly. Heck, it’s already showing cracks.
  • The author seriously needs to consider LESS or SASS: I think the advice on how to calculate, document, and use measurements leads to bad coding style. I may write up a blog post to see if I can put my thoughts on this in a few more words.

Even though I wouldn’t recommend (buying) it, if you have the book lying around already it’ll be worth your time.

Code Complete, 2nd ed.Code Complete 2nd ed.

ISBN 978-0-7356-1967-8

I know, I know: this book is highly recommend. But it’s shit. Seriously: don’t buy it.

Even though this is not a book review page, I still feel obligated to put at least some justification behind my judgement. Here are some things I don’t like about this book:

  • It’s not DRY: says the same thing, over and over.
  • It pretends to be language-agnostic, but the advice doesn’t hold up for languages like C# and Java.
  • Bad and/or outdated advice: 150 (!) lines of code is not an appropriate length for a function.
If you see it lying around somewhere: by all means skim it. Just so you know what all the fuss is(n’t) about.

Microsoft .NET Framework 3.5- Windows Communication Foundation Training KitWCF Training Kit

ISBN: 978-0-7356-25655

There would be one reason this should be on the “recommended” list, above: it’s the only official training kit for the 70-503 exam. However, if you’re looking for a good book on WCF, I’d rather recommend the other book (see above) from O’Reilly, because the training kit is just a bit too “boring” (as you may expect from a training kit).

Windows Communication Foundation, Step-by-StepWindows Communication Foundation Step-by-Step

ISBN: 978-0-7356-4556-1

Skimming the reviews for this book, it promised to be “practical”, for “beginners”, and focussed “bit too much on (internet) web services”. Seemed like a great companion to the Programming WCF Services book, so I gave it a go.

But… it was horrible. The only good thing about this book is that it takes you on a tour of several features, having you touch most of the things in WCF. Still, it was the worst possible tour ever, amongst others because of inaccuracies, incompleteness, “obfuscated” writing style, and lack of actual explanations on why and how things work.

Learn Windows PowerShell in a Month of LunchesLearn Windows PowerShell in a Month of Lunches

ISBN: 978–1-617290213

This book is decent. Or as my former Russian colleague would say in his fabulous Russian-English accent: “Not good. Not bad. Okay.

On the bright side: the book lived entirely up to my expectations! I was expecting a simple, fairly easy, tutorial-like introduction to PowerShell. And this book delivered. Although the book itself may be a bit too easy, it still does a decent job of getting me started, which was all I was after with this book.

Pro ASP.NET 4 in C# 2010Pro ASP.NET 4 in C# 2010

ISBN: 978-1430225294

Not a bad book, on the contrary: it delivers just as promised.

In hindsight though, I shouldn’t have read this. For exams a more concise book is probably enough, and for learning tutorials and such probably work better. So: not recommended.

Pro C# 2010 and the .NET 4 PlatformPro C# 2010 and the .NET 4 Platform

ISBN: 978-1430225492

Not a bad book, on the contrary: it delivers just as promised.

In hindsight though, I shouldn’t have read this. For exams a more concise book is probably enough, and for learning tutorials and such probably work better. So: not recommended.