Skip to main content

How to build anything

Matt Palmer

Matt Palmer

DevRel & Product

@mattyp

There's a disparity in the AI coding narrative — some claim it's a distraction,

while data seems to indicate the opposite.

These are not mutually exclusive — some see new possibilities, while others see a pile of discarded projects.

The difference is two key characteristics — and they're the same skills that make a good manager.

Opinionatedness

To create something great, you have to know what you want. A valid alternative is knowing how to figure out what you want.

That means being opinionated or having the agency to form an opinion.

The best product thinkers have 10 things they would change about every app. The best builders are exactly the same.

Product direction is much more important than speed — you can take a flight from Dallas to Austin, but I can arrive faster in a car if you stop in New York.

Vibe coding makes it easy to get distracted and create 10 half-baked apps instead 1 fully-baked app, which is why most vibe coded portfolios end up looking like Sid's bedroom.

Sid's bedroom from Toy Story

Sid's bedroom from Toy Story — this terrified me as a child and is still a bit off-putting. Sorry for including this image, but it makes a point.

Agents can not yet fix discipline & focus.

Knowing what you want and having strong opinions about how to get there is the first step to building anything great — which isn't to say you need to have that figured out when you start, but you need to know how to figure it out.

The first thing I ask someone struggling with AI is "tell me exactly what you want."

You'd be shocked at how few people can answer.

Once you know what you want, success is breaking it down it into concrete steps & expressing each in a way a computer understands.

That comes down to vocabulary.

Vocabulary

It's pretty annoying to spend days on a small feature. It's more annoying to spend days on a small feature that was already built by someone else.

If you have a problem, it's very likely someone else has had the exact same problem. In 50+ years of software, it's also pretty likely someone has documented how to solve it.

So your job as a manager of agents, is to find the largest level of granularity possible at which that solution exists, then direct your agent to it.

Your ability to research, pattern-match, and use the right vocabulary is the difference between weeks and hours of work — that's not an exaggeration.

You can't build your way out of a bad vocabulary.

A carousel is a UI component that displays multiple items within a single, horizontally scrolling area.

Perhaps some of you have tried building a carousel from scratch... I'm sorry if you have. The exercise is not fun, buggy, much more difficult than "use embla carousel." But if you had no idea what a carousel was, it's not hard to imagine asking an agent "build me a horizontal scroll-y thing that shows a bunch of items." If you do this, you'll quickly realize: it's non-performant, it takes a really long time to get it "just right," and it will inexplicably break while adding an unrelated feature in three weeks.

The same way that it's easier to explain a Monet if you've studied art, it's much easier to build apps when you know the building blocks.

This ease compounds. Using the right foundation prevents tech debt and reinforces patterns. Knowing the primitives, you can move exponentially faster.

Water Lilies by Claude Monet, 1914-1917

Water Lilies, 1914–1917 — Claude Monet (the true GOAT Claude)

Resources like component.gallery are great for learning these primitives — as are following other designers & builders on X, but nothing beats getting your hands dirty and learning the hard way.

When people ask how I know what I do, the answer is some combination of: trying, failing, observing, & stealing.

These examples are most salient in frontend apps, but it's true for every type of problem — if you can understand what exists then map those components to your vision, you'll be able to create more, faster.

It all starts with building your vocabulary.

How to build anything

To build anything, you have to be opinionated (or form an opinion) and immerse yourself in the vocabulary (and history) of the thing you want to build.

You also need good opinions, which is a bit harder to teach.

Funny enough, these skills are the same that make excellent leaders — the ability to keep a team focused, understand shortcuts & tradeoffs, and learn a problem space.

Elon Musk had no aerospace training, yet he engaged in intense self-study, read textbooks, and consulted experts to gain a deep understanding of rocket science. He thought from first principles and pattern-matched his way to the most valuable space company in history — SpaceX. @elonmusk would be a great vibe coder, because he's willing to learn the vocabulary & be opinionated... He's a great builder.

@tobi is a great vibe coder — for exactly the same reasons.

Being a "builder" applies to both apps & companies. Good vibe coding is just good engineering & good management — it's good "building."

To do both, you need opinions and a good vocabulary.

weekly learnings