I write to understand how good software gets made.
Essays on decisions, trade-offs, and the people behind useful technology.
Read the writingSelected writing
Earn Complexity
Complexity is not inherently bad. Unearned complexity is. The difference is whether the complexity was added to solve a real, present problem — or to prepare for a future that may not arrive.
Recent writing
All writingDeveloper Advocacy Should Ship Working Software
Developer-facing teams build more credible content when their examples survive real implementation, not just polished demos.
Every Technical Role Is Now Product-Accountable
AI is lowering the cost of building software. That does not remove the need for architects, managers, or technical leads. It removes the excuse for any of them to stay distant from user value.
What AI Tools In Education Actually Need
The most useful AI tools in education improve explanation, feedback, and access instead of turning learning into automation theater.
The Cost of Unclear Ownership
Unclear ownership is not primarily a people problem. It is a system design problem, and its costs are almost always invisible until they are expensive.
Small Teams Have Never Had More Leverage
AI tools do not flatten the difference between strong and weak teams. They amplify it. A disciplined small team with clear scope and high standards will compound faster than ever.
The Decision Hierarchy Problem
Most organizational friction is not a communication problem. It is a decision authority problem that has been relabeled as a communication problem.