Experience
Real systems, real users, and the lessons you only learn in production.
The deep endI started the way every junior dreams of: thrown straight into the deep end. An insurance system serving tens of thousands of users across dozens of companies in Central Europe. No sandbox. Every commit shipped to production. I learned fast, partly because I wanted to, mostly because I had to. Turns out that’s the best way.
The real lessonThat system powered the digitalisation of public health: faster, more accessible everyday processes for the professionals who relied on it to get their work done. From there I moved from shipping features to architecting full-stack systems from scratch: greenfield repositories grown into production platforms serving hundreds of users daily. Frontend, backend, database design, CI/CD, architecture, business analysis: if it needed doing, I owned it. That taught me what no tutorial ever could: building software is 30% code and 70% understanding what people actually need.
Legacy to modernWhen a mission-critical product for road infrastructure management outgrew its legacy monolith, I was at the center of decomposing it into a modular, scalable architecture: the kind of system where every decision carries weight, because real people depend on it every day. It’s also where I started folding AI into serious engineering, long before it was the obvious move.
Content at scaleThen came a SaaS platform for digital and print book distribution: a large-scale system of tightly coordinated modules spanning inventory management, metadata processing, distribution analytics, and multi-channel content pipelines pushing to Amazon and other global marketplaces. High throughput, complex integrations, zero room for error.
The playgroundWhen I’m not solving other people’s problems, I’m happily creating my own. I love building things others can reuse (shared libraries, component packages, Docker images, internal tools), packaged well enough that someone else can just grab them and run. I’ve built e-commerce platforms, contributed to a popular 3D solar system simulator, and got a patch merged into Google’s official Angular repository. Every side project starts with “what if” and ends with a new skill in the toolkit.
The agent eraRead the chapters above again and a pattern emerges: every few years the ground shifts, and I’m already standing on the new one. The agent era is no different. While the industry debated whether AI could write serious code, I was shipping with it. I don’t vibe-code; I engineer with AI, composing dedicated armies of specialized agents (planners, builders, reviewers, testers) orchestrated with the same rigor as any production system and delivering real work end to end. Increasingly, I let it run in autonomous loops: automations chaining subagents across isolated worktrees, backed by an arsenal of custom skills and connectors, each loop engineered to plan, execute, and verify its own output, so one builder ships with the throughput of a team. And because agents are only as sharp as what they know, I distill domain knowledge into vector databases and knowledge graphs (embeddings for instant recall, graphs for connected reasoning) and wire both into the fleet, so it works with your context instead of guesswork and gets smarter with everything it ingests. Every tool in this paragraph will eventually be replaced; the reflex to master what’s next first won’t. That’s what you’re really bringing on board: not a stack, a trajectory.
Every one of these systems started as a conversation. The next one might start with yours.