Put open source to work
July 16–17, 2018: Training & Tutorials
July 18–19, 2018: Conference
Portland, OR

Polly want a message

Sandi Metz (TorqueForge)
4:15pm4:55pm Thursday, July 19, 2018
Software methodologies
Location: C123/124
Level: Beginner
Average rating: *****
(5.00, 3 ratings)

Who is this presentation for?

  • Programmers

Prerequisite knowledge

  • A working knowledge of any programming language
  • Familiarity with an object-oriented language (useful but not required)

What you'll learn

  • Learn how to think in objects, focusing on the centrality of messages, the power of polymorphism, the benefits of loose coupling, and the advantages of factories


Object-oriented languages have an opinion about how best to model the world. Object-oriented programming offers unique affordances—that is, object-oriented languages want to be used in specific ways. When your coding style aligns with object-oriented programming’s natural inclinations, it’s easy to create intuitive, expressive, and maintainable apps. Woe be unto you, however, if your app’s code labors at cross purposes with object-oriented programming’s expectations. This clash of viewpoints leads to confusing, unmaintainable applications that are filled with recurring conditionals, impenetrable methods, and colossal classes.

Sandi Metz explains what object-oriented programming wants, using straightforward examples to indoctrinate you into object-oriented thinking. You’ll leave raring to write loosely coupled, message-centric, small-object object-oriented code that isolates conditionals and leans on polymorphism. Once you understand object-oriented programming’s natural affordances, everything becomes easy. Your code will never be the same.

Photo of Sandi Metz

Sandi Metz


Sandi Metz writes, consults, and teaches about object-oriented design and is the author of Practical Object-Oriented Design in Ruby and 99 Bottles of OOP. Sandy believes in simple code and straightforward explanations. She prefers working software, practical solutions, and lengthy bicycle trips (not necessarily in that order).