Designing Object-Oriented APIs That Last
A cognitive, linguistic and social mindset: APIs as a human-to-human interaction language. Key design principles of object-oriented programming (such as encapsulation, homeostasis). Designing good APIs: a long iterative process. Designing for extensibility versus for backward compatibility. Designing for performance.