"""And anyway, if it's about messages and not objects, what difference does that really make?"""
It changes how you think about it. The whole point of OO is to bind state to behaviour so you can ignore state and work solely in terms of behaviour. If you think in messages, you're thinking about behaviour - the sender's needs. If you think in objects, you're going to end up thinking too much in terms of implementation - the recipient's needs. The first mindset gives rise to dynamic typing, polymorphism, delegation, and the whole "tell, don't ask" philosophy. The second encourages the reverse. To answer by another question, put yourself in the program's position and ask: "Who's in charge of this cockamamie system anyway? The boss? Or the workers?"