Estimates go wrong silently
Estimates go wrong silently, so run checks the way pilots run checklists.
Comparing against a system you know is the first check. Twitter historically saw around 500 million posts a day, about 6,000 a second. Google handles on the order of 100,000 searches a second. If your niche recipe app lands above Twitter's write volume, the error is in your envelope and not in the world. Keep three or four public anchors and rank every answer against them.
Units come next, because unit errors are the most common and the most embarrassing. Bits against bytes is a factor of eight, and it bites exactly where people forget it: network links are quoted in bits and payloads in bytes. Per day against per second is a factor of about 100,000. Milliseconds against microseconds is a thousand.
Anything surprising is worth re-deriving with the units written out. A hundred megabytes a second times eight is 800 megabits, which is nearly a full gigabit link.
The absurd hardware test
The absurd hardware test comes third. Convert your answer into machines and react to the picture. A mid-size startup design implying 4,000 database servers or a petabyte of memory is wrong somewhere upstream. The reverse informs you too: if the arithmetic says a third of a server, your honest architecture is one machine and a backup, whatever the diagram fashion says.
Computing one quantity two ways catches the rest. Storage from write rate times record size times retention should roughly match storage from user count times data per user. When both paths land within a factor of two or three, trust the number. When they differ by a hundred, one of your assumptions is broken and you have just found which conversation to have.
Error bars stay attached. Round to one significant figure while working, and present the result as about 3 terabytes a year, good to within a factor of two or three. Precision you do not have is how bad numbers survive review.
Worked example
At a logistics startup, Noor's teammate presents a plan for GPS tracking: 100,000 trucks reporting once a second, a claimed 90 TB of data a day, and a 20-node Cassandra cluster to hold it. Noor runs the two-path check at the whiteboard. A position report is latitude, longitude, truck ID, and a timestamp, about 100 bytes in a binary encoding. 100,000 reports a second times 100 bytes is 10 MB per second, about 860 GB a day, roughly 100 times less than the slide. The gap traces to the assumption: the 90 TB figure used 10 KB per record, the size of the full JSON payload with HTTP headers, which nobody intended to store. At 860 GB a day the plan shrinks to a partitioned Postgres, its relational database, with Kafka absorbing the 100,000 writes per second of ingest. One cross-check deleted 17 servers.