What Ownership Looks Like When You Lose the Argument
You fought for a clear spec and lost. The work still needs to happen. Here is what ownership looks like when the process does not go your way.
Read →Nine years finding the missing wires.
The right architecture doesn't fail silently. Missing connections do. I instrument before I build, fix root causes before I patch, and wire prevention into CI so the same bug can't ship twice.
Architecture owner for a Vue 3 / Nuxt platform. Drove a Nuxt 4 migration to Feature-Sliced Design to enforce clear ownership boundaries. Established a token-driven design system over PrimeVue. Introduced structured observability with Mixpanel and Sentry.
Owned an ATS funnel processing 400K applications a year. Took completion from 39% to 65% — instrumenting first, measuring drop-off, forming hypotheses, shipping fixes, confirming with data. Built the shared UI component library. Proxify Quality Award 2024.
Primary React/TypeScript owner for client SPAs and dashboards. Made performance regressions visible before they reached users. Built backend utilities with Node.js and AWS Lambda.
Agree on API and data shapes before building screens. Generate types, mock early, keep a contract check in CI.
Own one slice end to end — from user goal to contract, UI states, monitoring, and a calm rollout plan.
Linting, tests, and performance checks live in CI — every change, not only before releases.
Ask precise questions, write short docs, make trade-offs visible so others can decide with you.
Claude Code as a configured system. CLAUDE.md encodes stop rules and constraints. Hooks enforce what CLAUDE.md requests. The loop improves itself.
14 ADRs from production — a 400K-application ATS, a German legal-tech platform, agentic tooling. Start with the reversals.
The team wanted to redesign screens. I refused scope until we could measure where users dropped. Instrumentation first, hypotheses second, UX changes third.
Code review culture had plateaued. Wired SonarQube and semantic release into CI so quality became structural, not cultural.
What I got wrong, what changed my mind, what the second version looked like. Read this one first.
Read ADR →8-step subscription wizard. Typed funnel events — a wrong event name is a compile error. Flag-gated A/B test from PostHog through Stripe, with a /insights page reading live telemetry back in-app.
12 ADRs documenting every decision. Three AI suggestions documented and rejected. Selective imports cut the JS bundle by half.
Traced 14 production-class failures. Cross-tenant cache poisoning, float() on money, fail-open auth exposing real client data. CI now blocks the whole class.
Next.js app showing data fetching, caching, loading states, and error paths with SWR and a complete quality setup.
You fought for a clear spec and lost. The work still needs to happen. Here is what ownership looks like when the process does not go your way.
Read →Contract-first development isn't process overhead. Here's what happens when you skip it, and why it matters even more when AI agents are writing your code.
Read →A debug exercise with 3 reported bugs turned into 50 findings with one root cause. Here's what 14 fixes taught me about trust, patterns, and knowing when to stop.
Read →Vague tickets become production bugs when AI agents write the code. Here's the 5-part template that makes tickets agent-ready before a single line is written.
Read →Failures are feedback from the system.
Read →The discipline behind saying no the right way.
Read →How one clear owner prevents features from scattering.
Read →Catch drift early, before users feel it
Read →Agree the shape once. Generate types. Mock. Guard in CI.
Read →Reader takeaway: how to turn a fuzzy “add city” ask into a safe first release you can extend.
Read →Based in EU time zones. Open to senior and staff product engineer roles at product companies. Let's talk.