Devlog: shipping this portfolio with an AI pair
Four months shipping this site with an AI beside me. The honest debrief: where it made me 10× faster, where it made me slower, and the one habit that changed everything.
This site is the most extensive thing I’ve built with an AI pair sitting alongside me throughout. Not Copilot suggestions in passing — full multi-turn collaboration on architecture, design, copy, and the decisions that get it shipped.
Here’s the honest debrief, before I forget the texture of it.
Where the AI pair was a force multiplier
Schema design. Defining the Post, Project, and Service types up front, then iterating on field names with a model that pushes back on inconsistencies, saved hours of back-and-forth later. Each rename gets propagated everywhere immediately.
Animation choreography. “Stagger this list, fade-in-up, respect prefers-reduced-motion” — a one-liner becomes 30 lines of working code that I would have written in 20 minutes. The AI writes it in 20 seconds.
Translation parity. EN ↔ FR for the entire site, including the tricky tone calls. A model that can read both versions side-by-side catches the awkward literal translations I’d miss.
Boilerplate that I know how to write but hate writing. Form validation schemas, Zod definitions, OpenAPI hand-wiring.
Where it slowed me down
Visual taste. A model can describe a layout, but it can’t see it the way I do. Every “let me try a bento grid” suggestion needed me to actually look at the result and say no. Three iterations to land where my eye said one would have been enough.
Over-engineering by default. Models love abstractions. They’ll happily add a factory pattern when a function would do. I keep a “delete this” pass at the end of every session.
Voice. Marketing copy in the model’s default tone is always 15% too cheerful. Every paragraph of the site has been at least re-tightened, sometimes rewritten. The model gets the structure right; I get the voice right.
What I changed in my workflow
- I now write specifications, not prompts. Three sentences of constraints, then “implement this.” The model is much better at executing than at choosing.
- I review every diff, every time. The day I stop is the day a subtle bug ships.
- I use the AI more for branching exploration (“show me three variations of this card layout”) than for committed work.
The honest takeaway
AI pairing changed the type of work I do, not just the speed. I spend more time on taste, architecture, and copy — less time on syntax and boilerplate. That’s the trade I want.
If you’re still treating it like fancy autocomplete, you’re leaving most of the value on the table. If you’re treating it like a teammate that doesn’t need supervision, you’re going to ship something embarrassing.
That middle ground isn’t a compromise. It’s where the actual engineering judgment lives.