Just Fucking Use Standards.

If a standard exists and you ignored it, you didn’t innovate.
You volunteered to maintain infrastructure forever.
Congratulations on your new hobby: compatibility.

Oath I will not invent a format, protocol, auth scheme, or API style unless I can explain — in writing — why the existing standard is insufficient, for my actual constraints, today.

Not “because ours is different.”
Not “because it’s cleaner.”
Not “because it’s fun.”

The Standard Problem (and the Standard Outcome)

You invent a thing

Because “the existing standard is messy,” and you are allergic to history.

It works for 3 months

Because nobody has tried to integrate it yet. Reality hasn’t arrived.

Integrations happen

Now you write adapters, SDKs, docs, migrations, and apology posts.

You become a standards body

But without the committees, rigor, or time. Just vibes and deadlines.

Verdict Standards are not trendy. They’re not elegant. They’re not your personal expression.

They are the price of interoperability — and they’re cheaper than your custom bullshit.

“But Standards Are Ugly” (Yes. That’s the point.)

Standards are ugly because they survived: differing requirements, old decisions, weird edge cases, and the fact that humans keep doing human things.

Your custom solution looks clean because it has not yet met: legacy systems, real users, partner APIs, compliance, or time.

Stop Inventing These

Here’s the list of things engineers keep reinventing because they crave suffering:

Thing people invent Use instead Why
Custom “API style” HTTP + REST-ish conventions Works with everything. Debuggable with curl. Your future self says thanks.
Custom auth headers / tokens OAuth2/OIDC, signed JWTs (when appropriate) There are libraries, docs, and prior art. Don’t invent crypto in a sprint.
Custom time formats ISO-8601 timestamps, UTC Time is already hard. Don’t add “creative.”
Custom IDs UUID/ULID (pick one) They exist. They work. Nobody wants to parse your “friendly ID” scheme.
Custom config formats TOML/YAML/JSON (and document it) Stop inventing DSLs because you discovered parsing.
Custom data export “spec” CSV/JSON Lines + documented schema Every tool can read it. Your partners won’t hate you (as much).

Choose Your Excuse (tap to expand)

“But our use-case is unique.”

Your use-case is “users and data.” You are not a new species. If you truly are unique, write down what’s unique and why the standard fails — with examples. If you can’t, you’re not unique. You’re just excited.

“But the standard is too heavy.”

You know what’s heavier? Maintaining your own standard. Plus: migration docs, client libraries, versioning, backwards compatibility, and endless support questions.

“But it’s faster if we do our own.”

Yes — for week one. Then you pay interest forever. You didn’t choose speed. You chose debt with a smug interest rate.

“But we want a better developer experience.”

Great. Build tooling around the standard. Don’t replace the standard with your feelings.

“But it’s cleaner.”

It’s clean because it doesn’t do anything yet. Standards are messy because they do the job in the real world.


A Tiny Test: Are You About To Create Permanent Work?

If your proposal requires writing “a spec,” you are one step away from becoming a full-time maintainer.

If your proposal requires version negotiation, you are already screwed.

Compatibility Tax (the invoice you’re about to receive)

Invoice: Custom Standard™ (Recurring)

- Adapters for every client language you don't use
- Backwards compatibility for versions you regret
- Documentation drift
- Migrations forever
- Security review for your “simple auth”
- The partner integration that breaks your assumptions
- The one customer with legacy systems from 2004
- On-call for your “spec”
Final If a standard exists and it’s “good enough,” it’s not just good enough — it’s the cheapest possible path to not hating your life.

Just fucking use standards.