Reading judgment

What a design doc teaches you that a blog post cannot.

A published engineering blog post shows you the decision that won. A design doc shows you the decisions that lost, and why.

HexbriefJuly 29, 20264 min read

A design doc teaches something a blog post cannot teach, because the two documents are written at different points in a decision's life. A blog post is written after the outcome is known, when the team has already lived with the choice long enough to be confident in it. A design doc is written before the outcome exists, when several approaches still look plausible and someone has to write down why one was chosen over the others.

That timing difference is the whole story. Blog posts are retrospective by construction, and retrospective writing is survivorship-biased toward whatever approach shipped. A design doc, when a reader can get access to one, preserves the moment before the bias set in.

The alternatives considered section is the valuable part

Most design docs include a section listing the approaches that were rejected, usually with a sentence or two on why each one did not make the cut. This section is frequently more useful than the description of the chosen approach, because the chosen approach is the part a blog post will eventually explain anyway. The rejected approaches are the part that disappears from the public record entirely once the project ships.

A doc proposing a new event pipeline might reject a fully synchronous design because it would tie service latency to downstream consumer speed, and reject a naive queue-per-consumer design because it would not scale past a fixed number of consumers without operational overhead. Neither rejected idea shows up in the eventual blog post about the pipeline that got built. But both are exactly the kind of reasoning a reader designing a similar system needs to see, because they explain the boundaries of the problem, not just the point inside those boundaries where the team landed.

Open questions reveal real uncertainty

A well-written design doc usually ends with an open questions or unresolved risks section, listing the things the authors were not confident about at the time of writing. This is a rare artifact: a technical document that admits uncertainty before the outcome is known, rather than after. A section noting "we are not sure this approach handles a sudden 10x traffic spike gracefully, and we plan to load test before rollout" tells the reader exactly where the design was weakest.

Blog posts almost never carry this kind of live uncertainty, because by the time they are published the open question has usually been answered one way or another. Reading the open questions section of a design doc, when one is available, is close to reading a team's own risk assessment of its own plan, written before hindsight had a chance to smooth it over.

A blog post is compressed output

Most companies do not publish their design docs, which means most readers only ever see the compressed output: the blog post that summarizes months of internal debate into a few thousand words about what was built and why it works. That compression is not dishonest, but it is lossy, and the reader should treat it that way.

The useful habit is to read a blog post and actively ask what the underlying design doc probably contained: what alternatives were likely on the table, what tradeoff table probably existed before the writing got smoothed into prose, and which sentence in the post is quietly standing in for a paragraph of internal disagreement. That question turns a passive read into an active reconstruction of the reasoning the post left out.

Published RFCs are worth seeking out

A handful of companies and most large open source projects do publish design docs or RFCs alongside their blog posts, and those are worth seeking out specifically because they let the reader compare the compressed story against the fuller argument that produced it. A database team's public RFC for a new replication protocol, read next to the blog post announcing that protocol months later, shows exactly which caveats and edge cases got trimmed for the wider audience.

Over time, reading both forms for the same project trains a reader to spot what a polished post is likely omitting even when no RFC is available. That instinct, built from comparing the two formats directly, is more transferable than any single lesson from either document alone.