Programmer search engine

For as long as I’ve been in the industry, which is, I think, about 74 years now, the problem I’ve had with hiring programmers was not interviewing them or deciding if they’re smart—it’s been finding them in the first place.

What I’ve dreamed about is a programmer search engine.

The ideal programmer search engine would only include programmers who are actually looking for jobs. If you’ve ever emailed someone based on a resume you found through a traditional search engine, you’ve probably discovered that they’re not actually on the market.

It would only include people willing to work in your neck of the woods.

It would show you CVs right away, and, ideally, it would show you something about their programming skills besides the usual resume blahblah.

Well, OK, that day is here, and I’m like a kid in a candy store. Nom nom. Announcing the other half of the employer’s side!

Right now, there are about 928 candidates on there. That’s a start. What’s more interesting is whether there’s a candidate who meets your needs.

Let’s say you’re searching for a full time Java programmer within 40 miles of Palo Alto. Right now there are 11 candidates listed. All but one are active on StackOverflow… one even has reputation over 4000 points.

Want a bit more choice? Check the box that indicates that you’re willing to relocate. Now there are 80 matches, all of whom have the legal right to work in the states. Candidates have a lot of flexibility indicating where they’re willing to work. Even if you need a Ruby on Rails programmer in Oklahoma City, as long as you’re willing to pay for relocation, you’ve got 7 choices. You’ve got 14 choices in London (with the legal right to work.) If you think that a Python programmer could learn Ruby, you’ve got 51 choices. There are plenty of choices whether you’re hiring in Tel Aviv, Sydney, Silicon Valley, or New York. There are four programmers in Copenhagen right now. No relocation required. All of them highly qualified, actually; any one of them would qualify to interview at Fog Creek.

Stack Overflow Careers is something of a chicken-and-egg business. We have to get a big audience of programmers and a big audience of employers all at the same time, and then it’s like a junior high school dance, with the boys on one side of the gym and the girls on the other side, and for a while you just sit there holding your breath to see if anyone will dance. We invited a few hundred employers as beta testers… these were the companies that have been listing jobs on StackOverflow over the last six months, and so far, they’ve found a few dozen candidates that they liked. Once it gets to that point, we’re out of the loop, so we don’t really know how many people are actually finding jobs, but please email me your success stories and failure stories so we can keep working to make it better.

In the meantime, Jeff and the StackOverflow crew have done something brilliant: they’ve made it possible to do searches and see how many candidates match even before you have to pay. So if you want to try it out but are afraid that there aren’t students looking for OCaml internships in Houston, you can try it, and find that there is, indeed, one. So, try it out right now. There’s no obligation, and we’re happy to give you your money back if you don’t think you got good value.

Upgrade your career

Do you like your job?

Do you enjoy the people you work with?

Would you want to have lunch with them? Every day? Alex Papadimoulis thinks that Fog
Tyler Griffin Hicks-Wright
Creek’s free lunches are “cultish,” but everyone at Fog Creek loves them. Maybe it’s the mandatory brain implant we install in each new worker, but I like to think that we just enjoy eating together because we genuinely like each other and like spending time together. If you can’t imagine eating lunch every day with your coworkers, I hate to break it to you: you might not like them. Is it OK to spend most of your waking hours with people you don’t like?

Do you actually enjoy doing your job? If you wake up an hour early in the morning, do you think, “Yay! I can go in early and get another hour of work in!” Or does that sound ridiculous to you?

Are you learning? When was the last time you had to learn a new skill? Is this year kind of like last year, or are you doing something new, stretching yourself, challenging yourself to be better?

At one of the recent DevDays events, I asked the audience (almost 100% programmers) how many of them were incredibly satisfied with their job, found it fulfilling, and were treated well by their employers. Only about 25% of the hands went up. I asked how many people either hated their job and couldn’t wait to find something better, or were actually actively on the job market. Again, about 25%. The rest were somewhere in the middle: maybe they can tolerate their job, but they’re keeping an eye open for something better.

Who is this DevDays audience? They’re the elite of the elite of the best programmers out there. They’re the people who participate in Stack Overflow, the people who read, the people who are constantly trying to learn more about programming and software development. More than half of them paid their own money to attend a one day conference. They’re the most desirable software developers on the planet. And 75% of them are not delighted with their job.

