Highly maintainable code is hard to produce. Object oriented code was supposed to enable us to write clean, understandable code - and yet... we're often stuck with incomprehensible code we can't get tests around. Most of this isn't good object oriented code. Good object oriented code is maintainable. Writing good object oriented code is hard. Without maintainability we can not have sustainable code, it will rot and have to be re-written. As an industry we're often given principles (DRY, SOLID, Abstraction, Code Reuse...) which sound great to have in out object oriented code. Knowing the principles is clearly not enough to enable us to write good object oriented code. We need some hands on keyboard deliberate practices that help us get there. I just happen to write my code using some technical practices that drive good object-oriented code. This talk goes into a few of technical practices I've found to have the biggest impact towards good object oriented code. Strictly applying just these practices will help the maintainability of the code. These technical practices produce simple, understandable, testable code which results in extremely maintainable code that we can work in to consistently and quickly deliver value to our customers.