Most of my career has been spent inside long-lived software systems, watching them grow, age, and occasionally surprise the people responsible for them. Over time, my work moved from hands-on development to leading and supporting engineering teams responsible for backend, frontend, and payments systems operating at scale.
I’m particularly interested in the parts of engineering work that don’t show up cleanly in diagrams: decision-making under uncertainty, ownership in distributed teams, and the trade-offs that come with long-term maintenance. Recently, this has included thinking about how AI tools fit into everyday development without eroding judgment or responsibility.
This site exists as a place to gradually capture reflections and notes on those topics as they evolve, along with some of the influences that shape how I think about building software and teams over time.
Recent thoughts: