Review Of “Clean Code”, by Robert C. Martin
Software Development Book Review #1, Plus How I started Reading Software Development Books
A little over a year ago, I was looking for effective ways to push forward my professional skills as a Software Developer. While at it, I ran into this brilliant blog post that discusses a learning framework for programmers. One of his three main ‘pillars’ of learning is consuming written content, and that got me to start reading programming books.
The main advantage in reading books, at least for me, is that you can do it without staring at the screen, or without typing. This is great for times when you’re on a bus, or when your mind has already melted from a day/week/month of coding, and passive learning is all you can do.
The no-screen-needed is also, of course, the main disadvantage of this type of learning. As they say, there’s a limit on how well you can learn how to swim via letter correspondence. But still, I found it generally effective, and the better books were very effective.
So, not to keep all that goodness just to myself, some thoughts and comments on the books that I’ve read lately. Starting with first one:
Clean Code, by Robert C. Martin (Uncle Bob)
What Is It About?
The book brings forward a well structured perspective on how code should look like, in order for that code to be readable and maintainable.
This perspective is presented in a series of episodes discussing and dissecting different aspects of code (functions, classes, variable names, tests…), and for each of those, you’ll get a thorough combination of rules to follow, discussion of the rule’s reasoning, and a good measure of code examples.
The book is concluded with three full “exercises” of code snippets being cleaned, step by step.
How Was It?
It was hard. It was a hard book to follow, at least for my level of expertise at the time.On top of that, all the code examples are written in Java, which made it even harder for me to follow the arguments being made.
The book’s preface does warn that it’s a hard book, so I pushed through, re-reading some sections over and over again until they sunk in. Even after getting to the bottom of an example, I still wasn’t sure I got it.
The book promises that if you go through the hard work of reading it, the reward will be that you’ll get how to write clean code. It was pretty amazing to discover that Actually worked(!)
When I finished the book it felt like I had a “clean code” module plugged-in to my head, and I was able to reason about that aspect of my code, plan ahead, and clean real code that past me or past others have wrote.
I got better since, and am still getting better, but this book literally propelled my code-cleaning progress.
What Would I Have Done Differently?
Once in a while, the book mentions a few design patterns, such as Template Method or Abstract Factory. At the time, design patterns were marked in my head as “an advanced topic”, so I did not look it up. Later, I did read GOF’s Design Patterns (more on that in a future post), and I found out that those patterns are quite easy to understand.
How To Make The Most Out Of This Book?
Don’t skim, struggle through it. It’s more than worth your time.
Where Can I find it?
Right here: (link)
Bottom line — If you are a developer of an intermediate experience or more, do read this book!
P.S. Many thanks to Shiri, who gave it to me as a present. Like the pro she is, Shiri has now borrowed my copy of the book. Well done.