Oliver 'Oli' Cheng
← Back to blog
Oli Cheng 1 min read Engineering

My Engineering Philosophy for AI Products

The principles I use to keep AI systems readable, reliable, and fast enough to ship every week.

  • Engineering
  • AI Systems
  • Philosophy
My Engineering Philosophy for AI Products

My default hierarchy is simple:

  1. Clarity
  2. Reliability
  3. Velocity

Most teams accidentally invert this under pressure.

1) Clarity: if nobody can reason about it, it’s already slow

AI codebases get messy quickly because behavior is partly data, partly prompts, partly runtime policy.

I optimize for:

  • explicit boundaries (input shaping, model call, post-processing)
  • typed output contracts where possible
  • visible assumptions and fallback paths

Clean architecture is not style points. It is incident prevention.

2) Reliability: design for bad days, not good demos

AI systems fail in weirder ways than deterministic systems.

I assume:

  • upstream model changes
  • intermittent latency spikes
  • malformed outputs
  • rate/quotas constraints

So I add:

  • retries with guardrails
  • timeout budgets
  • schema validation
  • sane fallback responses

Users remember how your product behaves when it fails.

3) Velocity: speed with legibility

Shipping speed is not about heroics. It is about reducing decision drag.

The most useful patterns I’ve found:

  • thin vertical slices
  • explicit acceptance criteria
  • one source of truth for evals
  • instrumentation before scale

The goal is not to be “fast once.” The goal is to be predictably fast.

What I avoid

  • premature multi-agent complexity
  • giant internal frameworks nobody asked for
  • hidden prompt mutations in random files
  • metrics dashboards with no product interpretation

What I optimize for in teams

I want teammates to answer quickly:

  • what changed?
  • why did it change?
  • how do we know it improved?
  • how do we revert if needed?

If these questions are easy, delivery quality compounds.

The rule I come back to

Write code so future you can debug it at 2:13 AM with incomplete context.

That is the standard.