Roland Su

Designing with constraints

Constraints are useful because they make choices visible. A small surface, a short deadline, or a narrow API can force a design to become more honest.

I try to name the constraint before solving around it. That keeps the tradeoff explicit and makes the next decision easier to review.

Rules make systems readable

A codebase with clear boundaries is easier to change than one with unlimited freedom. The best rules are plain, local, and easy to test.

Small decisions compound

  • Prefer the boring primitive until the problem earns more structure.
  • Make state transitions obvious.
  • Leave names and comments that explain why the boundary exists.