| 1 min read

Things I Care About When Building Products

A short set of product engineering principles I return to when making technical and UX decisions under real-world constraints.

  • Product
  • Engineering
  • UX

Most product decisions are tradeoffs, not absolutes. These are the checks I keep coming back to when scope gets messy.

1. Fast Feedback Loops

If a team cannot get feedback quickly, quality degrades no matter how talented people are.

I prioritize:

  • Shippable vertical slices
  • Lightweight instrumentation
  • Reviewable scope boundaries

2. Honest Interfaces

UI should not overpromise. If something is loading, say so. If confidence is low, say so. If data is stale, say so.

This matters especially in AI-assisted features where confidence can look deceptively high.

3. Clear Operational Ownership

Features are not done at merge time. Someone should always own:

  • Runtime behavior
  • Error budgets
  • Maintenance expectations

Without ownership, systems rot quietly.

4. Constraints as Design Inputs

Constraints are not roadblocks. They are direction.

A strong product direction often comes from embracing constraints early:

export function shouldBuild(option: Decision) {
  return (
    option.solvesUserProblem &&
    option.maintainableInSixMonths &&
    option.operationallyObservable
  );
}

Closing

I care less about sounding innovative and more about building software that stays useful and understandable over time. Durable products usually come from disciplined fundamentals.