Book Notes: Object Thinking by David West
One would think from the title that the book was about object-oriented programming, and it is for the most part. What the cover and title fails to mention, and the back cover only hints at, is that this book is really and apologetic for OOP in an Extreme Programming/Agile Programming context and mindset. When I figured this out (it only takes a few pages) I was a little disappointed (mostly just because I was expecting something else), but I figured I should keep reading anyway. And I am glad I did.
The main idea is that current programming practice (that is, what goes on in real world situations, as well as among some computer science theorists) is inefficient at best because true object-oriented concepts (“object thinking”) rarely occurs. The world of programming would be significantly better off if it eschewed the idea of heavy documentation and upfront planning with bad object theory, and would embrace proper object thinking along with agile methodologies.
He starts by taking the reader through a short history of the historical circumstances, philosophies, and politics that brought us to where we are today. He then criticizes current programming practice with several significant (and some probably valid) points. First, just because someone programs in an OO language does not mean that he understands OO thinking. Object-orientation is about mindset, not about implementation language. Second, good programming is done not by strict adherence to process, method, and upfront planning; good programming is about getting people in the code, and helping them become better programmers/thinkers by helping them really understand good object thinking. Third, development is generally best done in an iterative manner. Rather than planning a super mega huge project from the beginning, build that project in small pieces, iteratively working up to the whole.
If someone wants to read this book, he should be aware that it is largely theory-centric. Theory, theory, theory. The reader will be hard pressed to find code samples. But that is not the point of the book. The author wants the reader to understand how programming got where it is, how it can get out of its current situation through a change in thinking, and gives numerous examples and stories along the way. If you want theory, this is a good book to read.
This is a fine volume and I recommend reading it, but it is not perfect. The subject matter of the book is so slanted toward Agile Programming methodologies that I find it hard to think that all sides were presented equally. Though, admittedly, that is not the point of the book. But, because it was as good as it was, on a scale of 1 to 5, I would give it a 3.5.