What does it mean to write simple object-oriented design?
Learn how to break large units of code into smaller pieces, move new complexity away from existing code, and write good documentation.
We have to keep objects consistent, and implement effective validation mechanisms that ensure consistency at all times.
It's all about reducing the impact of coupling, understanding dependency directions, and increasing flexibility with dependency injection.
Understand what abstractions are, what constitutes a good abstraction, and how to keep them simple.
Decouple your infrastructure from your domain code, how to evolve infrastructure without having a large impact.
Learn how to design modules that provide complex features through simple interfaces, how to reduce the dependency among modules.
We end up talking about how to be pragmatic, why we should never stop refactoring and learning more about object-oriented design.