So, how do you become a good OO programmer? I mean, not just someone who knows about object, classes, encapsulation, polymorphism and all the yadda-yadda, but a professional who really forgets about the procedural paradigm and writes network of cooperating objects the way they’re supposed to be?
Literature, at least the one I know of, doesn’t help much: of course there are countless books on OOP and shelves full of pattern stuff, but still I felt there was a hyatus between “academic” books, written for people with a solid CS background (being myself a lawyer, I don’t quite qualify), and “practicioner” stuff such as “Teach Yourself Java In 48 Hours, You Dumbass Web Developer”.
The GoF book, for instance, is a typical example of an academic book that scares people away, especially in these days where C++ and Smalltalk aren’t quite mainstream: what I was looking for was a title that I could give to one of my junior staff members to let them know why I am so picky when it comes to pruning unneccessary ifs, getting rid of extends altogether and reduce accessors to a bare minimum.
A Slashdot review was incredibly timely: I was at Apachecon, and the following day I was lucky enough to win an Apress book raffle: the booth people were so kind to send me a copy of this book, since they didn’t have it on site.
Now, the book. First of all, it could have used a better title: patterns are there indeed, but this book is really about writing robust, maintainable and solid object oriented software: Chapter 1 and 2 are a collection of pearls of wisdom pervaded with reality checks. If you are either a procedural programmer wishing to go the OO way or even an OO programmer feeling like being built on sand, this book is definitely for you: the first 80 pages will be worth their weight in gold. Oh, and of course you’ll get patterns as well, lots of them actually, explained in a clear and practical way, by looking at real code (even though the same applies to a number of other books). After reading Holub on Patterns, you will be able to make much more sense of GoF.
If you’re a seasoned programmer, on the other hand, don’t bother. But in that case there is a good chance you’re leading a team of people: passing this book on to your juniors can make the difference. I’m confident it will for me, and I would really appreciate other suggestions for similar titles.