This document discusses SOLID principles for object oriented design. It begins with an introduction of the author and overview of topics to be covered. It then reviews basic OOP concepts and code smells to refactor. The main section defines the five SOLID principles: single responsibility, open/closed, Liskov substitution, interface segregation and dependency inversion. For each, it provides a definition, examples of conforming and non-conforming code, and discusses how it improves design. It closes with other agile/OOP principles and inviting questions.