The side project is where most products start. The gap between a weekend hack and something people pay for is filled with uncomfortable decisions, boring work, and a fundamental shift in how you think about what you’re building.

Key Milestones

  • Week 1-2: Scratch your own itch. Build the smallest thing that solves your problem.
  • Week 3-4: Share with 5 people who have the same problem. Listen more than you talk.
  • Month 2: Someone asks if they can pay for it. Say yes, even if it’s rough.
  • Month 3: Charge real money. Set a price that makes you slightly uncomfortable.
  • Month 4-6: Decide: commit or kill. In-between is the danger zone.
  • Month 6+: If you’re growing, start thinking about team, scale, and sustainability.

The Pricing Model

Don’t overthink pricing early. Start simple:

TIERS = {
    "free": {
        "price": 0,
        "limits": {"queries": 100, "storage": "100MB"},
    },
    "pro": {
        "price": 19,
        "limits": {"queries": 10000, "storage": "10GB"},
    },
    "team": {
        "price": 49,
        "limits": {"queries": "unlimited", "storage": "100GB"},
    },
}

def get_tier_usage(tier: str, usage: dict) -> dict:
    limits = TIERS[tier]["limits"]
    return {
        feature: f"{usage[feature]}/{limit}"
        for feature, limit in limits.items()
    }

The Mindset Shift

Building a side project is about exploration. Building a product is about commitment. You stop chasing interesting technical problems and start solving user problems — even when the solution is boring.

The hardest part isn’t the code. It’s answering the question: “Am I willing to work on this for the next three years?” If the answer is yes, you have a product. If not, enjoy the side project — there’s no shame in that.