CRC Cards — Class-Responsibility-Collaboration Cards — are a low-tech object-oriented design technique by Ward Cunningham and Kent Beck that puts one class on each index card, with its responsibilities on the left and its collaborators on the right. Teams walk through scenarios by role-playing the cards and so discover and refine classes before writing code.

CRC-Cards

Details
Full Name

Class-Responsibility-Collaboration Cards

Also known as

CRC Cards, CRC Card Method, Class-Responsibility-Collaborator Cards

Core Concepts:

Class

The name of the class or object being modeled — one index card per class

Responsibilities

What the class knows (data it holds) and what it does (behavior it provides) — listed on the left side of the card

Collaborators

Other classes this class depends on to fulfill its responsibilities — listed on the right side of the card

Index cards as design medium

Deliberately low-tech: physical cards keep design discussions lightweight, encourage discarding and rethinking, and prevent over-engineering

Role-playing scenarios

Team members physically hold cards and walk through scenarios, simulating message passing between objects to validate design

Collaborative brainstorming

Encourages cross-functional participation; everyone can contribute without needing deep technical background

Finding classes

Start with nouns in the problem description; candidate classes are discovered, not prescribed

Iterative refinement

Cards are cheap to discard — designs are evolved through multiple rounds of role-playing and critique

Key Proponents

Ward Cunningham, Kent Beck ("A Laboratory For Teaching Object-Oriented Thinking", OOPSLA 1989)

When to Use:

  • Early OO design phases — discovering classes, responsibilities, and relationships before writing code

  • Collaborative design sessions where multiple stakeholders or developers shape the domain model

  • Teaching object-oriented thinking by making abstract concepts tangible and interactive

  • Validating design with LLMs by describing cards and role-playing request flows

  • Lightweight architecture exploration before committing to a UML tool or full model

  • GRASP - Patterns for assigning responsibilities to classes in OO design

  • GoF Design Patterns - Design patterns that can emerge from CRC-Card sessions

  • Domain-Driven Design - CRC Cards support ubiquitous language and entity discovery

Current Status:

  • The definition is intact — index cards with Class, Responsibilities, Collaborators, exactly as Beck & Cunningham published at OOPSLA 1989; the original paper is still hosted on Ward Cunningham’s site

  • The technique survives mainly as a teaching and workshop tool for object-oriented thinking — its original stated purpose ("A Laboratory for Teaching Object-Oriented Thinking") — and remains a defined entry in the Agile Alliance glossary; day-to-day design discussion has largely moved to whiteboard sketches and lightweight diagrams