I’ve been a software engineer for the past three years and every couple weeks I have the same conversation with a new smart and ambitious friend. It usually goes something like this:

These people don't want to be full-time engineers. Instead, they want to build successful products.

They want to launch an app for scheduling local events. They want to build a social network for close friends. They want to create a service that sends you a positive message every morning.

With no-code tools like Webflow, Zapier, and AirTable, you can validate product ideas without a single line of code.

As a result, the constraint for building successful products isn’t technical implementation. The constraint is learning to build something people want.

In my time building products at Instacart, Dharma, and Career Karma, I've learned three main principles for building successful products:

  1. Understand what customers want
  2. Build iteratively
  3. Get 100 customers that love your product

Let’s explore each.

Understand what customers want

One of the hardest parts about product development is figuring out what people want. For example, when I joined my previous startup, Dharma, the team decided to launch a feature where any Dharma user could use our app to send money to a Twitter username. The Twitter user could then download our app to claim their funds.

We imagined potential use cases - sending money to nonprofits, rewarding meme accounts for viral tweets, funding an influencer’s side project, and more. So we spent the next month heads down building the feature. After some initial hype, only a handful of users continued using it.

Paul Graham calls these types of ideas “sitcom ideas”. He explains:

“Imagine one of the characters on a TV show was starting a startup. The writers would have to invent something for it to do. But coming up with good startup ideas is hard. It's not something you can do for the asking. So (unless they got amazingly lucky) the writers would come up with an idea that sounded plausible, but was actually bad.”

Great product ideas don’t come from brainstorming plausible ideas, they come from noticing problems in your own life. For example, if you want to build a consumer social app, notice what annoys you while using existing social apps.

“I wish YouTube live streams were more interactive.”

“I wish it was easier to display my past Twitter threads.”

“I wish this subreddit had a member directory.”

Most successful startup founders started by solving a problem they faced themselves. In many cases, other people face this problem too.

After noticing problems in your daily life, it’s useful to speak to potential customers. Many people fall into the trap of asking questions like:

  • “What do you think of my idea?”
  • “Would you ever use it?”

These are bad questions because people are usually too nice to criticize your idea. It’s like telling someone their baby is ugly.

Instead, early customer conversations should give you concrete facts about your customers’ lives and world views. To do this, ask about specifics in the past instead of opinions

about the future. This ensures you’re solving a problem they’re actually facing.

Here are a few sample questions:

  • "What are your current goals and pain points right now? Why?"
  • "How are you dealing with this problem now?"
  • "Have you ever paid for it? What’s your budget?"

Ultimately, the best validation you can get is paying customers. See if you can get customers to pre-order your product for a discount.

We used these customer development principles to turn Dharma around.

After launching the Twitter payments feature, we went back to the drawing board. Upon some reflection, our team realized there wasn’t a mobile app for trading tokens in the decentralized finance (DeFi) space. We all wished there was an app with features like searching based on filters, automated purchases, price charts, etc.

We spoke to a few customers and some of them already developed their own hacky solutions. For example, one customer set a daily alarm to remind himself to buy a certain token each day. As we built these features over the next few months, our growth exploded and continues today.

Great product ideas come from observing real-world problems, not brainstorming plausible ideas.

Instead of writing code:

  • Use your favorite apps and note any features you wish they had
  • After noticing a problem in your life that could be solved by software, write it down somewhere
  • Understand pain points for customers in industries you find interesting

Build iteratively

At 24, Apoorva Mehta quit his job as a software engineer at Amazon to work on a few startup ideas. After two years, he was lonely, depressed, and going broke. He spent six months working on a social network for lawyers only to realize nobody wanted to use it.

After reflecting on how much of a pain it was to go grocery shopping while growing up in snowy Toronto, he built a product for delivering groceries to your door. But instead of spending another six months building a polished product, he asked a few friends if they’d be willing to pay him to deliver their groceries. He received text messages from friends with their grocery list, shopped the items himself, and delivered it to their doorsteps.

Soon, he became overwhelmed with orders. He spent the next few weeks hiring contractors to help complete the deliveries. Without writing a line of code, he gained enough traction to convince himself it was worth building an app.

Instead of taking months to build an automated and scalable solution, Apoorva made small incremental improvements until it became what it is today - Instacart.

Iterative product development is about shipping the simplest version of the product that can be tested with customers. Many products fail because they take too long building a complex version of the product.

For example, if someone asked you to build a product that helped them get from point A to point B, you may take this approach.


The issue here is that it takes too long for the customer to give feedback on the product. Maybe the finished product is too expensive. Maybe it’s too complex to use. Maybe it doesn’t work the way the customer needs it to.

Instead, ship the earliest testable product. Here’s what it could look like for a product that helps someone get from point A to point B:


With this approach, the feedback loop between what you build and what the customer wants is much tighter. This ensures you build exactly what they want.

Today, it’s easier than ever to build iteratively. Most product ideas can be validated with a landing page and no-code tools.

Instead of writing code:

  • Learn how to create a landing page using Webflow
  • Test ideas using no-code tools like Zapier and AirTable
  • Understand UX/UI principles for creating simple and delightful experiences

Get 100 customers that love your product

In 2017, Breaking Into Startups was one of the most popular tech career podcasts. They had a Facebook Group with 10,000 members but engagement was low. Many posts didn’t receive any responses which caused members to stop posting and slowed down growth. The founders had a choice - try to grow the existing business or create a new one.

In the early stages of building a product, you can either build something a lot of people kinda want or build something a few people really want. Let’s call these two strategies the Garden and the Well.

Most successful products follow the Well strategy. For example, Facebook started as a social network for Harvard students. AirBnB started as a website for renting airbeds during conferences. Uber started as a premium black car service.

The Well strategy works because it allows you to focus your product. When done right, the customer feels like the product was made exclusively for them. As a result, customers have a great experience and tell their friends which drives growth.

Given this, the Breaking Into Startups founders decided to start a new company called Career Karma. They sharpened their focus to be the best product for helping people get into coding bootcamps. Instead of spending months coding an app, they created a group chat with customers, provided 24/7 support, and held weekly Q&A town halls to answer questions.

After a few weeks, their early customers began getting accepted into bootcamps and raved about the experience to their friends. With just 100 customers that loved them, Career Karma was able to secure funding to hire engineers to build the first version of the app.

Many times, the hardest part of building a successful product is getting your first 100 customers that love you. Career Karma was able to tap into their Breaking Into Startups community for early beta testers which gave them an unfair advantage early on. Likewise, think about how you can begin to develop a community of potential customers.

Instead of writing code:

  • Build an online audience through social media, a newsletter, or podcast
  • Become an active member of online communities (e.g., Product Hunt, Hacker News, Twitter, Slack, Discord, Reddit, FB Groups, Indie Hackers)
  • Manually recruit your first 100 customers through cold outreach and high-touch onboarding

Where to go from here

If you’re like my smart and ambitious friends with endless product ideas in the Notes section of your phone, don’t start by writing code. Instead, learn to quickly validate product ideas.

Understand what customers want. Build iteratively. Get 100 customers that love your product.

The best place to start is by working on projects. Challenge yourself to launch something in a few days that gets 100 customers. Then do it again. The key is to move quickly and test ideas with real customers. That’s the foundation for a successful product.


Thank you to the Compound Writing members who reviewed this post: Drew Stegmaier, Adam Tank, Joel Christiansen, and Stew Fortier.

Dec 17, 2020

More from 



View All

Subscribe for new posts every week.

No spam ever. Read our Privacy Policy
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.