Practical Object-Oriented Design Courses

Sandi Metz teaches three extremely practical object-oriented design (POOD) courses.

POOD-I is designed for all levels of experience, from rank beginner to long-time OO practitioner.

POOD-II is for groups who have completed POOD-I and want more.

POOD-I Virtual ($)

The POOD-I Virtual course is for individuals working at their own pace, in their own time. Video lectures paired with hands-on exercises teach engineers to think in objects by writing code. The exercises require students to progressively enhance their code to meet ever-changing requirements.

In POOD-I, students learn to leverage the principles of object-oriented design (OOD) to minimize the costs of creating new software and mitigate the pain of maintaining existing code.  If you prefer to write applications that are pleasant to work on and easy to maintain, or if you desperately need to fix applications that have escaped your control, this course is for you.

Because good OOD integrates testing into refactoring, students learn refactoring techniques that will speed current development, and testing skills that will reduce bugs in future code.

Some of the course content has been immortalized in the 99 Bottles of OOP book (which is included), but there’s so much more. See the POOD-I outline for more details.

POOD-I Virtual for Groups ($$$)

The virtual POOD-I course is available privately for organizations by appointment. This course offers the same video lectures and coding exercises as the individual POOD-I course with the addition of:

  • Daily office hours with Sandi, plus a final wrap-up meeting on the last day

  • Small-group exercises and discussions designed to facilitate diverse working styles

POOD-I Virtual for Groups is generally taught over four days. Email human@sandimetz.com for pricing.

A course coordinator helps with all courses, and occasionally, mystery co-instructors help with larger classes. Sandi very occasionally teaches in-person POOD-I classes, so please inquire if this option is of interest.

POOD-II Onsite for Groups ($$$$)

The POOD-II course is available only in person, onsite at your location. If your team has already taken POOD-I and you’d like more, please ask about it.

POOD-II is a higher-level design course available only to students who have completed POOD-I. Whereas POOD-I is concerned with finding and creating individual objects, POOD-II focuses on understanding and designing interactions between groups of objects. Its primary interest is in the architectural layers of well-designed code.

Students in POOD-II classes work together in small groups to learn the tools of design. This class leans more toward group discussion and design drawings than writing code. Students create class diagrams in order to understand the relationships between existing objects, and they construct sequence diagrams to communicate proposed designs.

General Course Information

Sandi’s teaching style is shaped by research on how we best learn, and the experience of attending these courses has been likened to “going on an incredibly useful coding vacation.” They are both worthwhile and fun.

Students from a wide range of backgrounds have benefited from these courses, from relative newcomers to seasoned veterans.  It's helpful to have a smattering of Ruby and/or some exposure to object-oriented programming, but this is not required.  The courses adapt to students, challenging some and guiding others. 

Run, with scissors if you must, to the next offering of this course. Sandi provides a very strong dive into the pride and prejudice of object oriented design that cannot be missed.
— Data Curation
Stop considering. If you program OO then this course is a no brainer.
— PhishMe
Run, don’t walk, and throw money at Sandi now! But seriously, it’s a transformative experience for any developer, and can give teams the tools to trust one another.
— Stanford University
You should absolutely take this course. Set aside your preconceptions and skepticism and be open to the ideas in this course: They will dramatically improve the way you program. This has easily been the most valuable programming training experience I’ve had in the last 10 years.
— University of Minnesota
You learn how to write code that does what it needs to do without being over-engineered. You practice how to make small, effective changes in real world ways. This is what “Agile Methodology” was meant to do.
— Procore
This has been fantastic. I was thrilled that we could immediately start coding. I love this class.
— Careerbuilder
Without a doubt this is the best, most useful course I’ve taken. If you write software, you need to take this class!
— General Assembly