Product · AI · Building·9 min read·2024

    You don't need to know how to code to build something real. But you need to know how to think.

    For a long time, "I can't code" was a genuine barrier to building software.

    You had an idea, you could see exactly how it should work, you understood the problem — and none of that mattered because you couldn't write the syntax to make it real. You either found a technical co-founder, hired someone, or watched the idea sit in a notebook.

    That constraint no longer exists in the same way.

    What exists now is a different constraint, and most people haven't fully understood it yet: the quality of your thinking determines the quality of what gets built — not your ability to write code. Modern AI can handle the implementation. What it can't do is understand your user, define the real problem, or make the tradeoffs that require judgment. Those are still yours.

    Start with the problem, not the feature

    The most common mistake is jumping straight to the solution.

    "I need a login system." "I want a dashboard." "Build me an app where users can save things."

    These prompts produce code. They don't produce products. Because they skip the question that actually matters: what problem are we solving for which specific person, and why does it need solving now?

    When I'm starting something new, I anchor to three things before touching any tool:

    The problem. Not "I want to build X" but "person Y is dealing with Z, and the current solutions are inadequate because..." This isn't a positioning exercise. It's a filter for every decision that follows. When the AI suggests five different implementation approaches, the problem definition tells you which one to pick.

    The outcome. What does success look like for the user — not for the product? If you can't describe a before and after in concrete terms, you're not ready to build yet.

    The constraint. What will you deliberately not build? The features you cut are as important as the ones you include. An AI will happily add complexity if you let it. The discipline of saying "out of scope" is entirely yours.

    Get these three things clear before writing a single prompt. You'll save yourself hours of building in the wrong direction.


    The prompt is a design document

    Most people treat AI prompts as commands. "Do this." "Build that." "Add a button."

    The prompts that produce good software read more like design briefs. They describe the user's experience, not the technical requirement. They explain the why, not just the what. They specify what "working" looks like from a user perspective, not just a functional one.

    Compare these:

    *Weak:* "I need a login system."

    *Better:* "Users need to save their progress between sessions. I don't want to ask them to create another password — they already have too many. Google or Apple sign-in would be enough."

    *Even better:* "The user I'm building for is already overwhelmed. The login should feel invisible — three seconds, one click, and they're in. Friction here will kill usage. Google OAuth makes sense."

    The last version gives the AI context it can actually use. It makes the architectural decision (OAuth, not custom login) obvious from the user's reality, not from technical preference. And when the AI produces something that doesn't fit, you have a clear standard to evaluate against: does this feel invisible to an overwhelmed user?

    This is what senior engineers actually do. They don't jump to implementation. They interrogate the requirement until the tradeoffs become visible, then make deliberate choices. Vibe coding forces you into the same discipline — not because it's methodologically virtuous, but because unclear prompts produce unusable output.


    Let the AI surface what you haven't thought about

    One of the most useful things you can do in early sessions is ask the AI to ask you questions.

    "Before building this, what should I have defined that I haven't?"

    "What edge cases am I not accounting for?"

    "What assumptions am I making that could be wrong?"

    The answers will surface constraints and decisions you genuinely hadn't considered. What happens if a user's account gets deleted? Should shared links expire? Do you need to track who viewed what? These aren't abstract technical questions — each one has a real implication for your users and your product behaviour.

    Your job is to evaluate each question through the lens of the person you're building for. Some of those edge cases won't matter for your context. Some will matter enormously. The AI can't know which is which. You can.


    Build in small pieces and test with real intent

    The natural instinct is to specify everything upfront, get the AI to build it all, and then test. This is the wrong order.

    Build the smallest possible version of one piece. Test it — not "does it function" but "does this actually solve what I said it would solve for the user I described?" Then build the next piece.

    The reason isn't just iteration speed. It's that small increments expose bad assumptions before they compound. A login flow that technically works but creates three unnecessary steps for a user who's already overwhelmed — you'll catch that in testing if you build it alone first. If you build it as part of a larger system, you won't notice until everything is already entangled.

    Show early versions to someone who matches your user description. Watch them interact with it without explaining anything. Every moment of confusion is data. Every workaround they invent is information about what you got wrong.


    What the AI can't do for you

    This is worth being explicit about, because the enthusiasm around AI-assisted building sometimes creates the impression that the judgment layer is optional.

    It isn't.

    The AI will implement what you describe. It won't tell you whether what you're building is worth building. It won't notice that your technical solution solves a slightly different problem than the one your users actually have. It won't flag that the feature you're adding is pulling the product in two directions at once.

    That's all yours. And it requires being honest with yourself — not just capable with prompts.

    I've seen people build technically functional prototypes that nobody used, because the thinking before the building was shallow. The AI did exactly what it was asked. The asking was wrong.

    The skill this approach develops isn't really coding. It's product thinking: the ability to stay close to the real problem, make deliberate tradeoffs, and test assumptions early enough that bad ones don't become load-bearing.


    When to bring in a developer

    Vibe coding is the right tool for a specific stage: getting from idea to something real that you can put in front of people.

    Once you have paying users who depend on the product, you're handling sensitive data, or you need to scale beyond the prototype — you need professional engineering. Not because the AI-assisted approach fails, but because that stage has requirements (reliability, security, performance under load) that require a different kind of discipline.

    Reaching that point is a good problem to have. It means the thinking worked. The prototype validated something real. Now you're building something that actually needs to last.


    The honest version of this

    A few years ago, I would have described myself as a technical founder by necessity — not by preference. I could build, but the building was often the part I liked least. What I actually wanted was to be close to the problem, understand the system, and make good decisions about what to build and why.

    AI-assisted development has made that more possible than it's ever been. Not because the technical layer disappeared — it didn't — but because the threshold for translating a clear thought into a working thing is lower than it's ever been.

    The constraint that remains — and it's a real one — is clarity of thought. Understanding the problem. Defining the user. Making deliberate tradeoffs. Staying honest about whether what you're building is actually solving what you said it would solve.

    Those things were always the job. They're just more obviously the job now.

    *If you're starting with this approach, the single most useful thing you can do before your first prompt is write down: who is this for, what specific problem are they experiencing, and what does success look like for them — not for the product. Everything else follows from that.*

    Want to follow what I learn along the way?

    I write about the challenges, decisions and lessons of building projects, including the resources and methods that have helped me. Subscribe and get the next articles straight in your inbox.

    No spam. Unsubscribe any time. Privacy