Why Most Side Projects Never Get a Single User
Career

Why Most Side Projects Never Get a Single User

The architecture is usually fine. The database choice was probably fine too. The reason a side project never gets a single real user is almost never technical, and Paul Graham said as much back in 2013 — you have to go find them, and most builders never do.

Published February 6, 202611 min readUpdated Feb 6, 2026

Written by · Full-Stack Agentic AI Software Engineer — AI Agents, Automation & Revenue Systems for GTM/RevOps teams

In brief

Why do so many engineer-built side projects never get a single real, non-friend user?

Because the work that gets a stranger to use something isn't the work builders enjoy, and most side projects only get the work builders enjoy. Stack Overflow's 2024 Developer Survey found 68% of developers code outside work purely as a hobby — a huge population of side projects — but almost none of the public writing about why they stall points to bad code. Paul Graham's 2013 essay 'Do Things That Don't Scale' argues the founders of nearly every successful startup had to recruit users manually, one at a time, because 'you can't wait for users to come to you.' His earlier essay on startup mistakes is blunter: 'if you're going to attract users, you'll probably have to get up from your computer and go find some.' Pieter Levels' Photo AI, by contrast, went from $0 to $132,000 in monthly recurring revenue in eighteen months on the back of an audience he'd spent more than ten years building before that specific product existed. The pattern across all of it: distribution isn't a step that happens after the build. It's a different, less enjoyable kind of work that has to start before the build is finished, and most side projects skip it entirely.

  • Stack Overflow's 2024 survey: 68% of developers code outside work as a hobby, which is the population this post is about — most of that work never reaches a stranger
  • Paul Graham's 'Do Things That Don't Scale' (2013): recruiting users manually is close to universal among successful startups, and the Stripe founders' 'Collison installation' is the canonical example
  • Graham's earlier essay on startup mistakes states the blunt version directly: attracting users usually means getting up from the computer and finding them, which is unpleasant work builders skip because it isn't coding
  • Pieter Levels' Photo AI went $0 to $132K MRR in 18 months, but on top of an audience built over 10+ years — the launch looked instant because the distribution work happened long before it, not during it
  • No credible source gives a clean 'percentage of side projects that get zero users' statistic, and this post doesn't invent one — the argument holds without it

Evidence notes

Paul Graham — "Do Things That Don't Scale" (2013)

Graham argues that 'the most common unscalable thing founders have to do at the start is to recruit users manually,' citing the Stripe founders' practice — nicknamed the 'Collison installation' inside Y Combinator — of personally sitting down with anyone who agreed to try the product and setting up their account on the spot rather than sending a signup link. This is a well-known essay by Y Combinator's co-founder, not an empirical study, but it's a primary account of what actually happened inside dozens of YC startups he advised directly.

Paul Graham — "The 18 Mistakes That Kill Startups" (2006)

States plainly: 'If you're going to attract users, you'll probably have to get up from your computer and go find some. It's unpleasant work, but if you can make yourself do it you have a much greater chance of succeeding.' Same source type as above — practitioner essay, not a controlled study, but widely read and directly on point.

Stack Overflow Developer Survey 2024

Surveyed tens of thousands of developers worldwide; found 68% code outside of work as a hobby, with roughly 40% doing so for professional development or self-paced learning. Establishes the scale of the population this post is about, not a completion or launch rate specifically.

Pieter Levels — Photo AI case study (via Indie Hackers)

Photo AI, one of Pieter Levels' indie products, reportedly went from $0 to $132,000 in monthly recurring revenue within 18 months. Levels has repeatedly attributed his launches' apparent speed to an audience of 600,000+ followers built over more than a decade of public building, not to the launch itself. This is a self-reported case study amplified by Indie Hackers, not an audited financial record — treat the specific dollar figure as directionally credible, not verified.

The project is done. The architecture holds up, the tests pass, the deploy pipeline works on the first try for once. Three weeks later, the only visitor in the analytics dashboard is the builder themself, checking whether it's still up. Nobody signed up. Nobody found it. It shipped, technically, into a room with nobody in it.

