Skip to main content
CF

Practical Object-Oriented Design - Course I

11h 49m 53s
English
Paid
Updated September 2026

Practical Object-Oriented Design - Course I is a 66-lesson 11 hours 49 minutes self-paced course by Sandi Metz. Sandi Metz's Practical Object-Oriented Design course teaches OOD by having you write code, then rewrite it as requirements shift — the same pressure that makes real codebases either pleasant or miserable to work in.

Course facts

Lessons
66
Duration
11 hours 49 minutes
Level
All levels
Language
English
Updated
2026-09-11
Instructor
Sandi Metz
Price
Premium

Sandi Metz's Practical Object-Oriented Design course teaches OOD by having you write code, then rewrite it as requirements shift — the same pressure that makes real codebases either pleasant or miserable to work in.

How it works

Self-paced video lessons pair with hands-on assignments, so instead of memorizing principles you build an instinct for thinking in objects and adapting a design as requirements change underneath it.

What you take away

The course covers core object-oriented design principles aimed at lowering the cost of adding new features and keeping existing systems maintainable, plus refactoring techniques and testing practices woven into the same workflow — useful whether you're new to OOD or already frustrated by a codebase that's become hard to change.

Who teaches Practical Object-Oriented Design - Course I? Sandi Metz

Sandi Metz thumbnail

Sandi Metz is a US software engineer and the author of Practical Object-Oriented Design in Ruby (POODR) and 99 Bottles of OOP — two of the most influential modern books on object-oriented design. Her teaching has shaped how a generation of working developers think about the craft of writing maintainable code.

Her CourseFlix listing carries Practical Object-Oriented Design — Course I. Material is paid and aimed at engineers ready to study software design at the level of code that survives years of change.

What lessons are included in Practical Object-Oriented Design - Course I?

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 66 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: B. Watch: Writing the Tests
All Course Lessons (66)
#Lesson TitleDurationAccess
1
B. Watch: Writing the Tests Demo
10:12
2
A. Watch: Listening to Change
04:37
3
B. Watch: Starting With the Open/Closed Principle
04:18
4
C. Watch: Recognizing Code Smells
18:47
5
D. Watch: Identifying the Best Point of Attack
06:24
6
E. Watch: Refactoring Systematically
05:41
7
Watch: Get a Whiff of This
38:15
8
A. Watch: Following the Flocking Rules
06:20
9
B. Watch: Converging on Abstractions
12:38
10
B. Watch: Replacing Difference With Sameness
07:12
11
C. Watch: Equivocating About Names
07:01
12
D. Watch: Deriving Names From Responsibilities
06:27
13
E. Watch: Choosing Meaningful Defaults
07:50
14
F. Watch: Seeking Stable Landing Points
08:22
15
G. Watch: Obeying the Liskov Substitution Principle
09:52
16
H. Watch: Taking Bigger Steps
05:15
17
I. Watch: Discovering Deeper Abstractions
07:29
18
J. Watch: Depending on Abstractions
04:24
19
A. Watch: Selecting the Target Code Smell
12:44
20
B. Watch: Extracting Classes
12:42
21
A. Watch: Appreciating Immutability
03:48
22
B. Watch: Assuming Fast Enough
09:08
23
A. Watch: Creating BottleNumbers
05:09
24
B. Watch: Recognizing Liskov Violations
06:41
25
Watch: All the Little Things
38:47
26
A. Watch: Consolidating Data Clumps
08:06
27
A. Watch: Making Sense of Conditionals
10:13
28
B. Watch: Replacing Conditionals with Polymorphism
14:13
29
A. Watch: Transitioning Between Types
15:04
30
B. Watch: Making the Easy Change
05:51
31
C. Watch: Defending the Domain
04:37
32
A. Watch: Contrasting the Concrete Factory with Shameless Green
04:15
33
B. Watch: Fathoming Factories
07:52
34
C. Watch: Opening the Factory
13:26
35
D. Watch: Supporting Arbitrary Class Names
08:14
36
E. Watch: Dispersing the Choosing Logic
05:48
37
F. Watch: Self-registering Candidates
10:07
38
G. Watch: Auto-registering Candidates
05:35
39
A. Watch: Converting Numbers to BottleNumbers
11:42
40
Watch: Go Ahead, Make A Mess
37:58
41
A. Watch: Appreciating the Mechanical Process
12:22
42
B. Watch: Clarifying Responsibilities with Pseudocode
04:40
43
C. Watch: Extracting the Verse
03:17
44
D. Watch: Coding by Wishful Thinking
06:25
45
E. Watch: Inverting Dependencies
09:18
46
A. Watch: Obeying the Law of Demeter
09:53
47
B. Watch: Identifying What the Verse Method Wants
12:15
48
C. Watch: Pushing Object Creation to the Edge
09:07
49
A. Watch: Choosing Which Units to Test
12:23
50
B. Watch: Reorganizing Tests
06:13
51
C. Watch: Seeking Context Independence
17:59
52
D. Watch: Communicating With the Future
15:30
53
A. Watch: Finding Shameless Green (up to 1:00)
03:39
54
C. Watch: Finding Shameless Green (1:00 to end)
03:39
55
A. Watch: Handling a New Requirement (up to 2:54)
11:55
56
C. Watch: Handling a New Requirement (2:54 to end)
11:55
57
A. Watch: Using Inheritance
08:39
58
A. Watch: Understanding Composition (up to 9:45)
15:28
59
C. Watch: Understanding Composition (9:45 to 12:17)
15:28
60
E. Watch: Understanding Composition (12:17 to end)
15:28
61
A. Watch: Seeking Abstractions (up to 1:05)
13:08
62
C. Watch: Seeking Abstractions (1:05 to the end)
13:08
63
A. Watch: Loosening Coupling
08:04
64
A. Watch: One Final Requirement (up to 1:05)
05:31
65
C. Watch: One Final Requirement (1:05 to end)
05:31
66
Watch: Nothing is Something
35:54
Unlock unlimited learning

