• Strong TypeScript across the stack: strict mode, generics, types shared between server and client instead of duplicated.
• Node.js backend: API design, auth, error handling, observability.
• Asynchronous processing: queue consumers and background workers, idempotency, retries and failure handling, backpressure.
• PostgreSQL: schema design, migrations and rollbacks, indexing, reading a query plan.
• Strong React: hooks, composition, clear state boundaries, client-side routing and server state caching.
• Comfortable with a modern frontend toolchain: fast bundling, utility-first styling, component libraries you extend rather than fight.
• API contract design: REST, OpenAPI, typed clients, versioning.
• Unit and integration testing, with a defensible position on what belongs at which level and on what is worth testing at all.
• Real use of AI-assisted development in a production codebase: agentic workflows, context management, reviewing generated output as critically as a colleague’s merge request. You have a view on where these tools pay off and where they create debt.
• Seniority means you can say why you chose an approach, what you rejected, and what it will cost in six months.