中文 →
Blog Deep-Read · 07 · charity.wtf

Charity Majors · charity.wtf
You Cannot Read Your Code And Know What It Does

December 2015 to now · 127 posts · still active (latest 8 July 2026) · moved from WordPress to Substack in December 2025, all old links preserved · this page is based on 14 posts read in full, spanning May 2016 to June 2026

In October 2019, Charity Majors put two companies side by side on their blog and invited readers to spot the difference.

Company X. Three years old. A large, fast-growing multi-tenant platform on a big distributed system, spiky traffic, mountains of user-submitted data, a very green database underneath. Ships the API about once a day, does a global deploy every Tuesday. Deploys usually involve some firefighting and a rollback or two. Engineers get woken up roughly twice a week.

Company Z. Three years old. A large, fast-growing multi-tenant platform on a big distributed system, spiky traffic, mountains of user-submitted data, a very green home-built columnar storage engine underneath. Deploys automatically within 30 minutes of a merge. Engineers get woken up no more than a couple of times a year.

Both are developer platforms. Both run elastic microservices written in Go. Both stuff user-defined data into a young, homegrown storage engine. They even share four of the same developers.

Then comes the reveal: these are Majors' last two jobs. X is Parse (2012–2016), Z is Honeycomb (2016–present). They built the infrastructure at both.

The thing that differs by two orders of magnitude is not the stack, not the talent, and not luck. It is how long it takes between writing a line of code and seeing what that line actually does to real users.

That is the single idea behind eleven years and 127 posts. Majors keeps applying it to four things that look unrelated, and keeps arriving at conclusions people would rather not hear.

The fight

Majors is cofounder and CTO of Honeycomb, and the modern software usage of the word observability was largely lifted out of control theory by them and their colleagues in 2016. But the root problem is far more mundane than that, and almost every programmer assumes it isn't a problem at all:

You do not know what your code does. You cannot get it by reading. You cannot get it from tests. The only way to know is to let real users run it and then go look.

You'll never know — not really — what the code you wrote does just by reading it. The only way to be sure is by instrumenting your code and watching real users run it in production. "In Praise of 'Normal' Engineers", June 2025

Accept that, and the rest is consequences. And the consequences run somewhere few people are willing to go: nearly every dysfunction in software — technical, organizational, and now AI-shaped — is the same thing wearing different clothes. A feedback loop that has been stretched or cut.

The four hardest swings

1. Fear is the biggest technical debt there is. In 2019 someone posted a cute ASCII bunny holding a "don't push to production on Friday" sign. Majors fired back with what they themselves later called an "equally hyperbolic and indefensible claim": if you're scared to deploy on Fridays, pull every developer off feature work and onto the pipeline until it's fixed. The internet detonated for six months. The eventual argument: the real cost isn't Friday, it's every habit you build to route around the fear — batching changes up, waiting anxiously to get paged, losing Monday to debugging a blob nobody can untangle.

Fear of deploys is the ultimate technical debt. "Friday Deploy Freezes Are Exactly Like Murdering Puppies", May 2019

And the evidence offered isn't reasoning, it's those two companies:

Our systems were more stable when we always shipped right after the changes were merged. Our systems were less stable when we carved out times to pause deployments. "Deploys: It's Not Actually About Fridays", October 2019

2. Metrics throw away the context at write time. For a decade the industry described observability as "three pillars: metrics, logs, traces." In 2024 Majors did something impolite: assigned that generation a version number, Observability 1.0, and declared it superseded. The reason is purely technical. A metric is one number plus some tags; the rest of the request's context is discarded the instant it is written, so you can never correlate it back. You have to guess in advance which questions future-you will need to ask.

Metrics are a terrible building block for understanding rich data, because you have to discard all that valuable context at write time […] You will go broke and go mad if you try. "Is it time to version observability? Signs point to yes", August 2024

They also went and counted the bill: the same user request stored and paid for five times over, in logs, metrics, APM, tracing and RUM. A 5x multiplier is the modest end.

3. Management is not a promotion. The 2017 essay "The Engineer/Manager Pendulum" is the most self-cited post in the entire corpus. Its core claim is near-heresy inside a Silicon Valley career ladder:

Management is not a promotion, management is a change of profession. And you will be bad at it for a long time after you start doing it. If you don't think you're bad at it, you aren't doing your job. "The Engineer/Manager Pendulum", May 2017

Hence the pendulum: the best frontline managers are never more than two or three years from hands-on work, the best tech leads have done time managing, so stop picking a lane and swing back and forth. "It isn't a promotion, so you don't have any status to give up."

4. Code is not understanding. It is a cache of understanding. In 2026 Majors turned the same blade on AI, and landed somewhere neither camp likes: AI does not make engineering discipline optional, it makes it mandatory for the first time. Once code can be regenerated cheaply, "we can't just throw it away and rewrite it" stops being prudence and becomes a diagnosis.

The fact that we cannot regenerate our code in the same way is a sign that we do not understand it. We do not know which commitments we have made, we do not know which dependencies will break. We find them by breaking them, mostly. "AI demands more engineering discipline. Not less", June 2026

Plus a line that will annoy a lot of people: don't rest the case for humans in software on humans being the better quality gate. "We are literally the weakest link."

Where this might not hold

The biggest problem is one Majors named first: the correct answer to Observability 2.0 happens to be the product their company sells. They admitted in 2019 that fear of sounding like a vendor had kept them from making the argument properly — "which has absolutely been detrimental to my argument." And stamping a rival architecture with the version number "1.0" is itself a move in a fight over naming rights.

Second, the sample. Honeycomb is a developer-tools company they built from scratch, whose customers are engineers. The advice assumes you have the authority to go fix your pipeline. Many people do not.

But this is also someone who writes their own disasters up as incident reviews. After a week of being mobbed online in 2018 over a piece of career advice, the response was a formal post-mortem with a "regrets / no regrets / semi-regrets" ledger. And in 2023 they went back to what they'd have filed under "proudest manager moments" — years of spending 50–75% of their emotional bandwidth keeping one person on the team — and reclassified it as a failure:

All that my coddling ultimately did was teach them the wrong lessons, and prevent them from learning the right ones. "Helicopter Management", June 2023

For how each of the four ideas was actually discovered, how an admittedly indefensible tweet got used as bait to locate the weak points in their own argument, how "ops" became a slur over twenty years (and who gets blamed), exactly where the 1.0 and 2.0 data models diverge, and the number they conceded in 2026 — switch to Full above.