This happens constantly, and it almost never happens because the code was bad. It happens because the work that gets a stranger to use something is a different discipline from the work that builds it, and most side projects only ever do the first one. I write about side projects from the build side; covers what it takes to run it. I write about side projects from the build side; XenGrowth, who work on the commercial side of this covers what it takes to run it.

The population this is actually about

Stack Overflow's 2024 Developer Survey found that 68% of developers code outside of work purely as a hobby — not for a client, not for an employer, not required by anything. That's an enormous population of side projects, most of which will never be launched to anyone who isn't already a friend of the person who built them. It's worth being precise about what isn't known here: no credible source publishes a clean completion or launch rate for side projects specifically. The '80% never finish' and '99% make zero dollars' figures that circulate on blogs about indie hacking don't trace back to an actual study — they trace back to other blogs. This post isn't going to repeat one of those and call it data.

What's actually documented is simpler and doesn't need a fabricated percentage: a huge amount of code gets written with no plan for how a stranger finds it, and the writing about why projects stall consistently points at the same gap. exists specifically because that gap is a real discipline, not a footnote you get to after the interesting part is finished.

Why abandoned repos are the wrong frame entirely

There's a related but different statistic worth separating out here: a huge share of public code repositories go untouched for years, which some writing conflates with 'side projects that failed to get users.' They're not the same failure. An abandoned repo usually means the builder lost interest, finished learning what they set out to learn, or moved to a different idea — normal and fine. The failure this post is about is narrower and more specific: a project the builder actually wanted strangers to use, that got finished, that got deployed somewhere reachable, and that nobody outside the builder's own circle ever tried. Conflating the two hides the actual lesson inside a much larger, much less interesting statistic about repository maintenance. approaches this from the the operations side of this side. The XenGrowth resource library approaches this from the the operations side of this side.

Builders optimize for the part that's fun

Choosing a database, arguing with yourself about monorepo versus separate services, picking a framework you've been wanting an excuse to try — this is enjoyable work, and it's enjoyable specifically because it has clear, satisfying feedback loops. Tests go green. The build succeeds. The API returns 200. Distribution has none of that. There is no green checkmark for 'a stranger who has never heard of you decided to try this,' and the feedback loop is slow, humiliating and mostly made of silence.

Work

Feels like

Actually determines

Choosing the stack

Progress, competence, fun

Almost nothing about whether anyone uses it

Polishing the UI before launch

Getting closer to done

Slightly better retention, for zero of the users you don't have yet

Posting once and waiting

Having 'done marketing'

Almost nothing — most posts get seen by people who already knew you

Messaging 50 specific people who have the exact problem

Uncomfortable, slow, unglamorous

Whether a single real stranger ever tries the thing

There's a reason this pattern survives contact with every generation of new developers: the fun work has a deadline you set for yourself, and the unglamorous work doesn't. Nobody's waiting for the Stripe integration to be finished. Somebody real, with a real problem, either is or isn't waiting to hear from you about whether this thing solves it — and if you never go looking for that person, there's no deadline forcing the question, so it never gets asked. Deliberate, unglamorous acquisition work at any scale is exactly what are actually about.

What Paul Graham actually said about this, twice

Paul Graham's 2013 essay 'Do Things That Don't Scale' is specifically about this failure mode, and it's worth reading the actual sentence instead of the paraphrase that circulates: 'the most common unscalable thing founders have to do at the start is to recruit users manually. Nearly all startups have to. You can't wait for users to come to you.' His example, now shorthand inside Y Combinator as the 'Collison installation,' is the Stripe founders' habit of personally sitting down with anyone who agreed to try the product and saying, in effect, give me your laptop — configuring the account themselves on the spot rather than emailing a signup link and hoping.

"If you're going to attract users, you'll probably have to get up from your computer and go find some. It's unpleasant work, but if you can make yourself do it you have a much greater chance of succeeding." — Paul Graham, "The 18 Mistakes That Kill Startups" (2006)

That essay is almost twenty years old and the advice hasn't dated at all, which should be a warning sign about how little this actually changes with each new platform. Every few years a new distribution channel gets treated as the thing that will finally make manual outreach unnecessary — a subreddit, a Product Hunt launch, a TikTok algorithm — and each one works for a handful of people and does nothing for everyone else who mistook the channel for the strategy. goes further into AI agents and marketing automation. XenGrowth on AI agents and marketing automation goes further into AI agents and marketing automation.

