This is an excellent book on object-orientated programming, but it is slightly strange for those used to more relentlessly practical programming books.
The aim of the book is to teach object thinking, currently the best paradigm for programming and a necessary requirement for agile methods such as extreme programming. It is structured like an academic text; starting off with the history and philosophy of object thinking and OO language design before moving on to more practical ideas. This is a good thing as the way object orientation (indeed programming in general) is taught in most books is flawed. The book makes the point very well that in order to program well, one must think in real object terms, think hermeneutically, rather than formally and program as a computer would. Giving a historico-philosophical basis for these ideas allows one to see how the ideas have developed and appreciate the value of them, which have become diluted by formal software-engineering methodology.
The point of object thinking is to make the reader a better programmer. What may be controversial is that the author is suggesting that rather than endless experience and adhering to formal methodology, the best way of becoming a better programmer, as is the best way to become a better artist/crafts-person, is to learn the best way of thinking about what you want to do. Hermeneutic thinking (seeing the world as unpredictable, biological and emergent) is the way to do this. Controversial, perhaps, but this is a historically and philosophically solid idea, and far better than endless tracts that preach the only way to improve in a subject is to think in rigid, formal, software-engineering terms and accrue endless experience.
One small thing that slightly worries me about this book is the author's love of Smalltalk. As a contemporary programmer I have not used Smalltalk; I am prepared to believe it is a good language, but would be amazed if I ever used it. Indeed, the author seems a touch down on Java, C++ and (surprisingly for a Microsoft Press book) C#. VB is hardly mentioned, but when it is there are positive comments. This does not really matter, as it takes very little imagination to apply the thinking patterns the author describes to the more modern languages one uses. David West may like Smalltalk, but his ideas are completely applicable to any decent OO language (C# and VB.NET included). Do not let this put you off, it is the ideas that are important, not the language.
Overall, an excellent book that should be required reading for any modern software course. Read it, digest it, become a better programmer.