Posted on 6 mins read

A software developer has, in theory, the ability to walk into an outhouse with an old laptop and emerge a few days later with something worth millions of dollars. If you can build software, you can create value out of thin air. Software has no material components.

It’s been rightly pointed out that software does have material components, namely a working computer, which over half the world doesn’t have at home. What I mean is that software has no material cost per unit. Once you’ve built the software, you can reproduce it indefinitely without further expense.

However, it rarely works out like this. Most side projects never make a single dollar, let alone compensate the developer for their time, let alone create any income on top of that. Why is this the case?

Some would say it’s about having the right idea, being smart, or working hard. None of this is true. The millionaire software tycoons of the world are no smarter or more hardworking than you. They don’t even have better ideas—in fact, their “ideas” routinely run high-functioning companies into the ground. Many of them are considerably less smart, hardworking, and innovative than you are.

Others say it’s about finding the right market. This is closer to the truth. A significant percentage of the world’s business is conducted via spreadsheets emailed back and forth as email attachments. Much of it is less structured than that. Some of it depends on fax. The world still has a vast appetite for software, and most developers don’t know where that appetite is strongest.

But that’s not the whole story. You may learn there’s a desperate need for up-to-date software in the landscape supply industry, but what are you going to do about it if you’ve never worked in landscaping? You could apply yourself to market research and try to figure things out, but it will be years before you have any intuition for the pain points your software should solve. You’ll almost always be more efficient solving problems you’re intimately familiar with.

This is the first big problem of software entrepreneurship. The common denominator all developers share is (obviously) software development. And since developers understand the developer market, they tend to come up with business ideas that are relevant to developers. As a result, the “software for developers” market is anomalously well-served. If there were a “wooden tools for carpenters” market, I’d expect that to be saturated as well.

Most software opportunities are located outside of tech. But most software workers haven’t had a career outside of tech.

The second biggest commonality among developers is the life experience of a middle-class urban office worker. This entails a lot of bland consumer problems, like getting stuck in traffic, finding affordable housing, feeling isolated, and filling a few hours of free time each day. This gave us Zoom, Zillow, Facebook, and Netflix, respectively, plus several competitors in each category. The success of these companies is deceptive; for every Facebook and Netflix, there are a thousand other companies that tried to solve the same problems and failed. Some shipped better products and still failed.

We’re biased by experience to idolize companies we’ve personally interacted with. Who among us has never watched a show on Netflix? But again, this is not where the opportunity is. Everyone knows what it’s like to watch TV. Everyone knows what it’s like to be a person. If you build software that any person could conceivably be interested in, you’re competing in an over-understood and thus overserved market. Do we really need 50+ streaming TV services? I’ll go out on a limb and say we don’t.

Consumer (B2C) software in general isn’t where the money is. It’s exciting because we’re all familiar with it in our day-to-day lives, but it’s driven by irrational forces and incredibly difficult to sell. If you have name recognition, connections, and unlimited capital (or the absurd luck of a two-time lottery winner) maybe you can compete. But if you want to play on easy mode, corporate (B2B) software is where it’s at.

Most people won’t pay a dollar for their favorite app. But their employers will shell out thousands (or millions) for software that solves problems specific to their industry. When you think of Amazon, you think of an “everything store” and 2-day shipping. But most of their revenue comes from AWS, a cloud application platform for businesses. When you think of Google, you think of a search engine. But most of their revenue comes from advertising by businesses.

If you want to compete with Amazon, you don’t build an e-commerce store; you build cloud services. If you want to compete with Google, you don’t build a search engine; you build an ad delivery network. Of the five companies in the FAANG acronym, only Netflix had no B2B offering in the first half of 2023. Throw in Microsoft, Salesforce, Adobe, and PayPal, and Netflix still stood alone. And even that couldn’t last. Netflix now sells ad spots to businesses.

So what does it take to build a successful software business? After a couple ill-fated stints as a software entrepreneur, I now believe in a few essential elements:

  1. A very boring idea. Your friends and family should be stifling yawns as you tell them what you’re building. If their eyes light up, that’s a sign you’ve come up with something that’s either wildly unrealistic (innovation usually happens in small steps) or too relevant to the average person (so probably already software’d to death). If you’re still set on building “the next Facebook” or whatever, try asking people if they’ll commit to paying $20 for it. $20 is the bare minimum you can charge per customer if you want to build a successful company without relying on outrageous amounts of luck.
  2. Deep understanding of the market. As a software engineer, your ideal cofounder is someone who’s spent 20 or 30 years working in an industry where the software choices are non-competitive or under-competitive. Even five or ten years of outside experience can be enough. Your cofounder doesn’t necessarily need to have a software idea—they just need to have experience managing a complex process and plenty of complaints about the way it’s typically done.
  3. A sales professional. This is your other cofounder: someone who could sell saltwater to a dolphin. Sales is a far more complex and specialized field than most devs give it credit for. You can’t just build great software and wait for customers to show up with their wallets open. They won’t. “If you build it, they will come” has always been a lie. You can’t just buy some Google Ads and wait for clicks; you’ll spend 20 times as much as you get back. You can’t just launch on ProductHunt and tell everyone to upvote you; you’ll harvest a few hundred email addresses, maybe, but no one will buy. Sustainable growth only comes with the unrelenting effort of a skilled salesperson. I don’t care how good your idea is, you will fail without sales.

These aren’t the same criteria I had when I started my career—they’re all things I’ve picked up along the way. And they may still change, but I’ve used them to assess every startup idea I’ve heard over the last couple years, and they’ve proven to be pretty good.

What else does it take to build a successful software company? I’ve only scratched the surface, really. A healthy and productive culture, careful growth, superb employee retention, trustworthy customers, rational decision-making, well-aligned owners and investors…I could list things all day and so could you, probably. But for my money, it all starts with a boring idea and the right cofounders.