The Photo AI case that gets misread constantly

Pieter Levels' Photo AI is the case study people reach for when they want proof that a side project can go from nothing to real revenue fast — by one widely shared account, from $0 to roughly $132,000 in monthly recurring revenue within eighteen months. The number is real enough to take seriously, even though it's self-reported rather than audited. What gets dropped from the retelling is the part that actually explains it: Levels had spent more than a decade publicly building in the open before that specific product existed, accumulating an audience of over 600,000 followers who already trusted what he shipped. The eighteen months is the visible tip. The distribution work is the iceberg underneath it, and it started years before the product did. Building that kind of pre-existing audience is closer to what documents on the marketing side than to anything in a typical engineering roadmap.

That's the actual lesson, and it's a less satisfying one than 'ship fast and it'll find an audience.' The audience has to exist, or be built deliberately, before or alongside the build — not discovered afterward as a pleasant surprise. Treating distribution as something you'll figure out post-launch is treating the hardest, slowest part of the whole project as an afterthought, which is exactly backwards from how the people who actually get users seem to operate. Discovery specifically — how a product surfaces to someone who has never searched for it by name — is covered in more depth in .

"But I don't have an audience" is not a real objection

The Photo AI story gets used as a reason to give up before starting — if you don't already have 600,000 followers, why bother. That reads the story backwards. Levels didn't have that audience before he started building in public either; it's the compounding result of years of consistent posting about small, unglamorous, in-progress work, most of which nobody engaged with at the time. The audience is downstream of starting the unglamorous habit early, not a prerequisite for starting it. Waiting to have an audience before doing distribution work is the same mistake as waiting to have users before doing the work of finding them. If AI search, GEO and discovery is the part you are stuck on, is the better reference. If AI search, GEO and discovery is the part you are stuck on, XenGrowth on AI search, GEO and discovery is the better reference.

What people think 'no audience' means

What actually happened instead

Some people are just naturally good at marketing

Most public builders spent years posting into near-silence before anyone noticed

You need a following before people will try your product

A handful of the right strangers, messaged directly, matters more early on than any follower count

Distribution is a skill you either have or don't

It's closer to a habit — posting, messaging, asking — practiced consistently long before it's needed

Waiting until the product is polished is the safe move

Waiting is what turns 'not ready yet' into 'never asked anyone'

What to actually do differently

  1. Find the first ten users before the product is finished, not after. A rough version shown to someone with the actual problem beats a polished one shown to nobody

  2. Message people directly instead of posting and waiting. A single specific DM to someone with the exact problem outperforms a broadcast post almost every time, because it can't be scrolled past

  3. Treat the discomfort as the signal, not the obstacle. If reaching out to strangers feels unpleasant, that's consistent with Graham's own description of the work — it being uncomfortable isn't evidence you're doing it wrong

  4. Start the audience-building separately from the specific product. Levels' pattern only looks instant because the audience predates the product by years; there's no shortcut that skips that sequencing

  5. Stop mistaking a launch channel for a strategy. Product Hunt, Hacker News and a good subreddit post can each work once. None of them replace finding the first users manually

None of this is an argument that the build doesn't matter. A broken product will lose the ten users you fought to get, fast. But a perfect one, built for nobody in particular and shown to nobody in particular, never gets the chance to lose them, because it never had them. The architecture was never the hard part. Getting a stranger to care was, and still is.

It's also worth saying plainly what this isn't: a claim that every unshipped side project represents wasted effort. Plenty of them exist to teach the builder something — a new language, a pattern, an API worth understanding before using it at work. Those projects were never meant to have users, and judging them by that standard is a category error. The failure mode this post is actually about is the project built with the explicit hope of real strangers using it, where the builder then spends every hour on the architecture and none on finding those strangers, and is later surprised when none show up. That surprise is the tell. If getting users mattered to you, it would have shown up in how you spent your time, not just in what you hoped for at the end.

