Field notes from the review team
Learn to ship code that survives
The mistakes every team makes — in the code we write and the code we generate — and how to catch them before they ship. Friendly, concrete, ten minutes at a time.
Database
Schemas, constraints, and data that outlives the code around it
You'll Query It More Than You Write It
A row is written once and read thousands of times, by dashboards, debuggers, and support tickets. Designing schemas for the questions you'll ask, not just the data you'll store.
A Schema Someone Can Read at 2am
During an incident, your column names are the documentation. Conventions for ids, timestamps, and booleans that make a schema legible to a tired stranger, and to you in five years.
Soft Deletes Aren't Free: The True Cost of deleted_at
One nullable timestamp, and suddenly every query needs a WHERE clause, unique constraints stop working, and 'deleted' data haunts every join. What soft deletes really cost, and honest alternatives.
The Migration That Locked the Table (and How to Never Write One)
A one-line migration can take down production for eleven minutes. Understanding locks, lock queues, and zero-downtime patterns for changing big tables while they're being used.
Primary Keys Are Forever: Choosing Between Ints, UUIDs, and Regret
You'll change frameworks, languages, and clouds before you change a primary key. How to choose between sequential ints and UUIDs, and what happens when keys leak into URLs.
What a Nullable Column Is Really Telling You
NULL isn't a value, it's a question mark. Most nullable columns are unfinished modeling decisions in disguise, and three-valued logic makes sure you pay for them later.
Constraints Are Documentation That Can't Go Stale
NOT NULL, unique indexes, and foreign keys aren't red tape. They're the only documentation of your data rules that is enforced, tested, and impossible to ignore.
Indexes Are Not Magic: Build Them for the Queries You Actually Run
Adding an index feels like flipping a speed switch, until it doesn't. How indexes really work, why column order matters, and why indexing everything quietly punishes every write.