This document discusses design patterns and how they can be used to improve object-oriented programming. It notes that design patterns are based on object-oriented design principles like abstraction, encapsulation, inheritance, and polymorphism. It also quotes Grady Booch saying that well-structured object-oriented systems use design patterns extensively and that focusing on common object collaborations yields architectures that are smaller, simpler and more understandable. The document recommends learning and applying design patterns to improve programming skills.