I wanted to understand the whole stack a store runs on — not the marketing layer, the actual one. So I built a Shopify theme from an empty directory: the section schema, the Liquid templates, the cart logic, the checkout hand-off. All of it, by hand.
It’s the kind of thing you can’t really learn from a slide. You feel every decision — where the data lives, what renders on the server, what has to wait for the client, and exactly how much of a page’s weight is stuff nobody asked for.
The rule: nothing the page doesn’t need
I gave myself one constraint — a strict performance budget — and let it settle every argument. Every script, font and image had to earn its place against the load time. It’s remarkable how much of a “normal” store turns out to be optional once you make speed non-negotiable.
Fast is a feature you have to defend on every commit.
Why bother, as a PM?
Because I make sharper calls when I’ve felt the trade-offs myself. Knowing what’s cheap and what’s expensive on a storefront changes how I scope, how I estimate, and how much I trust an “it’s basically free” in a planning meeting. Building the thing is still the best way I know to understand it.