Further reading from XenGrowth

Where this work meets go-to-market

Getting a side project its first real users is a small, unglamorous version of the same problem larger companies pay teams to solve at scale. publishes operator guides on that discipline for teams who've outgrown doing it one message at a time.

Further reading from XenGrowth

Where this work meets go-to-market

For the marketing and revenue operations view of side projects, see .

Further reading from XenGrowth

Where this work meets go-to-market

For the marketing and revenue operations view of side projects, see XenGrowth's growth operations team.

The distribution problem, tested

Five questions on the sources behind this post's argument. If you've shipped a side project into silence before, the explanations below are probably more useful than the questions.

1 / 5
Per the 2024 Stack Overflow Developer Survey, what share of developers code outside of work purely as a hobby?

Apply this article

How to turn insights into execution

A practical sequence for teams turning concepts into production outcomes.

CareersSide ProjectsIndie HackingDistributionFoundersProductcareer

Audit your current state

Map the bottlenecks and constraints connected to the article’s core problem.

Choose one bounded change

Test the most useful recommendation on one workflow before widening the scope.

Measure what changed

Keep the parts that improve the work, document what failed, and make the next decision from evidence.

Next step

Need help applying this in your stack?

I can translate these patterns into a concrete implementation plan for your team.

Discuss implementationBack to blog

Replies usually within 24 hours.

Next Steps

Continue reading

Product Thinking Is What Will Separate Engineers

When building gets cheap, building the wrong thing gets cheap too — and you now do it faster and in greater volume. The famous claim that 64% of features are rarely or never used is weaker than people think, but the direction it points is the whole argument.

Navigate

How Engineers Can Sell Without Becoming Salespeople

Gartner's 2025 buyer survey found 61% of B2B buyers would rather never talk to a sales rep at all. That's not bad news for an engineer who has to sell their own work — it's the entire opening. Credibility does what a pitch can't.

Navigate

Will AI Cut Engineering Jobs, or Multiply Their Leverage?

Both answers are already true, for different people. The payroll data shows a 19% employment gap opening for 22-to-25-year-olds in AI-exposed jobs while experienced workers show no gap at all. That split is the actual story, and it is not the one either side of the argument is telling.

Navigate

What to Learn When AI Can Already Write the Code

The useful question isn't what AI can do — it's what it structurally cannot. Veracode ran 100+ models across 80 tasks and 45% of the output carried an OWASP Top 10 vulnerability, with larger models no better than small ones. That failure has a shape, and the shape tells you what to learn.

Navigate

Are Junior Developer Jobs Disappearing? What the Data Says

Entry-level hiring at the tech majors is down 65% since 2019 and Stanford measures a 19% employment gap for 22-to-25-year-olds. But an LSE paper covering 243 million hires found that when you control for remote work, the AI effect largely vanishes. The cause matters, because the two have opposite fixes.

Navigate

What Sleep Debt Does to Engineering Judgment

The finding that should worry you isn't that six hours of sleep degrades performance. It's that in the study which established it, subjective sleepiness stopped tracking objective decline — the impaired group did not know they were impaired.

Navigate

The Software Engineer of 2030 Will Look Different

Most predictions about this are unfalsifiable, so here are five that aren't. Each one names what would have to be true, and what evidence would prove it wrong — including the two I think are most likely to age badly.

Navigate
  • What Should a Technical Founder Not Build Themselves?

    Rob Walling ran the numbers on this back in 2008: 348 hours to build what you could buy at roughly 20% of the cost. The pull to build it yourself is strongest exactly where it's most expensive — payments, auth, email deliverability — because those are the parts that feel like real engineering.

  • What Sitting All Day Actually Does to You

    The honest version is less alarming and more actionable than the headlines. WHO looked at the evidence in 2020 and declined to set a sitting threshold at all — but a million-person meta-analysis found something much more useful about what offsets it.

  • What Happens When One Engineer Does the Work of Five?

    The claim gets made constantly and almost never with a number attached. When someone did attach numbers — METR's randomized trial — experienced developers came out 19% slower while believing they were 20% faster. But suppose the claim were true. The consequences are stranger than the people making it seem to expect.