{"id":729,"date":"2008-09-15T00:12:10","date_gmt":"2008-09-15T00:12:10","guid":{"rendered":"https:\/\/www.joelonsoftware.com\/?p=729"},"modified":"2018-04-19T21:50:24","modified_gmt":"2018-04-19T21:50:24","slug":"stack-overflow-launches","status":"publish","type":"post","link":"https:\/\/www.joelonsoftware.com\/2008\/09\/15\/stack-overflow-launches\/","title":{"rendered":"Stack Overflow Launches"},"content":{"rendered":"<p>You know what drives me crazy? Programmer Q&amp;A websites. You know what I\u2019m talking about. You type a very specific programming question into Google and you get back: <\/p>\n<ul>\n<li>A bunch of links to discussion forums where very unknowledgeable people are struggling with the same problem and getting nowhere, <\/li>\n<li>A link to a Q&amp;A site that purports to have the answer, but when you get there, the answer is all encrypted, and you\u2019re being asked to sign up for a paid subscription plan, <\/li>\n<li>An old Usenet post with the exact right answer\u2014for Windows 3.1\u2014but it just doesn\u2019t work anymore, <\/li>\n<li>And something in Japanese. <\/li>\n<\/ul>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" style=\"MARGIN-LEFT: 5px\" alt=\"\" src=\"https:\/\/i0.wp.com\/www.joelonsoftware.com\/wp-content\/uploads\/2008\/09\/15_3.jpg?w=730&#038;ssl=1\" align=\"right\" border=\"0\" \/>If you\u2019re 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 \u201cAnon Y. Moose\u201d 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. <\/p>\n<p>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&amp;A site with voting and editing.<\/p>\n<p>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. <\/p>\n<p>Then, out of the blue, Jeff Atwood called me up. His own blog, <a href=\"http:\/\/www.codinghorror.com\/\">Coding Horror<\/a>, was starting to <a href=\"http:\/\/www.codinghorror.com\/blog\/archives\/000893.html\">rack in the dough<\/a>, and he was trying to figure out if that meant he could quit his day job and just blog. <\/p>\n<p>Pattern-matching rules fired in my brain. The hardest thing about making a new Q&amp;A site is not the programming\u2014it\u2019s 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 <a href=\"https:\/\/beta.bloglines.com\/topfeeds\">Bloglines<\/a>) and Jeff\u2019s (#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. <\/p>\n<p>We\u2019ve been working all summer to build the site. OK, that\u2019s 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 <a href=\"http:\/\/blog.stackoverflow.com\/\">the Stack Overflow podcast<\/a>. <\/p>\n<p>In the beginning of August, the beta opened to a small group of just a few hundred developers. <img data-recalc-dims=\"1\" decoding=\"async\" style=\"MARGIN-LEFT: 5px\" alt=\"\" src=\"https:\/\/i0.wp.com\/www.joelonsoftware.com\/wp-content\/uploads\/2008\/09\/15_1.jpg?w=730&#038;ssl=1\" align=\"right\" border=\"0\" \/>The site lit up instantly! People were asking questions and, for the most part, getting answers! And the voting was working too\u2026 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. <\/p>\n<p>After a very short, five-week private beta, we\u2019re opening <a href=\"http:\/\/stackoverflow.com\/\">Stack Overflow<\/a> to the public today. <\/p>\n<p>Here\u2019s how it\u2019s supposed to work. This is a community project, so I\u2019m being careful to avoid saying this is how it <em>will<\/em> work\u2026 that\u2019s up to the community. But this is roughly what I have in mind. <\/p>\n<p>Every question in Stack Overflow is like the Wikipedia article for some extremely narrow, specific programming question. <em>How do I enlarge a fizzbar without overwriting the user\u2019s snibbit?<\/em> This question should only appear once in the site. Duplicates should be cleaned up quickly and redirected to the original question. <\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" style=\"MARGIN-LEFT: 5px\" alt=\"\" src=\"https:\/\/i0.wp.com\/www.joelonsoftware.com\/wp-content\/uploads\/2008\/09\/15_2.jpg?w=730&#038;ssl=1\" align=\"right\" border=\"0\" \/>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 \u201caccepted\u201d answer, but this isn\u2019t required. The accepted answer floats above all the other answers. <\/p>\n<p>Already, it\u2019s better than other Q&amp;A sites, because you don\u2019t have to read through a lot of discussion to find the right answer, if it\u2019s in there somewhere. <\/p>\n<p>Indeed, you can\u2019t even <em>have <\/em>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. <\/p>\n<p>Instead, we have editing. Once you\u2019ve 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. <\/p>\n<p>Fred asks: <em>How do I keep from overwriting the user\u2019s snibbit?<\/em> <\/p>\n<p>Kathy answers: <em>Normally the user\u2019s snibbit will not be overwritten. Are you enlarging the fizzbar?<br \/><\/em><\/p>\n<p>Fred answers: <em>Yes. And it\u2019s getting overwritten<\/em>. <\/p>\n<p><em>BZZT! WRONG! <\/em>Fred just made a mistake\u2026 he provided an answer which isn\u2019t an answer. VOTE IT DOWN! <\/p>\n<p>Chastised, Fred edits his original question, changing it to: <em>How do I keep from overwriting the user\u2019s snibbit while enlarging the fizzbar?<\/em> <\/p>\n<p>Now Kathy can answer by editing her previous answer. And you\u2019re 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. <\/p>\n<p>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\u2019s code in the answer, you can debug it, refactor it, or tweak it to make it better. <\/p>\n<p>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&amp;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\u2019t have the problem of other sites where obsolete or incorrect answers have high Google PageRank simply because they\u2019ve been on the Internet for so long. If someone finds a security bug in an answer, it can be fixed\u2026 it won\u2019t keep coming up in Google\u2019s results for years and years poisoning future code. <\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" style=\"MARGIN-LEFT: 5px\" alt=\"\" src=\"https:\/\/i0.wp.com\/www.joelonsoftware.com\/wp-content\/uploads\/2008\/09\/15_4.jpg?w=730&#038;ssl=1\" align=\"right\" border=\"0\" \/>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. <\/p>\n<p>In addition to voting on answers, you can vote on questions. Vote up a question if you think it\u2019s interesting, if you\u2019d like to know the answer, or if you think it\u2019s important. The <strong>hot<\/strong> tab on the home page will show some of the highest-ranked recent questions using an algorithm similar to <a href=\"http:\/\/digg.com\/\">digg<\/a> or <a href=\"http:\/\/www.reddit.com\/\">Reddit<\/a>. If you\u2019re generally interested in programming and want to learn something new every day, visit the hot tab frequently. <\/p>\n<p>Want to test your knowledge? Visit the <strong>Unanswered<\/strong> tab. Right now, you just see a list of questions with no answers (and there are very few), but in the near future, we\u2019ll actually tailor the list to show you questions that we think you have a chance of answering, based on questions you\u2019ve successfully answered in the past. <\/p>\n<p>We have tags. Every question is tagged so, for example, if you\u2019re a Ruby guru, you can ignore everything but Ruby and just treat Stack Overflow as a great Ruby Q&amp;A site. A single question can have multiple tags, so you don\u2019t 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 <strong>homework<\/strong> tag on those questions where someone seems to be asking how to delete an item from a linked list. <\/p>\n<p>Don\u2019t combine multiple answers. For example, suppose someone asks <\/p>\n<p><em>What are your favorite keyboard shortcuts in Emacs?<\/em> <\/p>\n<p>Well, I could list them all in one answer, but how does anyone vote on that? Instead, I\u2019ll 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: <\/p>\n<p><em>What is your <span style=\"TEXT-DECORATION: underline\">single<\/span> favorite keyboard shortcut in Emacs? <span style=\"TEXT-DECORATION: underline\">(One shortcut per answer, please).<\/span><br \/><\/em><\/p>\n<p>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\u2019s okay to be off topic as long as what you\u2019re asking about is of interest to people who make software. But it does have to be a question. Stack Overflow isn\u2019t a good place for imponderables, or public service announcements, or vague complaints, or storytelling. <\/p>\n<p>I\u2019m extremely excited about Stack Overflow. It\u2019s fast and clean. It costs us practically nothing to operate, so we won\u2019t 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.<\/p>\n<p><a href=\"http:\/\/stackoverflow.com\/\"><img data-recalc-dims=\"1\" decoding=\"async\" alt=\"\" src=\"https:\/\/i0.wp.com\/www.joelonsoftware.com\/wp-content\/uploads\/2008\/09\/15_screenshot.png?w=730&#038;ssl=1\" border=\"0\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>You know what drives me crazy? Programmer Q&amp;A websites. You know what I\u2019m talking about. You type a very specific programming question into Google and you get&hellip; <span class=\"read-more\"><a class=\"more-link\" href=\"https:\/\/www.joelonsoftware.com\/2008\/09\/15\/stack-overflow-launches\/\" rel=\"bookmark\">Read more <span class=\"screen-reader-text\">&#8220;Stack Overflow Launches&#8221;<\/span><\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[19,2],"tags":[],"class_list":["post-729","post","type-post","status-publish","format-standard","hentry","category-stack-overflow","category-news"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p83KNI-bL","_links":{"self":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/posts\/729","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/comments?post=729"}],"version-history":[{"count":1,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/posts\/729\/revisions"}],"predecessor-version":[{"id":3300,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/posts\/729\/revisions\/3300"}],"wp:attachment":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/media?parent=729"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/categories?post=729"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/tags?post=729"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}