- Save 10% on selected children’s books, compliments of Amazon Family Promotion exclusive for Prime members .
Object Thinking (Developer Reference) (DV-Microsoft Professional) Paperback – 11 Feb 2004
|New from||Used from|
- Choose from over 13,000 locations across the UK
- Prime members get unlimited deliveries at no additional cost
- Find your preferred location and add it to your address book
- Dispatch to this address when you check out
Special offers and product promotions
Frequently bought together
Customers who bought this item also bought
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
If you are a seller for this product, would you like to suggest updates through seller support?
About the Author
Dave West would like to describe himself as sheik geek. Unfortunately no one else would describe him in that way. They would say he is a professional Englishman who likes to talk about software development best practices with the passion and energy of an evangelical preacher. Recently Dave has moved to Ivar Jacobson Consulting, where he runs the Americas and can combine his desire to talk about software development and spread the word on rugby and football, and argue that cricket is more exciting that baseball. Before running the Americas for Ivar Jacobson Consulting, Dave worked for a number of years at Rational Software (now a part of IBM). Dave held many positions at Rational and then IBM, including Product Manager for RUP where he introduced the idea of process plug-ins and agility to RUP. Dave still laments the days when he use to sit in a cube and write software in the city of London. This is where he believes he cut his teeth writing big insurance systems with nothing but a green screen and a process flow chart.
Dave can be contacted at firstname.lastname@example.org, and if he is not with customers or drinking warm beer with his friends in Boston, he will email you back.
What other items do customers buy after viewing this item?
Top customer reviews
If you really want to learn about object thinking, and most importantly how to apply it, then I'd recommend starting with the books of Robert C. Martin and Craig Larman. "Applying UML And Patterns" and "Agile Software Development" are both superb 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.
According to West, OOP can reap in order-of-magnitude improvements over traditional structured design methods. However, just jotting your code into classes doesn't make it "real OOP". It takes a very special mindset - "object thinking" - to utilize OOP effectively. We are given guidance as to how to do object thinking. These come in the form of metaphors. One of them being the "object as a person", which amongst other things state:
"Technology exists that would allow me to make hardware connections to your brain. I could then build a control box that would allow me to raise your hand whenever I pressed a button. Eventually this same technology might allow me to make you perform a complicated dance. Again, as a person, you might not like this, and neither would an object if it were a person."
And this is somewhat the most concrete the book ever gets. This is very hard to apply in practice. And it is all a bit weird to me. See actually, I'm a bit of an object thinker myself to begin with. And the book cites and gives thorough backgrounds on a number of very esteemed people in the world of computer science. But I think its the indistinctive style of writing that gets to me.
I'm being told to do "object thinking" but there are very few concrete techniques (other than CRC cards) to show for. I'm brought back to ancient Greece, to Socrates and even advice from a Taoist butcher about carving meat from a bone, only in the places where there are no meat. Droning on and on. It tires me and it annoys me. Because I really am in agreement with much of what is being said, but the 330 odd pages are strenuous on the mind. To focus. To remember and to distil what is actually being said. Its unavoidable for the mind to drift and circle in on the word "snake oil" - an expression that originally referred to fraudulent health products or unproven medicine, but which today has come to refer to any product with questionable or unverifiable quality or benefit. When there is so little concrete. Not a single code example, and when the argumentation so vague, it is hard not to think of snake oil.
At other times, the author is just on a completely different level of conscience than I. For example, p.270 asserts that "Ensuring that it's possible for two objects to exchange messages is a matter of visibility: the objects have to be able to see each other." This is not necessarily true e.g. queues in a distributed systems or a "Mediator" design pattern. Heck, anyone who's ever seen a Unix command pipe knows how silly the claim is. He also asserts (p.253) that over-riding a superclass method causes "cognitive dissonance.". There is a thin line between reality and psycho-babble.
To be fair, the later chapters become more concrete, addressing the "words to think with" (delegation, encapsulation, polymorphism, component, framework, methods, variable and such). It is quite clear where Kent Beck 3 years later found inspiration for his book "implementation patterns".
I was left feeling I needed more guidance on how to be a better object thinker. More examples from the real world. Focus the writing and cut the size in half! Are you interested in philosophy as it applies to software development, then this book may be for you. If you are ruthlessly pragmatic, maybe think about steering clear of this book. Irregardless of your background, expect to read the book a couple of times before things have properly sunk in.
If you are interested in code quality and readability I advice you to visit https://github.com/kbilsted/CodeQualityAndReadability here the language is easily gulped down, with plenty of real-world examples.
To help future readers, here is an extract of advice to be found in the book
* You should write your applications as a a bunch of objects whose intercommunication results in the emergent behaviour of your application. Inevitably this will save complexity and enrich your model and implementation.
* Use single inheritance hierarchies.
* Subclasses must obey the Liskov substitution principle.
* Everything is an object.
* Simulation of a problem domain drives object discovery and definition.
* Objects must be composable.
* Distributed cooperation and communication must replace hierarchical centralized control as an organizational paradigm.
* Let objects assume responsibility for tasks that are wholly or completely delegated to other objects in cases in which the responsibility reflects natural communication patterns in the domain.
* Delegate responsibilities to get a better distribution and increase reusability.
* Use anthropomorphising and foreshadowing to determine whether an object should assume a given responsibility.
* Responsibilities should be distributed among the community of objects in a balanced manner.
* Always state responsibilities in an active voice describing a service to be performed.
* Avoid responsibilities that are characteristic specific, that focus on providing a potential user with the value of a single characteristic of the object.
* Create proxies for objects outside your domain that are sources of information required by objects within the domain.
I think this book should be read by anyone connected with software development, management included. Even if you don't agree with the author's rationale you'll have a much better idea of how an increasingly large part of the developer community is thinking.
Would you like to see more reviews about this item?
Most recent customer reviews
Look for similar items by category
- Books > Computing & Internet > Computer Science > Information Systems
- Books > Computing & Internet > Digital Lifestyle > Online Shopping > Amazon
- Books > Computing & Internet > Networking & Security > Network Topics
- Books > Computing & Internet > Programming > Languages & Tools
- Books > Computing & Internet > Programming > Software Design, Testing & Engineering > Design Patterns
- Books > Computing & Internet > Programming > Software Design, Testing & Engineering > Functional Programming
- Books > Computing & Internet > Programming > Software Design, Testing & Engineering > Software Architecture