There's a difference between someone who writes code and someone who builds products. Both can make a button work. But one of them understands why the button should exist in the first place, where it should go, and what happens when 10,000 people click it at the same time. The gap between those two isn't technical skill — it's thinking.
Code Is the Easy Part
I know that sounds like a controversial take, especially if you're in the middle of learning and everything feels impossibly hard. But hear me out. Code is learnable. There are tutorials, documentation, Stack Overflow answers, and now AI tools that can help you write nearly anything. The mechanics of coding are a solved problem — you just need time and practice.
What's not easily taught is how to think about what you're building. How to make decisions under uncertainty. How to design systems that serve people, not just pass tests. How to look at a problem and see the solution that nobody else is seeing. That's the real skill — and it doesn't come from learning another framework.
Start With the Customer
Steve Jobs said something that I think about constantly: "You've got to start with the customer experience and work backwards to the technology. You can't start with the technology and try to figure out where you're going to sell it." Most developers do the exact opposite. They pick a tech stack, learn the framework, then try to find a problem to solve with it.
Apple's early marketing philosophy, written by Mike Markkula, had three principles. First — empathy: "We will truly understand their needs better than any other company." Second — focus: "We must eliminate all of the unimportant opportunities." Third — impute: people form opinions based on how something is presented. These aren't design principles. They're thinking principles. And they apply to every product you'll ever build.
"When you're a carpenter making a beautiful chest of drawers, you're not going to use a piece of plywood on the back, even though it faces the wall and nobody will ever see it. You'll know it's there, so you're going to use a beautiful piece of wood in the back."
That's Jobs again. And it's not about perfectionism — it's about caring at a level that shapes everything you make, even the parts nobody sees.
Freedom Requires Responsibility
Netflix's engineering culture operates on a principle they call "freedom and responsibility." Engineers have the freedom to choose their tools, their approach, even their methodology — there's no enforced development process. But that freedom comes with full ownership. You don't just write the code. You deploy it, monitor it, debug it when it breaks at 3 AM, and plan how it scales.
As Netflix puts it: "It takes an unusually responsible person to thrive on this level of freedom — someone who's self-motivated, self-aware and self-disciplined, who doesn't wait to be told what to do." That's not a description of a coder. That's a description of a builder. Someone who thinks beyond the pull request.
The Builder's Lens
Google's approach to hiring has always emphasised problem-solving ability over specific technical knowledge. They want people who can break down ambiguous problems, reason through trade-offs, and arrive at solutions that consider the full picture — users, systems, business, and scale.
- Think in users, not features — Every feature is a solution to someone's problem. If you can't articulate whose problem you're solving, you're building the wrong thing.
- Think in systems, not files — A component doesn't exist in isolation. It exists in a system with state, routing, APIs, and user flows. Understand the system before you touch the code.
- Think in outcomes, not outputs — Shipping code is an output. Helping a user accomplish their goal is an outcome. One is measurable. The other is meaningful.
How I Practice This
I study companies, not just codebases. I read about how Apple approaches product launches, how Netflix structures their engineering teams, how Stripe designs their API documentation. I study design systems, marketing psychology, business models. Not because I'm trying to become a CEO — but because all of these things make me a better builder.
Code is the tool. Thinking is the skill. And in a world where AI is getting better at the tool part every day, the developers who invest in the thinking part are the ones who will be impossible to replace.