How I think about software

Ten stated positions, not marketing bullets — things someone could disagree with, which is what makes them real.

01

Product thinking

Code is the last decision, not the first. I start from the business problem and the constraint that matters most, and let architecture follow from that.

02

Architecture first

A system's shape determines what's cheap to change later and what's permanent. I spend disproportionate time here.

03

Business-driven development

Every technical decision is evaluated against what the business actually needs to survive and grow — not against what's technically interesting.

04

Automation first

If a process is manual and repeated, it's a bug in the system design, not a fact of life.

05

Security by design

Data integrity and access control are architectural properties, not a checklist added before launch.

06

API-first

Systems are built to be integrated with, not just used — internal boundaries are designed like public contracts from day one.

07

Maintainability

Code is read far more than it's written. I optimize for the engineer reading this in a year, which is usually me.

08

Scalability

I design for the load the business will have if it succeeds, not the load it has on day one — without over-engineering for loads that will never come.

09

Developer experience

Tooling, documentation, and local setup speed are product decisions — they determine how fast a team can actually move.

10

Ownership

I don't hand off a spec and disappear. I carry decisions through to production and live with their consequences.

From idea to production

Discovery

Understand the real business problem and its hardest constraint.

Architecture

Design the system shape before writing implementation code.

Prototype

Validate the riskiest assumption — the data model, an integration, a hardware constraint.

Development

Build in the order that de-risks the project fastest.

Testing

Correctness against the constraint that matters — compliance, scale, or security.

Deployment

Ship in a state that can be operated, not just demoed.

Iteration

Real usage reveals what the spec didn't.

Scaling

Design decisions from step 2 get their return on investment.

Grouped by capability, not logos

Frontend

ReactNext.jsTypeScriptJavaScript

Backend

Node.jsPythonJavaREST APIs

Data

PostgreSQLSQLData modeling for integrity and auditability

Infrastructure

DockerCloudGitModular architecture

Automation

Google WorkspaceGmailDocument automation

AI

OpenAI integration applied to real workflows

Developer Tools

ElectronGit-based workflows