Skip to content
apoorv mittal
Principles · short form

How I lead

Ten principles I keep coming back to. The opinionated short version of the about page. The rules I'd want a new direct report to know on day one.

These are not aspirations. They're the calls I've actually made, often more than once. If we work together, expect me to default to these, and expect to disagree with at least one.

  1. 01

    Boring tech compounds.

    PostgreSQL, monoliths, server-rendered HTML, and well-named functions are still the right answer most of the time. Trends decay; durable foundations don't.

  2. 02

    Migrations beat rewrites.

    Staged rollouts. Feature flags. Off-ramps at every step. Zero-downtime isn't a constraint. It's a process you run on a tracker that everyone watches.

  3. 03

    If it isn't measured, it isn't real.

    DORA metrics, Core Web Vitals, accessibility audits, eval sets for AI features. The bar lives in a dashboard, not a slide deck. Otherwise the bar isn't a bar.

  4. 04

    RFCs over Slack threads.

    Decisions made in a thread evaporate by Friday. Decisions made in a doc compound. The next person who hits the same fork reads it instead of re-having the argument.

  5. 05

    Code review is the manager's IDE.

    Most of the leverage I have on a team lives in the comments I leave on a PR at 9pm. Skipping reviews to attend more standups is skipping the job.

  6. 06

    Coaching is the job.

    I aim to make every direct report so good they get recruited away. Six went to senior in the last eighteen months; a seventh is tracking toward staff. If they stay anyway, that's the win.

  7. 07

    Every AI agent gets an exit code, a kill switch, and an eval set.

    Otherwise it's not an agent. It's a chatbot pretending to be one. Demo agents are easy; production agents earn their seat with eval scores and an incident-attributable rate.

  8. 08

    Disagree, commit, then re-litigate at the retro.

    Disagree in the meeting, hard, with data. Commit in the room. Bring it back at the retro with what actually happened, with the same data the second time around.

  9. 09

    Hire for taste. Train for craft.

    I can teach React, GraphQL, and the codebase. I can't teach why bracket-style matters but isn't worth dying over. The interview loop optimises for the second.

  10. 10

    Process is scar tissue.

    Every checklist, every review gate, every required field on a Jira form is from a past incident. Add it deliberately when the incident proves the need; remove it ruthlessly when the need has aged out.