001 — Code Review Habits
and exactly what to say instead
Five code review habits that read as junior, paired with the senior version of the same moment:
| ✕ "This is wrong." | ✓ "This breaks on empty input — try X instead." |
| ✕ Approving without reading | ✓ Pull the branch and run the diff locally |
| ✕ Nitpicking style in every comment | ✓ Let the linter own style, comment on logic |
| ✕ Silent LGTM on a 500-line PR | ✓ Ask for smaller PRs before you review |
| ✕ Reviewing only the code | ✓ Review the tests — they show what was missed |
📺 Watch the Short · published Jul 15
002 — Prod on Fire
before you touch the code
Five first moves when production is down. The instinct is to dive into the code — the senior move is to stabilize, communicate, and preserve evidence first:
- → Stop the bleeding before you find the cause.
- → Roll back first — debug forward later.
- → Post a status every 15 minutes, even "still investigating."
- → Capture logs and traces before they rotate away.
- → Write the timeline live, not from memory afterward.
📺 Watch the Short · published Jul 15
003 — Engineering Checklists
steal them
Four steal-worthy checklists for the moments that decide whether your weekend gets interrupted:
Before you open a PR
- Self-review the diff first
- Say what changed and why
- Keep it under ~400 lines
- Tests cover the new path
Before you deploy
- Migrations are backward-compatible
- A kill switch is ready
- Dashboards open, alerts armed
- You know the rollback command
Before you call it done
- Edge cases and empty inputs
- Error paths, not just the happy path
- Logs and metrics in place
- Docs and README updated
Before you touch prod data
- Take a backup first
- Dry-run on a copy
- Wrap writes in a transaction
- Know how to undo it
📺 Watch the Short · published Jul 17
004 — Git Habits
and the senior fix for each
Five git habits that read as junior, and the senior version of each:
✕ git commit -m "fixes" |
✓ Say why the change exists, not just what |
✕ git push --force on a shared branch |
✓ git push --force-with-lease |
| ✕ One giant commit at the end of the day | ✓ Small, atomic commits as you go |
✕ git add . without looking |
✓ Stage the hunks you actually mean to ship |
| ✕ Committing straight to main | ✓ Branch, PR, review — even when you're solo |
📺 Watch the Short · published Jul 21
005 — Naming Things
names are the cheapest docs you'll write
Five naming habits that separate readable code from a puzzle:
✕ data, temp, obj, result2 |
✓ Name the thing it actually holds |
✕ getUser() that also writes to the DB |
✓ Name it for what it does — or split it |
✕ isNotDisabled |
✓ Positive booleans — isEnabled |
| ✕ Abbreviations only you understand | ✓ Full words; your editor autocompletes them |
✕ Manager, Helper, Util catch-alls |
✓ Name the responsibility, not the vibe |
📺 Watch the Short · published Jul 22
006 — Bug Won't Reproduce
before you start rewriting things
Five moves when a bug won't reproduce. The instinct is to start rewriting — the senior move is a reliable repro first:
- → Get a reliable repro before you fix anything.
- → Read the stack trace top to bottom — the answer's usually there.
- → Change one thing at a time, then re-test.
- → Use
git bisectinstead of guessing what changed. - → Add a failing test first, so it can never come back.
📺 Watch the Short · published Jul 23
007 — Logging Habits
logs are a message to future you
Five logging habits that decide whether the logs actually help you at 3am:
✕ log.info("here") |
✓ Log the what, the why, and the ids |
| ✕ Logging the password or the token | ✓ Redact secrets and PII before they hit disk |
| ✕ Everything at INFO | ✓ Use levels — WARN and ERROR should mean something |
✕ catch (e) { } swallowing it |
✓ Log the exception with context, then rethrow |
| ✕ Plain-text strings you can't query | ✓ Structured logs with fields you can filter on |
📺 Watch the Short · published Jul 28
008 — Slow Queries
and the one-line fix for each
Five reasons your query is slow, each paired with the one-line fix:
| ✕ No index on the column you filter | ✓ Index what you filter and join on |
✕ SELECT * dragging columns you never use |
✓ Select only the columns you actually need |
| ✕ N+1 queries firing inside a loop | ✓ Batch it — one query with a join or IN |
| ✕ Filtering the results in app code | ✓ Push the WHERE down to the database |
| ✕ Guessing which part is slow | ✓ Read the query plan — EXPLAIN ANALYZE |
📺 Watch the Short · published Jul 29
009 — New Codebase
be useful by Friday
Four checklists for your first week in a new codebase:
Before you write any code
- Get it running locally
- Find where requests come in
- Read the README and the tests
- Learn how they ship to prod
When you're lost
- Follow one request end to end
- Search for a string you see in the UI
- Read recent PRs, not just the code
- Ask — then write the answer down
Before your first PR
- Match the style already there
- Keep it tiny and boring
- Run the tests locally first
- Read a merged PR for the norms
In your first week
- Fix one small thing yourself
- Write down every setup gotcha
- Map who owns what
- Keep notes you'll want in month two
📺 Watch the Short · published Jul 30
More Quick Tips
New ones land most weeks — see everything tagged tips, or subscribe on YouTube.