Skip to content

Object Thinking

Designing software as a society of objects that have behavior and responsibilities — modeling the domain by what things do, not what data they hold — the mindset behind David West's Object Thinking and responsibility-driven design.

This section reframes objects away from data-bags-with-getters and toward autonomous agents that own behavior. It runs from the core behavior-first stance through tell-don't-ask, responsibility assignment, and CRC-card modeling, then grounds it all in turning requirements into a domain model — and closes honestly with where this mindset stops paying off.

Topics

# Topic What you'll learn
01 Behavior-First Mindset Objects as behavior not data, what an object does before what it has, anemic models as an anti-pattern
02 Anthropomorphism Treating objects as little people with roles and responsibilities, the "what would this object say?" design heuristic
03 Tell, Don't Ask Sending messages instead of pulling state, encapsulation, eliminating getter-driven logic, Law of Demeter
04 Responsibility-Driven Design Assigning responsibilities, roles and collaborators, GRASP patterns, who-should-know-what
05 CRC Cards Technique Class–Responsibility–Collaborator cards, role-play modeling, discovering objects through a scenario walkthrough
06 Domain Modeling from Requirements Finding objects in the problem statement, noun/verb analysis and its limits, ubiquitous language, the model–code gap
07 When Object Thinking Fails Where OO is the wrong tool, data-oriented and functional alternatives, over-modeling, performance-driven design

How to use this section

Each topic has five depth levels — junior → middle → senior → professional — plus an interview Q&A bank and hands-on tasks. Start at your level and climb. Topics 01–05 build the mindset and its tools; 06 applies it to real requirements and 07 keeps you from over-applying it.


Part of the Engineering Thinking roadmap. To validate the designs you produce, move to Scientific & Hypothesis-Driven thinking.