As I noted in a previous entry, I rarely read computer books. However, there are exceptions.
People often ask me to suggest good books on object-oriented design. I struggle with this. I have a whole shelf of what I consider to be pretty crappy OO design books. Sure, each of them has a tidbit here and there, but on the whole I wasted a lot of money building a collection of books that sits there gathering dust.
The one book I’ve consistently recommended is David Taylor’s “Object Technology: A Manager’s Guide”. This is an absolute must-read for anyone hoping for success with OO design or programming. Yes, I know it has the dread word “manager” in the title, but don’t let that scare you off. Go buy and read the book. It is not only a delightful read (which is saying a lot for a computer book), but it is full of great ideas and information and ways of thinking.
I just got a new book that I expect will be a favorite. I’m only a bit into it, but I’m so enthused that I’m blogging now rather than waiting for the (sure to be climactic) end of the book.
The book is Object Thinking by David West. Many years ago Mr. West taught college here in Minnesota, and we brought him in to do a multi-day OO design class at the consulting company where I worked. While all of us in the class agreed that his ideas were a bit flakey, the class was absolutely full of great ideas, concepts and approaches.
This book promises to be the same as that class. Mr. West doesn’t pull any punches. He really believes in what he’s presenting, and presents it in a clear and easy to read manner. Sure, the ideas push the limits of what most people consider practical, but they are truly great ideas and deserve serious consideration.
The book reflects a lot of what I talk about in my speaking around the world. This isn’t surprising, since that class years ago certainly influenced my thinking in some very fundamental ways.
This includes ideas like anthropomorphism – where you endow objects with human-like qualities. I do this all the time in my work, and those that have heard me speak know that I do it all the time with objects, computers, networks and all sorts of things. There is tremendous value in giving inanimate entities a voice of their own, as long as you listen to what they say!
And this is the thing. My last statement there sounds flakey. Heck, it is flakey. Mr. West is full of this sort of thing. Don’t let it put you off. I mean it. I’m not much for flakey stuff, but it turns out that some of the flakey-sounding ideas he puts forward are directly useful – at least of you want to do actual object-oriented design.
On a bit of a tangent, Mr. West also tends to use the English language well. This includes using complex words and expressing complex concepts. I love this stuff. My absolute favorite author is Neal Stephenson, mostly because of his absolute mastery of language and imagery. Most computer books (including mine) get edited so they’ll be easier to translate to various other human languages – thus gaining a larger market. While that makes economic sense, it is a truly unfortunate thing, because it guts our ability to use deep language constructs and vocabulary to accurately and viscerally express the concepts we’re discussing.
I am always saying that objects are about behavior, not data. Mr. West has written a book that’s all about understanding that fundamental truth. Get this idea, internalize it, become one with it and you’ll be well on your way to really doing OO design.