Until moving to our new house in July 2019, in my office in our flat was a small bookcase full of my programming books. I had convinced myself it was great for reference and that I’d read some of them again, but in part I probably quite vainly enjoyed having them on display (albeit quite a hidden display).

Since moving they’ve been sat in a stack in the spare bedroom and during this Coronavirus lockdown, I’ve finally caved in to my wife’s request to clear them out and put them up on eBay. However, I thought it would be a shame to let them go without any kind of record of having read them.

So below are my very short reviews of all the books I had kept, but am now parting with. By no means a definitive list of everything I read, but anything that’s already been sold was either not that good or tied to a dated technology. You’ll notice no Android Development books for example, despite that having been my career for ten years.

Keep in mind that some of these books were read seven or eight years’ ago. In fact in the first couple of instances, over twenty years’ ago. I’ve made a best guess to put them in the chronological order that I discovered or read them in, often helped by the fact that I read many of them on holidays or during my commutes, so I can visualise the pool and the type of train I was on when I look at the book covers.

Osborne’s Programmer’s Reference: HTML – A friend of my Dad gave me a carrier bag full of books because he’d heard I liked computers. In that bag was this book. I opened notepad and copied out a basic HTML page example from the book. After trying and failing to get this to work, I finally tried saving that file with a .html extension instead of .txt and when opening it in Internet Explorer, I discovered I had created a web page. I began trying different tags, learnt how to put files on geocities via ftp, some css, a little javascript and classic ASP and eventually this all became PC-Gaming.com.

Sam’s Teach Yourself C++ In 21 Days – As is probably quite common for teenage boys, I decided that when I grew up I want to make video games. Discovered GameDev.net and learnt that I needed to learn C++ if I wanted to work on the next Grand Theft Auto or Quake. I did not read this book in 21 days, I actually don’t think I got past the first ten chapters, but that was more than enough to get going. I can remember realising I could create a text-base/console multiple choice adventure game and doing so. I wish I had the source code for this as I’ve no idea what it was about!

Tricks Of The Windows Game Programming Gurus – From memory I remember Win32, GDI, Back Buffers, DirectX and DirectDraw. From this book I drifted into some OpenGL demos via NeHe, and followed the GBA tutorials at The Pern Project. I found the source code for a small pong game I wrote some years back and managed to record it running on an emulator.

Big Java: 2nd Edition – first year University programming textbook, read in 2005. I found discovering how easy it was to make UIs with Swing incredibly exciting. Of course, easy being relative to Win32.

Design Patterns: Elements of Reusable Object-Oriented Software – I was first recommended to read this during my internship, I definitely made a start on it then, but it wasn’t until a few years later when I revisited it and read it through. The content could be great, but it truly goes out of its way to make itself the driest read possible. Would love to read a modern, updated version of this book with a writing style like that of Uncle Bob.

Code Complete: 2nd Edition – Another book recommended to me by a colleague during my internship. From memory this book is full of arbitrary advice like having no more than seven variables or methods in a class and skipping vowels in variable names. It probably hasn’t aged that well.

The Pragmatic Programmer: From Journeyman to Master – My memory of this book is that it was OK. 3/5 type stuff. I read it during my first job after I finished Uni, so perhaps I would benefit from re-reading.

Clean Code – This is the book I had hoped that Code Complete would be. I first read this in 2013 while on Holiday in Antalya and have re-read it another time since. This book really helps you take what you’re doing to the next level up from just ‘getting it working.’ and is an enjoyable read. I recommend this book to everyone.

The Clean Coder – A worthwhile read, but disappointing if you are expecting something as good Clean Code. This focuses on your soft skills and how you should conduct yourself as a developer. I remember finding some of the stuff culturally objectionable and plain disagreed with other parts. Everyone is in their career for different reasons and has different goals and the ideas in this book aren’t for everyone.

Refactoring: Improving the Design of Existing Code – The concepts were good but even when I read it, it was already 14-15 years’ old and a lot of the descriptions of how you go about carrying out the refactoring was outdated by the refactoring options available in modern IDEs. There’s been a recent 20th anniversary edition and I wonder if that’s been brought up to date to take that into account.

Test-Driven Development By Example – Through a couple of simple examples, this book meticulously introduces you to the process of TDD including the mechanical steps and the thinking behind what you are doing.

Growing Object-Oriented Software, Guided By Tests – Like TDD By Example but with more real world examples including JUnit and a mocking framework. The latter half of the book is dedicated to the development of an online auction sniper bot using a clunky external web API. Much closer to the kind of thing you might do at work. It’s a ten year old book now but while it’s going to be using outdated tech, I would think it is still well worth reading for the principles.

Working Effectively With Legacy Code – Defines legacy code as code without tests and works from there as for how you can begin to tame the beast.

Effective Java: 2nd Edition – A great book full of edicts for writing good code in Java. While a lot of it is still relevant, I would love to see an equivalent Kotlin book. A more recent 3rd edition has been released that covers language features of Java 7, 8 and 9 that may be worth a look.

The Software Craftsman – Professionalism, Pragmatism, Pride – Very much on the same lines as The Pragmatic Programmer or The Clean Coder, but being released in 2015 it’s a bit more up to date. Worth reading, but my faults with it are the same as those other two books.

Essential Scrum – It’s a scrum manual. 🤷‍♂️

Clean Architecture – A much softer book than Clean Code, and the worser for it. I felt like I got more out watching some of the Uncle Bob presentations on this subject online than I did from the book.