CAP theorem for product managers, in plain English
When the network breaks you pick stale data or errors — and that is your call, not engineering's.
· 6 min read
When the network between parts of your system breaks, you get one choice: keep answering every request with data that might be slightly out of date, or keep the data perfectly correct and turn some requests away. You can't do both at once, and which one is right depends on what your users feel when it happens. That makes it your call, not engineering's.
CAP theorem sounds like a thing you'd need a computer science degree to use. You don't. It names one trade-off that shows up every time a system with stored data has a bad day, and the trade-off is a product decision in a technical costume. Learn to read it and you stop nodding along in the outage meeting.
Here is the whole thing.
What does CAP theorem actually mean?
Picture your service running in three data centres at once, so it survives one going down. Most of the time they stay in sync. Then the network between them breaks and the parts can't talk to each other for a few minutes.
That break is called a "partition" — a split where one chunk of the system is cut off from the rest. CAP theorem says that during a partition, you pick one of two behaviors:
- Stay consistent: every answer is the latest truth, so the cut-off part refuses requests it can't verify. Users get an error instead of a wrong number.
- Stay available: every request still gets an answer, even from the cut-off part, so some answers are a little stale. Users see something, but it might be slightly behind.
You cannot have both while the network is broken. Not because the engineers haven't tried hard enough — because it's impossible to be certain you have the latest value when you can't reach the place that holds it. (The "P" in CAP, partition tolerance, is the part you don't get to opt out of: networks break. So the real choice is just C or A.)
Why is this a product decision and not an engineering one?
The instinct is to say "engineering will pick the right trade-off." That's backwards. Engineering can tell you what each option costs to build and run. But the option itself turns on what the user experiences when the system fails, and that is the thing you own. The same partition, in two different features, has two opposite right answers. Only someone who knows the product can say which.
Here's the same failure in three features.
A bank balance. You move £200 to your landlord, the app says "done," then the system partitions and a cut-off part still shows your old balance. Showing money that's already been spent isn't just annoying — it's a regulatory problem. A balance has to be correct or not shown at all, so the right behavior is an error ("Something went wrong, try again"), not a stale number. This feature stays consistent.
A like count. Someone posts a photo, the count partitions, and some people see 812 likes while others see 798. Nobody calls their bank over this. Keep serving a number, let it be slightly off, and let the parts reconcile once the network heals. This feature stays available.
A cart on a flaky phone connection. Items should feel like they add instantly, even before the server confirms. Show the add right away, sort out the truth when the connection catches up, and if something's out of stock, say so politely at checkout. Available again, with the correction saved for the moment that matters more.
Three features, three answers, all correct for their context. The right answer is a property of the feature, and features are yours.
What question should a PM actually ask?
When an engineer proposes anything that stores or counts data — a database, a queue, a session store, a counter — one question does the work:
When the network breaks, and it will, would we rather show the user stale data or show them an error?
That's the CAP conversation. You don't need to know what a consensus algorithm is or argue about how it's built — only which answer fits the feature you're shipping. Some starting points from real products:
- A payment or balance: show an error. Never show stale money.
- A user's own profile edit: slightly stale is fine — they'll mostly see their own recent change.
- Other people's profiles: stale is fine. Nobody notices a 30-second lag on someone else's avatar.
- An unread-messages badge: stale is fine, but don't let it drift more than a minute.
- A checkout confirmation: must be correct. Better to ask someone to refresh than to confirm an order that didn't go through.
Every one of those is a product call. An engineer can build whichever you choose. The choosing is yours.
How do you explain the trade-off to a CEO?
Back to the outage meeting. A region is cut off, and someone asks whether the service is up or down.
A PM who understands CAP says something like: "We built this to stay available during a regional outage, so for a few minutes some reads can be slightly stale while writes still go through, and it reconciles within about a minute. The alternative was to go fully down for those minutes. We chose availability — except the payment ledger, which is correct-or-down, because a wrong balance is worse than a short outage."
That turns a technical event into a decision a CEO can judge. The engineering was done months ago; the framing is what you bring.
Where do you practice this?
Reading the trade-off gets you part of the way. You keep it by making the call yourself, on a real problem, and finding out fast whether it held up.
That's what PMLabs is for. You get a problem and a blank canvas, drag the components on, wire them together, and write one line on why each is there — including which parts must stay correct and which can run a little stale. A rubric scores it in about 30 seconds, so you learn what you missed while it's cheap to miss it. Sessions run about 15 minutes. No code.
One honest note: the scoring is AI checking your work against a rubric, so treat it as a sparring partner, not an architecture review. It won't replace your engineers or their judgment on a real system. It gives you the reps, so you walk into the real meeting with the answer already rehearsed.
If you want to start, Module 1 is free, no card: pmlabs.app. If you'd rather keep a one-page version on your desk, the cheat sheet covers the same trade-offs.
To see how a choice like this reads off a real diagram, see how to read an architecture diagram without knowing how to code. And for the broader set of questions these decisions turn into, see the system design questions PMs actually get asked.
Frequently asked questions
What is CAP theorem in simple terms?
CAP theorem says that when the network between parts of a system breaks — a "partition" — the system can keep every request answered with data that might be slightly stale, or keep the data perfectly correct and refuse the requests it can't verify, but not both at once. In plain terms: during a network break, you choose between staying available with possibly-old data and staying correct with some errors.
What's the difference between consistency and availability?
Consistency means every answer is the latest truth, so a part of the system that can't confirm the latest value returns an error rather than a guess. Availability means every request gets an answer even if it's slightly out of date. A bank balance should favor consistency, because a wrong number is worse than a brief outage; a social like-count can favor availability, because a count that's briefly off bothers no one.
Why is CAP theorem a product manager's decision?
Because the right choice depends on what users feel when the system fails, and that's a product judgment, not a technical one. Engineering can build either behavior and tell you what each costs. Only someone who knows the feature can say whether a user would rather see stale data or an error — and that answer is different for a payment than for a photo feed.
Do I need to understand consensus algorithms to use CAP theorem?
No. You don't need to know how the system reaches agreement internally. You need one question for any feature that stores or counts data: when the network breaks, would we rather show stale data or an error? Answer that per feature and you've made the CAP decision without touching the underlying math.
Practise the motion, free.
Drag a system onto the canvas, get it reviewed by AI in thirty seconds. Module 1 is free — no code, no cohort.
Start Module 1 — free