Philosophy

How I think about building software, leading teams, and staying sharp.

Leading teams

I believe great engineering teams are built on trust and autonomy, not control. My role as a leader is to set clear direction, remove blockers, and let people do their best work.

I hire for curiosity and ownership. I care less about what someone already knows and more about how they think, learn, and communicate. Titles matter less than impact.

Process should serve the team, not the other way around. I keep rituals minimal — short standups, async-first communication, written decisions. If a meeting could be a message, it should be.

Working solo

When I build alone — side projects, prototypes, open-source tools — speed and clarity matter most. I optimise for shipping, not perfection. Version one should exist before version two is planned.

I keep my stack intentional. I pick tools I trust and go deep rather than chasing every new framework. Right now that means TypeScript everywhere, Astro for static, Next.js for fullstack, React for interactive, and Python when I need ML muscle.

Working with AI

AI is not a novelty for me — it's a core part of how I work and build. I use LLMs daily for code generation, architecture review, content drafting, and debugging. Claude Code is my primary pair-programming tool.

At work, I design agentic pipelines and multi-model architectures for production. I've led GenAI adoption across engineering teams — from internal tools to customer-facing AI features. I care about reliability, observability, and cost control, not just demos.

My take: AI amplifies good engineering, it doesn't replace it. The developers who'll thrive are the ones who learn to steer AI effectively while keeping their fundamental skills sharp. I teach this approach at EPF Engineering School.

Managing time

I protect deep work blocks ruthlessly. Context switching is the silent killer of engineering productivity — both mine and my team's. I batch meetings and keep large uninterrupted blocks for coding and thinking.

I start each day with intention. I built Jim, a terminal-based task assistant, specifically for this — to review what matters, decide what to carry forward, and consciously drop the rest.

I don't believe in hustle culture. I believe in high-leverage work, consistent output, and knowing when to stop. Rest is part of the system.