If you're like me, you see business ideas everywhere. Here are three of my latest brainstorms, which you may have for free, and if you start them, I will gladly be your first customer:
All three of these ideas came from needing something and failing to find it in the marketplace. I don't have time to do any of them, so, like I said, if you could, that'd be great. 'K. Thanks!
Another idea I had was a little bit closer to my heart. I wanted to launch a website to which programmers could go to ask highly technical questions about highly technical topics and get solutions from other programmers. "How do you multiply two 64-bit numbers in x86 assembler?" you could ask, and your peers, acting mainly out of the goodness of their hearts, would write up an answer. That sounds like an easy request, right? Doesn't that website already exist? There must be millions of them!
Well, yes. There is a lot of competition. But it all struck me as stunningly flawed. I had a couple of ideas about how to make a more useful website. For example, I thought that visitors to the site should be able to vote, giving a thumbs-up or thumbs-down to every proposed answer. The answer with the most votes would be listed first. Users wouldn't have to search through 100 answers, some of which were clearly wrong, because the best answers would rise to the top as other members of the community voted. (Kind of like Digg -- see this month's cover story, "Kevin Rose of Digg: The Most Famous Man on the Internet".)
My other idea was that people should be able to edit one another's answers. If someone saw an answer that was mostly right but contained some small bug somewhere, he or she could simply click on an Edit button and type in the correction. This would work just like Wikipedia, the online encyclopedia in which anyone can edit anything. Surprisingly, Wikipedia works well: Entries get better and better over time as everybody contributes his or her knowledge.
That was the basic idea: a programming community Q&A site with voting and editing. But like all my other ideas, nobody around here had any time to do it, so the idea went nowhere.
Then one day this guy named Jeff Atwood called me up. Like me, Jeff had a blog, on which he mulled various programming topics. He wrote well, so he was attracting quite a following. He had begun to put advertisements up here and there, and was making a little bit of pocket change, so he started thinking, Gosh, I can do this for a living. It sure beat the heck out of his day job working at a California company called Vertigo Software, which is where he was when he called me, asking for advice.
"Hey, I know exactly what you should do!" I said. And I told him the idea about the Q&A site with voting and editing. A site like this would need a lot of smart programmers to ask and answer questions. Between our two blogs, we felt we could generate the critical mass it would take to make the site work. Jeff liked the idea, so we decided to make it a joint venture.
We named it Stack Overflow, after a common type of bug that causes software to crash -- plus, the domain name stackoverflow.com happened to be available.
I had no idea if the site would work or exactly how it might make money, and I didn't have a ton of time to put into it. I have pretty deeply held ideas about how to develop software, but I mostly kept them to myself. That turned out to be a good thing, because as the organization took shape, nearly all these principles were abandoned.
First, I always insist on vetting programmers very carefully. Heck, I wrote a whole book about how to make sure you hire only the best programmers. But I entered into the joint venture agreement with Jeff after meeting him in person just once, for about three minutes, and I never bothered to check if he could write good code.
Second, I'm a big believer in putting everyone in one office, because I think that face-to-face communication is crucial. But the people who set up Stack Overflow are scattered geographically: I'm in New York; Jeff is in California; and he manages programmers who live in Oregon, Arkansas, and North Carolina.
Third, I'm a planner. I think it's vital to create short documents, with sketches and diagrams, describing in plain English how software is going to work, before you start to build it. But the design for Stack Overflow was mapped out in a few phone conversations, and Jeff and his friends just started banging out the code.
Oh, and bug tracking…That's fourth: I recommend that developers maintain a database of known bugs and planned features. At my company Fog Creek Software, the flagship product, FogBugz, is designed to do exactly that. I tried to get Jeff to use FogBugz, but he was too busy writing new code to take me up on the suggestion.
Fifth, I'm a big believer in testing software before you unleash it on the world. Testers and quality-assurance engineers are extremely good at finding bugs before your customers run across them. This new venture didn't really have any testers, although we did have a private beta test that uncovered a few problems.
Sixth, I advocate a fairly simple method of creating software schedules. At the very least, I think, you have to make a list of all the things you plan to do and how long you think those tasks might take, and only then can you reasonably start work. Jeff kept telling me, "It's going to take six to eight weeks." I knew there was no chance that would happen, given that Jeff pulled his timeline completely out of thin air, but I humored him. In reality, it took about twice as long as that, which wasn't that bad, but it was still a 100 percent overrun.
In summary, Jeff and I made six major mistakes.
Oddly, though, none of it mattered.
In August, Jeff unveiled the site, and instantly it lit up. Programmers used the site to pose their technical questions, and more important, they got great answers. The voting system worked well -- you could see that the answers to a given question were getting sorted with the best at the top of the rankings.
At one point, I decided to test the site by asking a question about some code I was working on. Before I could type in the whole question, Jeff's code cleverly pointed out that someone already had asked that exact question and gotten a few answers, and the best answer had already been voted up to the top. So I didn't even have to finish posting my question to see if the system worked.
As far as I'm concerned, we'll measure Stack Overflow's progress by the number of people who successfully find answers to their questions. Readers may be snickering: "Hey, Joel, maybe you should measure success by, um, profit?" Ha, ha! And that's the seventh major mistake I made. I started a business with the objective of building a big audience, which we would figure out how to monetize later. Sounds a little like the dot-com bubble, doesn't it? Not only that, but at the outset we promised the audience that the site would always be free and open to the public, and that we would never add flashing punch-the-monkey ads or pop-up windows.
Of course, I'm not sure how this will work out. The good news is that the site costs almost nothing to run. We're not going to need big racks of computers; it turns out that Jeff and his programmers were so good that they built a site that could serve 80,000 visitors a day (roughly 755,000 page views) using only one server that costs a few hundred bucks a month.
As for what this all means, I'm still trying to figure that out. I abandoned seven long-held principles about business and software engineering, and nothing terrible happened. Have I been too cautious in the past? Perhaps I was willing to be a little reckless because this was just a side project for me and not my main business. The experience is certainly a useful reminder that it's OK to throw caution to the wind when you're building something completely new and have no idea where it's going to take you.
For his part, Jeff says he didn't want our new venture to feel "like work" -- that if Stack Overflow wasn't fun to do, he didn't want to be doing it. If I had tried to make him play by my rules, I don't think the project would have come together, at least not as well as it has.
The truth is, the three guys who coded Stack Overflow are great programmers. They're smart, and they get things done. And in the end, that's what really matters. Entrepreneurship boils down to the simple fact that a team of really smart people who can get things done are going to get smart, useful things done. Need proof? No problem: Check out stackoverflow.com.
Joel Spolsky is the co-founder and CEO of Fog Creek Software in New York City and the host of the popular blog Joel on Software.