That’s unacceptable. I’ve been saying for ten years that the top developers have a choice of where to work, and the top employers need to work harder to attract them, because the top developers get ten times as much work done as the average developers.

And yet, I still keep meeting ridiculously productive developers working in shitholes.

We’re going to fix this, right now. Thus, Stack Overflow Careers.

We’re going to completely turn the job market upside down, for the best software developers and the best companies.

This is a talent market. Developers are not even remotely interchangeable. Therefore, recruiting should work like Hollywood, not like union hiring halls of the last century.

In a union hiring hall, downtrodden workers line up like cogs, hoping to make it to the front of the line in time to get a few bucks for dinner.

In Hollywood, studios who need talent browse through portfolios, find two or three possible candidates, and make them great offers. And then they all try to outdo each other providing plush work environments and great benefits.

Here’s how Stack Overflow Careers will work. Instead of job seekers browsing through job listings, the employers will browse through the CVs of experienced developers.

Instead of deciding you hate your job and going out to find a better one, you’ll just keep your CV on file at Stack Overflow and you’ll get contacted by employers.

Instead of submitting a resume, you’ll fill out a CV, which links back to your Stack Overflow account, so that you can demonstrate your reputation in the community and show us all how smart you really are. To a hiring manager, the fact that you took the time to help a fellow programmer with a detailed answer in some obscure corner of programming knowledge, and demonstrated mastery, is a lot more relevant than the Latin Club you joined in school.

Employers can see how good you are at communicating, how well you explain things, how well you understand the tools that you’re using, and generally, if you’re a great developer or not. And they can see your peer reputation, so all that hard work you’ve been putting into helping people on Stack Overflow can karmically come back and help you upgrade your job to the latest, state-of-the-art, great place to work.

Stack Overflow has grown incredibly fast. After a year in business, it gets over a million page views most weekdays and currently stands as the 817th largest site on the Internet, according to Quantcast. It reaches 5.2 million people a month. But Stack Overflow Careers doesn’t have to be massive. It’s not for the 5.2 million people who visit Stack Overflow; it’s for the top 25,000 developers who participate actively. It’s not for every employer; it’s for the few that treat developers well and offer a place to work that’s genuinely fulfilling.

Read the FAQ, then go file your CV now, and upgrade your career.

Get a job

The Joel on Software Job Board has been working well since we launched it almost three years ago. It logs about 220,000 unique visitors every 21 days, including many passive job seekers who have RSS subscriptions.

But a few employers place ads and just don’t find anyone. I’m pretty sure we’re the only job listing service in the world with an unconditional money back guarantee, so these people call us and we give them their money back. It’s not a lot, usually just two or three a month, but I’d still prefer to have a wider audience for these job listings as long as it didn’t diminish the quality of resumes.

In the meantime, Stack Overflow has been attracting a huge community of smart developers—we’re running over 3.7 million unique visitors a month.

So today we’re launching a new Stack Overflow job board and a Server Fault job board, which will both be linked up with the Joel on Software job board. Any ad placed on one appears on all three sites. This will be a great way to recruit great programmers and a great place to get great jobs.

It’s not much of a secret, but Stack Overflow is already a great place to find good programmers, because you can see how good people really are by reading the answers that they post. I’ve noticed a lot of people putting their Stack Overflow reputations on their resumes, and we’re starting to hear stories of people who got jobs through the site. Jeff and I are committed to building features to make this easier in the next “six to eight” weeks. For example, I’ve always hated traditional resumes, which just don’t give the right kind of information about a candidate. If you wanted to hire an iPhone developer, would you rather know that person’s Stack Overflow stats in the iPhone tag and read their answers to technical questions? Or would you rather know where they went to college?

If we pull this off, getting jobs in the tech industry will be a lot saner.

In the meantime, if you are hiring, do yourself a favor and try placing an ad on Stack Overflow. (FAQ) If you’re looking for a job, check out the listings.

Server Fault now in public beta

Server Fault is now in public beta!

When Jeff Atwood and I launched Stack Overflow last fall, we really wanted it to be a site for and by programmers. But the engine behind the site, the Q&A engine with voting, editing, and tagging, could obviously be used in a lot of other professions.

