Essays
Positions on software engineering, Engineering leadership, architecture and AI-enabled development — ideas shaped by years of building systems and teams rather than tutorials or trend summaries.

One Company, Two AI Adoption Ladders
AI adoption is not one maturity ladder. It is two — how AI changes the way you build, and how it changes what customers get. Each needs its own roadmap.

The Return of Dogfooding
How AI is turning an old product-testing practice into an accessible product-creation strategy — and why real usage still beats imagined demand.

Why Teams Fail at Implementing DDD
DDD rarely fails because the patterns are hard. It fails because teams treat it as a technical task instead of a bridge between business and tech.

The Best Architecture Is the One You Can Replace
Great architecture is not defined by the latest trends. It is defined by how cheaply you can change your mind later.

Building systems that enable teams
Technical architecture is team architecture. The systems you build shape how people work.

The inner loop of agentic development
Where the real work happens in AI-assisted coding. Understanding the loop is key to designing better tools.

Clean Code Still Matters — But for Different Reasons
Why AI-Generated Code Makes Discipline More Important, Not Less

Prompt Isn't King — Context Is
Real agentic development is not chatting with an AI. It is architecting the context agents consume and the double loop that keeps humans accountable.

Autonomous agents vs pair-programming agents
Two models for AI-assisted development. One replaces you, one amplifies you. The difference matters.

Design patterns after AI
Which patterns survive the shift to AI-assisted development? Which need to evolve?

The Myth of 100% Test Coverage
Coverage measures what your tests touch, not what they verify. Chasing the last percent costs more than it protects.

The Art of Unlearning and Relearning
Staying relevant in software is not only about acquiring new skills. It is about letting go of outdated knowledge and revisiting what you thought you knew.

The 8 Lean Wastes of Software Development
Working hard but not making progress? Lean names eight wastes that quietly drain software teams — and each one has a countermeasure.

Code Reviews That Make Teams Better
Done right, code reviews catch bugs, raise quality and build teams. Done wrong, they create frustration. The difference is mostly mindset.

DDD Is a Paradigm Shift for the Whole Team
Domain-Driven Design is not a set of coding techniques. It is a mindset shift that only works when the entire team — including the business — makes it together.

Agile Is Not Scrum
Agile is a mindset; Scrum is one framework for it. Confusing the two is how teams end up doing Zombie Scrum — all the rituals, none of the value.

The Greenfield and Tiger Team Trap
Dream projects with elite teams and a blank slate often falter. The missing ingredient is almost always early integration and real feedback.