Blog

Notes on product engineering, architecture, design systems, and building Vuesion.
I Design Software by Pretending to Be the Code
August 27, 2026 · Johannes Werner

I Design Software by Pretending to Be the Code

When I struggle to understand a system, I stop looking at it from the outside. I pretend to be part of it. It sounds strange, but it helps me find responsibilities, boundaries and simpler solutions.
I Asked Codex to Add a Real Feature to Vuesion
August 26, 2026 · Johannes Werner

I Asked Codex to Add a Real Feature to Vuesion

I gave Codex a short prompt to add workspace ownership transfer to Vuesion. It had to understand the existing domain, authorization, UI, tests and architecture without being told how to implement any of it.
Start With What You Don't Know
August 25, 2026 · Johannes Werner

Start With What You Don't Know

When you're not sure whether the hardest part of a product will work, don't start by building the easy parts. Start by turning uncertainty into knowledge.
The Cost of Solving Problems You Don't Have
August 24, 2026 · Johannes Werner

The Cost of Solving Problems You Don't Have

Why complexity is sometimes exactly what a product needs, and sometimes just the result of solving a problem that never existed.
Automate the Pattern, Not the Typing
August 23, 2026 · Johannes Werner

Automate the Pattern, Not the Typing

Why good code generation is not about saving keystrokes, when a pattern is ready to be automated, and why automation should remove decisions we've already made and not the thinking engineers still need to do.
Something Is Easier to Change Than It Is to Create
August 22, 2026 · Johannes Werner

Something Is Easier to Change Than It Is to Create

Why I prefer starting with an imperfect version 1, what makes decisions cheap to change, and why the real goal is getting to a better version 2.
I Gave Codex a Figma Design. One Short Prompt Was Enough.
August 21, 2026 · Johannes Werner

I Gave Codex a Figma Design. One Short Prompt Was Enough.

I gave Codex two Figma links and almost no implementation instructions. It figured out the component, props, layouts, spacing, i18n, tests, and Storybook implementation on its own.
The Best Engineering Teams Are Quiet
August 20, 2026 · Johannes Werner

The Best Engineering Teams Are Quiet

Why shared conventions, collective decisions and clear expectations create more autonomy, not less.
The Label in Figma Should Match the Column in the Database
August 19, 2026 · Johannes Werner

The Label in Figma Should Match the Column in the Database

Why product teams should share one domain language from customer conversations to design, code and data.
What Happens When You Optimize for Consistency Long Enough
August 18, 2026 · Johannes Werner

What Happens When You Optimize for Consistency Long Enough

Eight years of removing repeated decisions, reducing communication overhead and turning consistency into automation.
Vuesion
August 17, 2026 · Johannes Werner

Why Vuesion Is No Longer Open Source

Why I decided to turn Vuesion into a commercial product, what changed, and what this means for its future.