Requirements as conversation starters, not comprehensive specifications.
User stories aren't requirements documents. They're placeholders for conversations.
Ron Jeffries captured this as the "3 Cs":
Card: A brief description that fits on an index card. "As a user, I want to reset my password so I can regain access to my account."
Conversation: The dialogue between developers and customers that fleshes out the details. What does "reset" mean? Email link? SMS code? Security questions?
Confirmation: The acceptance criteria that tell you when the story is done. "Given a valid email, when I click 'reset password', then I receive an email with a reset link within 1 minute."
The card is not the requirement. The conversation is the requirement. The card is just a reminder to have the conversation.
Why Index Cards?
Index cards force brevity. You can't fit a requirements document on a card. This is intentional—the details should emerge through conversation, not documentation.
The classic story format is:
As a [type of user] I want [some capability] So that [business value]
For example:
The "so that" clause is crucial. It explains why the feature matters. This helps developers make good decisions about implementation and helps product owners prioritize.
Bad stories omit the why:
Good stories connect features to value:
The INVEST acronym describes qualities of good stories:
Independent: Stories can be developed in any order. No dependencies between stories.
Negotiable: The scope is flexible. Details are negotiated through conversation.
Valuable: Each story delivers value to users. No "technical stories" without user benefit.
Estimable: The team can estimate how big it is. If not, the story needs clarification or splitting.
Small: A story should take less than a week of work. Ideally a few days.
Testable: There are clear acceptance criteria. You can verify when it's done.
When a story violates INVEST, fix it:
As a customer, I want to receive an email confirmation after ordering so that I have a record of my purchase. Acceptance: email arrives within 5 minutes, includes order number and items, has unsubscribe link.
Implement the user management system. (Not independent—too big. Not testable—no clear criteria. Not small—could take months.)
Large stories need to be split. But how?
Split by workflow step: "User can complete checkout" →
Split by data variation: "User can pay for order" →
Split by operation: "User can manage their profile" →
Split by performance: "Search returns results quickly" →
Each split story should be independently deployable. If you can't deploy partial credit card support (only Visa, not Mastercard), that's still a split—you deliver value incrementally.
When splitting, keep asking: "What's the smallest thing that delivers user value?" Split until each piece is small and valuable.
This is worth repeating: stories are not specifications.
Traditional requirements documents try to specify every detail up front. This fails because:
Stories embrace uncertainty. The card captures the intent. The conversation fills in details just in time. The confirmation verifies understanding.
The customer stays involved throughout. When developers have questions, they ask the customer—not the document. This keeps the team aligned and adapts to learning.
Stories also encourage deferring decisions. You don't have to decide every edge case up front. Handle the main path first. When you encounter an edge case, have a conversation then.
This is XP's approach to requirements: just enough, just in time, through conversation.