Over a million developers have joined DZone.

Using Pen & Paper. CRC Cards.

· Agile Zone

Learn more about how DevOps teams must adopt a more agile development process, working in parallel instead of waiting on other teams to finish their components or for resources to become available, brought to you in partnership with CA Technologies.

 Programmers tend to use software to solve absolutely all problems. Need to take notes? Here is an application for taking notes. Brainstorming? All sorts of mind mappers are available for you. Even though in most cases it makes perfect sense, sometimes I find that a piece of paper and a pen are better tools for the job.

This is the first blog post in a series about using such low-tech tools as paper cards for brainstorming, planning, and designing. I’d like to start by introducing one of the most interesting and, unfortunately, underused tools for brainstorming: CRC cards. CRC stands for Candidate, Responsibility, and Collaboration.

What are CRC cards?

CRC cards are index cards on which there are written:

  • A candidate’s name
  • A candidate’s information description. Just one or two sentences describing what each candidate is, and what it does.
  • A candidate’s characterization. It’s role stereotype, a pattern, etc.
  • A candidate’s responsibilities
  • A candidate’s collaborators

Front Side

The front side of a card is used to record a candidate’s name, purpose, and stereotype.

Front Side

Back Side

The back side of a card is used for recording a candidate’s responsibilities and collaborators.

Back Side

How to use CRC cards?

Start by writing down each candidate’s name, and maybe stereotype. Next, move the cards around, and think about each candidate for a little bit. Then, describe each candidate. Often at this point I have a pretty good idea of what my design looks like. If it’s the case, I just stop. After all, CRC cards are just a brainstorming tool aiming to flesh out the design of a new feature, or system. The goal is not to formally describe collaboration patterns, but to come up with a few good ones. In some cases, however, I pick three or four the most important candidates and write down their responsibilities and collaborators.

Candidate or Class?

Originally, CRC stood for Class, Responsibility, Collaboration. But soon most practitioners realized that it’s too early to start thinking in terms of classes, and it’s better to use candidate objects and roles. Only after all collaboration patterns have been fleshed out, we can map roles to classes.

Why Cards?

Why not to draw all the same stuff on a whiteboard? Why cards? Because you can move them around, discard them, group them by an abstraction layer or a subdomain. You can do it without redrawing the whole picture. I find that the process of moving stuff around is what usually sparkles creative ideas.

Read More

Kent Beck and Ward Cunningham described CRC cards in their classic paper “A Laboratory For Teaching Object-Oriented Thinking”.

The way I use CRC cards is described in the book “Object Design: Roles, Responsibilities, and Collaborations” by Rebecca Wirfs-Brock, Alan McKean.

Discover the warning signs of DevOps Dysfunction and learn how to get back on the right track, brought to you in partnership with CA Technologies.

Topics:
java,tips and tricks

Published at DZone with permission of Victor Savkin, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.
Subscribe

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}