Principles
How I think, what I keep, and what I want.
October 2026. I’ll mark what stops holding.
How I work through a problem
The questions I ask, roughly in this order.
Who is it for? I picture the person and the moment they need it. Does this need to exist? I ask what they are actually trying to finish. Where does each fact live? Every piece of state gets one owner, whether I’m designing it or debugging it. What can I leave out? The smallest version that finishes the job comes first, and speed comes after. Who else pays? If another team builds on it, I write down the cost. Then I use it the way they will.
What has held
Where each one came from is noted on the left.
Half built until the keyboard works
A control that needs a mouse is half built. Its name, focus and keys go in while I’m making it.
Defaults are the real design
Most people use the default, so that’s where I put the most care.
Read it before it lands
When generated code is about to change something, I read the change first. Faster output makes the review matter more.
Protect the hour of real work
Most of these ideas started on walks, in the journal or during training. The hour on the work itself is the one I guard.
What I’m after
I want to get good at a few things, and keep improving at them for decades.
I invest the way I want to work: a few concentrated bets, held for a long time, sized to what I know.
I want my health to outlast my career: sleep, training and long walks.
And I want the people who use what I build to get what they came for without noticing the work behind it.
I’ve let go of looking busy, of whatever is loudest this month, and of certainty I haven’t earned.
Where I do my best work
- With people who can say “I was wrong” out loud, including me.
- With designers who care how things are built, and engineers who care how they feel.
- On things I’d still be glad to open a year later.
- With long stretches of time on the work itself.
- When the problem is mine, and the result is what I’m judged on.
- Building for people who use the web differently from me.
- Helping someone else get sharper, through reviews, pairing and writing.
Still thinking about
Time away
I expected a few months away. It ran longer. Without a deadline, I went back to the basics I’d used for years without fully understanding them. Most of this page came out of that time.
Code is getting cheaper
Writing code costs less every month. Deciding which code should exist costs the same as it always has. That second part is most of my job now.
Not settled yet
If agents become everyday users of interfaces, will a good interface for an agent look like a good one for a person? I think mostly yes: clear structure, honest labels. I’m still finding where they differ.