Get instant access to all 65 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription

Books

Read Book Practical Object-Oriented Design - Course I

#TitleTypeOpen
1C1. Download 99 Bottles of OOP book (Ruby) PDF
2C2. Download 99 Bottles of OOP book (JS) PDF
3C3. Download 99 Bottles of OOP book (PHP) PDF
4C4.Download 99 Bottles of OOP book (Python) PDF

What courses are similar to Practical Object-Oriented Design - Course I?

Frequently asked questions

What prior knowledge is required before taking this course?
This course is suitable for both beginners and experienced developers. While no specific prior knowledge of object-oriented programming is required, familiarity with basic programming concepts will be beneficial. The course is designed to gradually introduce and build upon object-oriented design principles, making it accessible to those who are new to the subject as well as those looking to deepen their understanding.
What projects will I build during the course?
Throughout the course, students engage in hands-on practical assignments that involve writing and improving code to better understand object-oriented design principles. The course includes exercises such as refactoring existing code and implementing design patterns, which help in understanding principles like the Open/Closed Principle and Liskov Substitution Principle.
Who is the target audience for this course?
The course is aimed at both beginners and experienced developers who are interested in enhancing their skills in object-oriented programming. It is particularly beneficial for those who wish to reduce development costs, simplify system maintenance, and create more adaptable and maintainable code.
How does this course compare to other object-oriented design courses?
This course uniquely combines video lessons and practical assignments to teach object-oriented design principles. It emphasizes writing code and improving solutions to adapt to changing requirements, unlike some courses that may focus solely on theoretical concepts. Lessons cover a wide range of topics from refactoring techniques to testing integration, providing a comprehensive understanding of OOD.
What specific tools or platforms will be used in the course?
The course does not focus on specific tools or platforms but rather on the foundational principles of object-oriented design. Students will engage in exercises like recognizing code smells, refactoring systematically, and following principles such as the Law of Demeter and Liskov Substitution Principle. These concepts are applicable across various programming languages and environments.
What topics are not covered in this course?
While the course provides a robust understanding of object-oriented design and related principles, it does not cover advanced programming topics such as concurrency, database management, or specific front-end or back-end frameworks. It focuses on design principles and their application to improve code quality and adaptability.
What is the time commitment required to complete the course?
The course consists of 66 lessons and is designed for self-paced learning. The time commitment will vary based on individual learning speeds, but students should expect to spend several weeks engaging with video lessons and completing practical assignments to fully grasp the object-oriented design principles covered.