The first field we picked is close to our heart: system and network administration; as programmers, we often end up doing system administration ourselves. And it’s the perfect domain for a Q&A engine… there are a million detailed problems that depend highly on lore to get right. There’s no way to accidentally discover aspnet_regiis.exe -I until someone shows you the trick. How much time have you wasted trying to figure out which process is holding a file open preventing you from deleting an otherwise empty directory? Can you use dd to clone a disk drive?

Thus, Server Fault. If you already have a Stack Overflow account, you’re all set up, although your reputation score, badges, and favorite tags are separate. It has all the great features from Stack Overflow which I talked about at Google last month (video).

Jeff: “I am sorry to inform you that you may be a system administrator or IT professional.”

Stack Overflow Live!

If you’re going to Las Vegas next week for Microsoft’s huge MIX 09 conference, Jeff and I will be recording a live broadcast of the Stack Overflow podcast. Er, I mean, it’s “live” in the sense that it will be recorded in front of a live audience … you! But it’s not live because it’s a podcast, it’s not actually broadcast live … well, you know what I mean.

Please come; it’ll be a barrel of fun!

Tuesday, March 17, 2009, at 6:30 PM
At the Third Place hang out area
The Venetian Las Vegas
4th Floor, Marcelo 4403

You will need to be registered for the conference. You do not need to be registered for the workshops.

Stack Overflow is a Wiki

Stack Overflow launched about three months ago, and is already serving 8.3 million page views per month. The growth has been incessant.

Most of the criticism I’ve heard of Stack Overflow reminds me of the early criticism of Wikipedia: “I went to this article and it was wrong.” By the time you read the criticism, the article has been fixed. There was that year, not last year, but the year before, when every traditional journalist wrote a funny thought piece in their newspaper about something they looked up in Wikipedia and just how wrong it was. By the time their column appeared in print, the Wikipedia article was corrected, making a liar out of the journalist. Eventually they learned to stop writing that story.

Stack Overflow works the same way. Voting is open forever. It’s a wiki, so anythin
Stack Overflow data from Google Analytics
g can be edited, and it is.

Most topics get most of their traffic not in the first few days, but by the Google traffic that comes in for people searching for the same exact problem. Search engines now account for 81% of Stack Overflow traffic: people searching for specific questions, not asking them directly. And that’s where it’s really working. Answers DO get better. If they don’t, it’s a wiki: fix them. Instead of complaining about good answers with few votes, vote down the top answer and vote up the better answer.

My criterion for whether Stack Overflow works: when you type your question into Google, and you’re happy to see a Stack Overflow result rather than a result at another one of those Q&A sites where you have to sign up and pay a monthly fee to see the answer.

Stack Overflow Launches

You know what drives me crazy? Programmer Q&A websites. You know what I’m talking about. You type a very specific programming question into Google and you get back:

  • A bunch of links to discussion forums where very unknowledgeable people are struggling with the same problem and getting nowhere,
  • A link to a Q&A site that purports to have the answer, but when you get there, the answer is all encrypted, and you’re being asked to sign up for a paid subscription plan,
  • An old Usenet post with the exact right answer—for Windows 3.1—but it just doesn’t work anymore,
  • And something in Japanese.

If you’re very lucky, on the fourth page of the search results, if you have the patience, you find a seven-page discussion with hundreds of replies, of which 25% are spam advertisements posted by bots trying to get googlejuice for timeshares in St. Maarten, yet some of the replies are actually useful, and someone whose name is “Anon Y. Moose” has posted a decent answer, grammatically incorrect though it may be, and which contains a devastating security bug, but this little gem is buried amongst a lot of dreck.

Well, technology has gotten better since those discussion forums were set up. I thought that the programming community could do better by combining the idea of a Q&A site with voting and editing.

Would it work? I had no idea. And it looked like there was no way to find out, because everyone at Fog Creek was really busy so nobody had any time to build this.

Then, out of the blue, Jeff Atwood called me up. His own blog, Coding Horror, was starting to rack in the dough, and he was trying to figure out if that meant he could quit his day job and just blog.

