Someone drew my attention a “leaving Ruby for Haskell” rant from a few years ago. I thought I’d reprint my reply here.
A friend asked me to name my top three object-oriented programming books.
I found this a little bit difficult to answer. It wasn’t a matter of narrowing down a large field. Rather, at first I wasn’t sure if I could come up with all of three books worth recommending.
This is mostly my fault. I have shelves full of books on OOP, but I’ve only gotten around to reading a subset of them. There are probably a few gems in that collection and I just don’t know it yet.
But another factor is that there just aren’t a lot of good OOP books out there. Many of them have good ideas, but are written in a style that’s drier than Death Valley. Others come from the formalist school of object-oriented design, which co-opted the terminology of object orientation while denying the spirit.
Here’s the list I ended up sending him:
- Object Thinking, by David West
- Growing Object Oriented Software, Guided by Tests, by Freeman and Price
- Practical Object Oriented Design in Ruby, by Sandi Metz
(Those are Amazon affiliate links; using them will send me beer money.)
These are all fantastic books that I can recommend unreservedly. Unfortunately, I don’t think any of them really qualifies as a on true 101-level primer on OOP thinking. If you can recommend an intro-level textbook on OOP which is neither a) a snoozer; or b) hung up on tangential stuff like types and inheritance, please pipe up in the comments.
EDIT: there is another book that I considered adding to this list: Object Design, by Rebecca Wirfs-Brock. I actually quote this book more often than any of the others on my list. I only left it off because (please forgive me Rebecca, you know I’m a huge fan!) it’s a tad on the dry side. I know a few people who had difficulty getting through it. If you’re like me, and you can get through a book that has a lot of lists of terms that are then broken down into further lists of terms, by all means read this book! You will be the better OO designer for it.
It’s been a busy few weeks since I last wrote. Winter has been flickering on and off like an aging fluorescent light bulb. The daffodils have opted to declare an early Spring.
(Pictured: Our escape-artist chickens inspecting the daffodils while taking an unsanctioned leave from their run.)
I realized today that I used to put a lot more quotes from the books I was reading in these newsletters. It’s not that I stopped reading books entirely. But most of my reading lately has been in the genre of business and marketing, and there haven’t been a lot of excerpts that seemed appropriate for this context.