Principles

The ideas I return to when making decisions about teams, quality, and software. They're working principles, revised as I learn.

  1. Keep it simple

    Complexity is a cost you pay on every future change. Prefer the simplest thing that solves the real problem, and make it easy to delete.

  2. Focus

    Doing a few things well beats doing many things halfway. Every yes is a no to something else, so say the no out loud.

  3. Know the value proposition

    Be able to say who the work is for and why they would care. If you can't, you aren't ready to build it yet.

  4. Skin in the game

    Decisions improve when the people making them live with the consequences. Keep builders close to the outcomes they create.

  5. Systems and incentives drive outcomes

    People mostly do what the system rewards. When results disappoint, examine the incentives and feedback loops before looking for someone to blame.

  6. Build quality in

    Inspection finds defects; it doesn't prevent them. Invest in the design, practices, and feedback that stop defects from being created.

  7. Shorten the feedback loop

    The faster you learn whether something works, the cheaper your mistakes become. Optimize for fast, honest signal.

  8. Make the work visible

    Hidden work can't be prioritized, improved, or shared. Write it down, show the queue, and make trade-offs explicit.

  9. Heroics are a symptom

    Repeated late nights and last-minute saves mean the system is failing. Thank the hero, then fix the system that needed one.

  10. Leave it better than you found it

    Small, steady improvements compound. Fix the paper cut you just hit so the next person doesn't have to.