Pattern-matching rules fired in my brain. The hardest thing about making a new Q&A site is not the programming—it’s the community. You need a large audience of great developers so you have the critical mass it takes to get started. Without critical mass, questions go unanswered and the site becomes a ghost town. I thought the combination of my audience (#15 on Bloglines) and Jeff’s (#89) would bring enough great developers into the site to reach critical mass on day one. So Jeff and I decided to go in together on this.

We’ve been working all summer to build the site. OK, that’s extremely unfair. Jeff Atwood, together with two of his friends, Geoff Dalgas and Jarrod Dixon, have been doing most of the building. I just chime in with advice once in a while, which Jeff justifiably ignores; you can hear the process in our weekly status phone call, publically available in the form of the Stack Overflow podcast.

In the beginning of August, the beta opened to a small group of just a few hundred developers. The site lit up instantly! People were asking questions and, for the most part, getting answers! And the voting was working too… in most questions, you could see that the best answers were voted up promptly. I tried to ask a programming question for something I was working on and found that (a) it had already been asked (b) there were already good answers and (c) the search engine worked so well I never got a chance to post my question.

After a very short, five-week private beta, we’re opening Stack Overflow to the public today.

Here’s how it’s supposed to work. This is a community project, so I’m being careful to avoid saying this is how it will work… that’s up to the community. But this is roughly what I have in mind.

Every question in Stack Overflow is like the Wikipedia article for some extremely narrow, specific programming question. How do I enlarge a fizzbar without overwriting the user’s snibbit? This question should only appear once in the site. Duplicates should be cleaned up quickly and redirected to the original question.

Some people propose answers. Others vote on those answers. If you see the right answer, vote it up. If an answer is obviously wrong (or inferior in some way), you vote it down. Very quickly, the best answers bubble to the top. The person who asked the question in the first place also has the ability to designate one answer as the “accepted” answer, but this isn’t required. The accepted answer floats above all the other answers.

Already, it’s better than other Q&A sites, because you don’t have to read through a lot of discussion to find the right answer, if it’s in there somewhere.

Indeed, you can’t even have a discussion. A lot of people come to Stack Overflow, not knowing what to expect, and try to conduct a discussion when they should be answering the question. The trouble here is that answers are always listed in order of votes, not chronologically, so the discussion instantly becomes scrambled when the votes start coming in.

Instead, we have editing. Once you’ve earned a little bit of reputation in the system (and there are all kinds of ways to earn reputation), you can edit questions and answers.

Fred asks: How do I keep from overwriting the user’s snibbit?

Kathy answers: Normally the user’s snibbit will not be overwritten. Are you enlarging the fizzbar?

Fred answers: Yes. And it’s getting overwritten.

BZZT! WRONG! Fred just made a mistake… he provided an answer which isn’t an answer. VOTE IT DOWN!

Chastised, Fred edits his original question, changing it to: How do I keep from overwriting the user’s snibbit while enlarging the fizzbar?

Now Kathy can answer by editing her previous answer. And you’re left with a nice clean single-question, single-answer, instead of a lot of boring discussion that would be unnecessary flotsam to the next person to come along with snibbit overwriting problems.

There are lots of good ways to edit things. You can improve spelling, grammar, and even copy edit any question or answer to make it better. After all, for the next 20 years, this question will be the canonical place on the web where programmers will come to find out about enlarging fizzbars without overwriting snibbits. Anything you can do to clarify, explain, or improve the question or the answer will be a public service. If there’s code in the answer, you can debug it, refactor it, or tweak it to make it better.

You can also improve on the answers. If an answer is incomplete, expand on it. If an answer has a bug in it or is obsolete, you can edit it and fix it. Because Q&A in Stack Overflow are editable, you can safely link to a Stack Overflow permalink knowing it will always have a good answer. Stack Overflow won’t have the problem of other sites where obsolete or incorrect answers have high Google PageRank simply because they’ve been on the Internet for so long. If someone finds a security bug in an answer, it can be fixed… it won’t keep coming up in Google’s results for years and years poisoning future code.

Want to know an easy way to earn reputation? Find a question somewhere with several good, but incomplete, answers. Steal all the answers and write one long, complete, detailed answer which is better than the incomplete ones. Sit back and earn points while people vote up your comprehensive answer.

In addition to voting on answers, you can vote on questions. Vote up a question if you think it’s interesting, if you’d like to know the answer, or if you think it’s important. The hot tab on the home page will show some of the highest-ranked recent questions using an algorithm similar to digg or Reddit. If you’re generally interested in programming and want to learn something new every day, visit the hot tab frequently.

Want to test your knowledge? Visit the Unanswered tab. Right now, you just see a list of questions with no answers (and there are very few), but in the near future, we’ll actually tailor the list to show you questions that we think you have a chance of answering, based on questions you’ve successfully answered in the past.

We have tags. Every question is tagged so, for example, if you’re a Ruby guru, you can ignore everything but Ruby and just treat Stack Overflow as a great Ruby Q&A site. A single question can have multiple tags, so you don’t have to figure out which single category it fits in best. Like everything else, the tags can be edited by good-natured individuals to help keep things sorted out neatly. And you can have a little fun: stick a homework tag on those questions where someone seems to be asking how to delete an item from a linked list.

Don’t combine multiple answers. For example, suppose someone asks

What are your favorite keyboard shortcuts in Emacs?

Well, I could list them all in one answer, but how does anyone vote on that? Instead, I’ll provide a bunch of separate answers, and let people vote on the answers. And in fact, if you see a question which is really a poll, do me a favor, go in there and edit it:

What is your single favorite keyboard shortcut in Emacs? (One shortcut per answer, please).

What kind of questions are appropriate? Well, thanks to the tagging system, we can be rather broad with that. As long as questions are appropriately tagged, I think it’s okay to be off topic as long as what you’re asking about is of interest to people who make software. But it does have to be a question. Stack Overflow isn’t a good place for imponderables, or public service announcements, or vague complaints, or storytelling.

I’m extremely excited about Stack Overflow. It’s fast and clean. It costs us practically nothing to operate, so we won’t need to plaster it with punch-the-monkey ads; we plan to keep it free and open to the public forever. And it might make it a little bit easier to be a programmer.

What is

Nothing, yet.

But here’s the concept:

Programmers seem to have stopped reading books. The market for books on programming topics is miniscule compared to the number of working programmers.

Instead, they happily program away, using trial-and-error. When they can’t figure something out, they type a question into Google.

And sometimes, the first result looks like it’s going to have the answer to their exact question, and they are excited, until they click on the link, and discover that it’s a pay site, and the answer is cloaked or hidden or behind a pay-wall, and you have to buy a membership.

And you won’t even get an expert answer. You’ll get a bunch of responses typed by other programmers like you. Some of the responses will be wrong, some will be right, some may be out of date, and it’s hard to imagine that with the cooperative spirit of the internet this is the best thing we programmers have come up with.

Jeff Atwood and I decided to do something about it. We’re starting to build a programming Q&A site that’s free. Free to ask questions, free to answer questions, free to read, free to index, built with plain old HTML, no fake rot13 text on the home page, no scammy google-cloaking tactics, no salespeople, no JavaScript windows dropping down in front of the answer asking for $12.95 to go away. You can register if you want to collect karma and win valuable flair that will appear next to your name, but otherwise, it’s just free.

When I’m building a new product, my policy has always been to keep quiet about it until I have something to ship. But this isn’t really a product. This is a free new community site for programmers around the world and we need your help to design it, to program it, and to build it. We want to hear your suggestions, hear your ideas, and we’re going to build it right in front of your eyes. Thus, the vaporware announcement.

Every week, Jeff and I talk by phone (he’s in California, I’m in New York), and we’re going to record those phone calls and throw them up on the web for you to listen in on, and call it a podcast. We have a lot of trouble keeping on topic, so the podcast may be interesting to you even if you don’t want to hear about The first episode is up right now. Eventually I imagine we’ll figure out this newfangled “RSS” technology and you’ll be able to actually subscribe and get fresh episodes delivered into your ears automatically. All in good time.

Jeff’s Announcement

PS I’m still CEO of Fog Creek full time. is a joint venture between Fog Creek and Jeff Atwood. He’s the full time CEO which means he’s calling the shots. I’m sort of a consultant on this one.