12 yearsSoftware that holds up in productionAnyone can generate an app now. Making it survive real users, real data and the next engineer is where experience shows: clear boundaries, tests that check what matters, and code someone else can take over.
DesignCareful design before the first lineData models, failure modes and what happens when a dependency goes down, worked out up front. Decisions are written down so they can be checked later.
Full stackBackend, front-end, infrastructure and teamsFrom the database to the screen to the server it runs on. Lead engineer for five years, so also how a team ships it.
Finance dataBank-data and accounting pipelinesOpen banking feeds, statement extraction, reconciliation, and getting the result into the spreadsheet or system people already use.
AI productsLLM-backed products and agent memoryEvals as release gates, the model kept out of the arithmetic, a clear line on what it is allowed to decide, and memory that says when it has gone stale.