Book Reviews - Part 1 of (n)

Series introduction

In the past year I was fortunate enough to have the free time to catch up on a lot of reading and online courses on a lot of topics, software engineering and otherwise.

Every post in this series will cover three books. I'll try to keep the topics of the books somewhat diverse per post.

In terms of ratings, instead of the classic 1-5 scale I'll use the Not Recommended-Recommended-Highly Recommended scale. Since I did my own research on the quality of the books prior to reading them, there's an inherent selection bias regarding their quality, which means that on a 1-5 scale I'd probably end up never using anything below a 3 -- and even giving a 3 would be somewhat rare! This particular post is going to be somewhat uniform when it comes to ratings, I just had to start with books that I really, really liked.

Designing Data-Intensive Applications by Martin Kleppmann

I was somewhat hesitant to pick up this book despite its stellar reviews -- it's a long one with a lot of depth on topics that at first sight seemed kind of specific to engineers working on Google/Facebook/Netflix-scale projects. While I wasn't entirely wrong on the scale of projects the book caters to, boy was I wrong about how relevant and useful I'd find the information.

Designing Data-Intensive Applications deals with 3 major topics:

  • Reliability
  • Scalability
  • Maintainability

Every one of these topics is not only treated with clear, in-depth explanations and trade-off analyses of the solutions it presents, the book also points you towards other resources and research papers in case you want even more depth.

Out of all the books I've read over the past year this was the only one that just kept teaching me new things. I genuinely believe that any engineer with a few years of experience beneath their belt would benefit greatly from having read this book. It's a decently long read coming in at ~600 pages, but unless you're one of the people writing the research papers that this book's referencing, reading it will be worth the time investment. Seriously, just read it.

My rating: Highly recommended

Buy it here: oreilly.com

Refactoring UI by Adam Wathan & Steve Schoger

Getting better at web design is not easy even if you're someone that builds web experiences from scratch regularly. There's also a lack of up-to-date, organized resources on design -- or if there's any I haven't found it yet. That leaves most developers with two options: be clueless about UX and UI or be clueless about UX and UI while you mimic websites that look good.

Now Refactoring UI doesn't promise to be the Holy Bible of web design (and it isn't), but what it does promise is that it'll give developers clear, actionable advice on web design, and that it does.

The basic structure of the book is basically this: it shows you a common design problem, tells you why it's bad, and it provides you with a much nicer looking solution. There's a lot of pictures, there's a lot of actionable advice.

I really, really recommend this book to my fellow visual design-challenged developers. Even if you won't become a one-man UX team, you'll at least be able to recognize a lot of common design errors that you'd otherwise potentially commit yourself. The book is also a quick read too: at ~200 pages with a lot of illustrations this is a light afternoon read that you can always return to if you need a reference.

My rating: Highly Recommended

Buy it here: refactoringui.com

Functional Programming in C# (2nd Edition) by Enrico Buonanno

While I'm decently experienced in FP concepts (more on that in another post?) I decided to give this book a go, because hey, learning more practical applications of FP is always helpful.

This book is a very practical overview of FP in C# (no C# knowledge should be required though), covering the following topics among others:

  • Functional purity
  • Functional composition
  • Currying
  • Partial application of functions
  • Monads (oh no, the m-word!)
  • Event sourcing
  • Laziness

If you're a developer whose keen on learning practical Functional Programming preferably through not-JavaScript, this book is for you. If you're not a C# developer you might also come away with a newfound appreciation for the C# language, so that's a plus! Also, if you're looking to apply these concepts in your next project, make sure you check out language-ext, which is a really neat library that implements most of the FP basic types you'll ever need.

My rating: Highly recommended

Buy it here: manning.com

Next articleBook Reviews - Software design edition