Should you join a big company or start a startup?
This frequently debated question paints a picture of a world where the only choice is between being a cog at a giant semi-monopoly, or taking investment money in the hopes of one day growing to be head cog at a giant semi-monopoly.
Role models matter. So I made a list of small companies that I admire. Neither giants nor startups - just people making a living writing software on their own terms.
Sqlite is an existence proof that you don't need a thousand engineers to have an impact. It's been around since the early 90s, is one of the most shipped pieces of software in existence and is widely respected for its exceptional testing methodology. Yet it was written almost entirely by a few people:
jamie@machine:~/sqlite$ git shortlog -s -n | head -n 5 14012 drh 4297 dan 1663 danielk1977 1099 mistachkin 175 shane
Their growth plans:
Hwaci is a small company but it is also closely held and debt-free and has low fixed costs, which means that it is largely immune to buy-outs, take-overs, and market down-turns. Hwaci intends to continue operating in its current form, and at roughly its current size until at least the year 2050. We expect to be here when you need us, even if that need is many years in the future.
Sqlite is also interesting because although the code is open source they operate on a cathedral model, generally refusing or rewriting outside contributions.
Pinboard is a single-person operation that has been making a solid income year on year since 2010. It somehow still leaves Maciej enough free time to go around teaching politicians how to not get hacked and explaining privacy to the senate. All the while destroying his competition using highly advanced tactics such as listening to his customers and not operating at a loss.
But if Maciej had done nothing else he would still be on this list for his beautiful talk Barely Succeed! It's Easier!
We live in a remarkable time when small teams (or even lone programmers) can successfully compete against internet giants. But while the last few years have seen an explosion of product ideas, there has been far less innovation in how to actually build a business. Silicon Valley is stuck in an outdated 'grow or die' mentality that overvalues risk, while investors dismiss sustainable, interesting projects for being too practical. So who needs investors anyway?
I'll talk about some alternative definitions of success that are more achievable (and more fun!) than the Silicon Valley casino. It turns out that staying small offers some surprising advantages, not just in the day-to-day experience of work, but in marketing and getting customers to love your project. Best of all, there's plenty more room at the bottom.
If your goal is to do meaningful work you love, you may be much closer to realizing your dreams than you think.
Another single-person operation, tarsnap has been profitable since 2009 and shows no sign of going anywhere, even lowering it's prices over the years as storage became cheaper. It's saved me on multiple occasions and it's so simple, reliable and cheap that I think of it almost like a utility - tarsnap having an outage would be more surprising to me than water not coming out of my taps.
One of the most interesting things about tarsnap is that it could easily be making more money. If tarsnap had investors or shareholders, they would have already forced Colin to do so. In other words, the only reason that Colin gets to continue running the kind of business that he wants to run is that he owns it entirely and noone can force him to maximize profit instead.
Version 1.0 came out in 2008 and they're still going strong today, making enough to hire an extra developer and launch a separate product.
Sublime is notable for surviving despite massive open-source competition in a field where people hate to pay for tools. As Tristan Hume points out, it's really the only editor that has managed to remain both fast and consistent while still supporting a large plugin ecosystem. These kind of end-to-end qualities are perhaps one of the main advantages for small teams with a long time horizon.
Zig has been around only a few years but I'm already wildly impressed by the quality of thought and engineering that has gone into it.
The Zig Software Foundation is a non-profit, currently funded entirely by donations and working towards being able to employ a second full-time developer. They explicitly chose to be a non-profit out of concern over how profit incentives creep into daily decision making:
In You Weren't Meant to Have a Boss, Paul Graham makes an analogy between animals in the zoo (employees) and animals in the wild (startup founders). I think he's on to something, but when you start a startup, you still have a boss. In fact, you have the same boss. At the end of the day, it is an inescapable fact that you must do what makes a profit, for the shareholders.
The difference in incentives makes a structural difference that permeates every part of an organization. Windows users wake up one day and find ads in their start menu. Will Debian Linux ever try to put ads into any of its software? The concept is absurd.
Zig was explicitly designed to be a small, simple language, allowing it to be maintained indefinitely by a small, committed team.
ZSF is a small organization and makes efficient use of monetary resources.
I don't see the need for ZSF to grow beyond a handful of people.
As Maciej puts it, one of the advantages of being small is that you can speak with a human voice. This comes across clearly from the zig team, who are resolutely human instead of projecting some impassive facade of professionalism.