Software engineering

Five principles I use when a system has to stay understandable.

I prefer engineering decisions that reduce hidden complexity. The goal is not to make a system look sophisticated; it is to make behavior clear enough to build, test, debug, and change with confidence.

By Sanjai Syamaprasad · Software Engineer & AI Application Developer · September 29, 2026

1. Make important state visible

If a workflow depends on status, ownership, permissions, or transitions, I want those ideas represented explicitly in the application model. Hidden state creates debugging problems because the system behaves differently without making the reason obvious.

2. Keep boundaries meaningful

A useful boundary separates responsibilities that change for different reasons. Authentication, data access, domain logic, integrations, and presentation do not need to be isolated for ceremony, but they should not collapse into one layer that knows everything.

3. Design failure paths before they become incidents

External APIs fail. Inputs arrive incomplete. Data can be malformed. A reliable application needs to define what the user sees, what gets logged, what can be retried, and what must stop safely.

4. Prefer observability over guesswork

When debugging a distributed or integration-heavy workflow, good logs and explicit error context are worth more than clever abstractions. I want enough information to reconstruct what happened without exposing sensitive data.

5. Match complexity to the real problem

Architecture should earn its complexity. I start with the smallest design that cleanly supports the workflow, then add queues, caches, background jobs, services, or additional abstractions only when the product actually needs them.

What I optimize for

I optimize for software that can be explained, tested, observed, and changed without forcing the next engineer—or my future self—to rediscover the system from scratch. That usually means making state explicit, keeping boundaries clear, and choosing the simplest architecture that can support the real workflow.

Related: software and AI projects · AI-assisted workflows · engineering profile