How I approach a new feature
When I pick up a new feature, I try not to start with a solution. I start with a problem statement I can say in two sentences: who the user is, what they’re trying to do, what’s painful today, and what “better” looks like in observable terms. Then I define success in a measurable way, even if it’s rough — activation, conversion, error rate, time to ship.
The anti-patterns I avoid are solution-first (“we need a new screen”), tech-first (“we need AI here”), and effort-first (“we can build X quickly”).
Next I map what already exists: adjacent flows, data models, permissions, UI patterns, tests. The question is always what’s the smallest change that creates value — the minimal end-to-end slice, not the minimal component. I’d rather ship a thin vertical slice than build “platform first.”
Then I plan in slices, risk-first. Each slice should be demoable and de-risk the hardest unknown: a spike to prove feasibility, an MVP that’s a real user flow end to end, then hardening (observability, edge cases, accessibility, performance, security), then iteration.
AI fits in as an accelerator, not a substitute for thinking. It’s great for reading unfamiliar code, scaffolding tests, drafting refactors, exploring APIs. But I still own correctness, failure modes, and long-term operability. When the feature itself uses a model, I treat model behavior as a dependency with contracts, guardrails, and evals, and I design for failure: graceful degradation, fallbacks, and grounding to cut hallucinations.
A lot of the work is communication. With PMs I align on scope and tradeoffs; with design I converge on real states and edge cases; with other engineers I agree on contracts and boundaries; with leads I bring a de-risk and rollout plan. Short async write-ups beat long meetings: problem, proposed slice, risks, and the one decision I need.
Then rollout and iteration: feature flags and staged rollout, a rollback strategy, and a decision about what I’ll actually look at 24 hours, 7 days, and 30 days after launch. It’s not really shipped until I can maintain it after it ships.