In this presentation recorded during QCon London 2008, Udi Dahan, The Software Simplist as he calls himself, explains why sometimes it is not enough to apply good OOP and patterns lessons. He introduces a new principle: make roles explicit.
Watch: Making Roles Explicit (1h)
The entire presentation is about the need to make explicit what one knows about the system. Dahan uses a concrete code example which has some weak points when it comes to flexibility, and demonstrates what it means to make roles explicit and how to do that.
He also responds to questions from the audience during the last third of the session.