Domain: codinghorror.com
Stories and comments across the archive that link to codinghorror.com.
Stories · 43
-
Ask Slashdot: Has Technology Created A Monster? (codinghorror.com)
Stack Overflow co-founder Jeff Atwood posted a worried blog post on New Year's Eve. Remember in 2011 when Marc Andreeseen said that "Software is eating the world?" That used to sound all hip and cool and inspirational, like "Wow! We software developers really are making a difference in the world!" and now for the life of me I can't read it as anything other than an ominous warning that we just weren't smart enough to translate properly at the time... What do you do when you wake up one day and software has kind of eaten the world, and it is no longer clear if software is in fact an unambiguously good thing, like we thought, like everyone told us... like we wanted it to be?
Slashdot reader theodp adds: "The year 2018 is the 200th anniversary of Mary Shelley's Frankenstein," provocatively notes Dr. Ainissa Ramirez, "in which a scientist neglects to ask about the consequences of his creation. I suspect (and hope) that there will be much debate on the impact of technology on our lives in the numerous lectures and events scheduled this year. It is a long-overdue discussion because scientists sometimes get so excited about their innovations that they forget to ask, 'Am I building a monster?' This anniversary offers a pause to see if society likes where it is headed."
That quote is from a "predictions for 2018" article on the Mach technology site (hosted by NBC News) in which Dr. Moshe Y. Vardi, a Professor of Computer Science at Rice University, also sees a looming debate. He remembers how Wall Street Journal columnist Peggy Noonan referred to tech's CEO's as "our country's real overlords" and described them as "moral Martians who operate on some weird new postmodern ethical wavelength."
Keep reading for some even more dire predictions...
Yale ethicist and author Wendell Wallach predicts that in 2018 "A serious tragedy will direct the attention of international leaders, under public pressure, to finally take on the difficult but incredibly necessary task of putting in place effective oversight and governance of emerging technologies... Industry leaders, fearful of more stringent restrictions on their activities, will lead the way for thoughtful oversight of digital technologies." He admits his prediction may be wrong, but argues that "reaping the benefits of innovation and managing risks must happen together."
And finally, long-time Slashdot reader gurps_npc notes that "the entire point of the book is that Dr. Frankenstein IS the monster, the flesh golem he created is just a victim of Dr. Frankenstein's arrogance and pride. The doctor created this life, then being scared of it, abandons it. Without food, money, or a basic education, the flesh golem turns to a life of crime and seeks revenge for the evil actions that Doctor Frankenstein committed. He doesn't know any better because no one educated him.
"The real lesson is not 'there are things man is not meant to know'. Instead it is 'Be responsible and take actions to ensure your creations are not used by uneducated shmucks.'" -
Slashdot Asks: Are Password Rules Bullshit? (codinghorror.com)
Here's what Jeff Atwood, a founder of Stack Overflow thinks: Password rules are bullshit. They don't work.
They heavily penalize your ideal audience, people that use real random password generators. Hey, guess what, that password randomly didn't have a number or symbol in it. I just double checked my math textbook, and yep, it's possible. I'm pretty sure.
They frustrate average users, who then become uncooperative and use "creative" workarounds that make their passwords less secure.
Are often wrong, in the sense that they are grossly incomplete and/or insane.
Seriously, for the love of God, stop with this arbitrary password rule nonsense already. If you won't take my word for it, read this 2016 NIST password rules recommendation. It's right there, "no composition rules". However, I do see one error, it should have said "no bullshit composition rules". What do you think? -
Interviews: Stack Overflow Co-Founder Jeff Atwood Answers Your Questions
A few weeks ago you had a chance to ask author, entrepreneur, and software developer Jeff Atwood about founding Stack Overflow and the Stack Exchange Network, as well as his new endeavor, the Discourse open-source discussion platform. Below you will find his answers to your questions. Magic wand
by Anonymous Coward
If you had a magic wand to make one change in technology right now, what would it be?
Atwood: Users would not have to generate, remember, enter, or ever think about passwords again. Computers would automatically know who the user is through a combination of ambient biometrics plus physical possession of some kind of device. Like, say, a smartphone.
Passwords are the enemy. And the users, because we are the idiots put in charge of making up the passwords. But mostly, it's the *goddamn passwords*.
Why did you choose Microsoft Platform for SE?
by Sadsfae
I don't see many large, high profile sites running an entire Microsoft Windows stack nowadays (IIS/SQL Server, etc) but Stack Exchange is one of them.
What were the reasons behind choosing a full Microsoft stack versus any of the Open Source alternatives which seem much more prevalent, especially in start-ups and smaller businesses for web presence?
Atwood: Mostly, C# is what I knew and what I was skilled in -- and I'm a great fan of its primary architect Anders Hejsberg who also created Turbo Pascal and Delphi. Performance was a goal, too, and since C# is a compiled language it's *extremely* fast. I think you can see for yourself that Stack Overflow is absurdly fast. Having switched to Ruby with the Discourse project, I can also testify that Ruby .. is, uh ... not ... absurdly fast.
The only downside of the .NET environment is, honestly, the SQL Server licensing costs which can be quite extreme at scale. There is movement to make .NET more open source. Plus the long running mono effort.
The main weakness of .NET is that it's not great for open source projects, though that has changed a bit over the last few years. It never really made sense to open source Stack Overflow -- ask yourself, how many Stack Overflow clones have flourished? Why is that? As a closed source project, the performance, great language design, and scaling of C# worked for us.
I made different choices for Discourse which *was* designed to be an open source project, a tool that is widely applicable to many communities, from day zero.
History of StackExchange
by unencode200x
A question on the history of Stack Exchange. What was the original idea that drove you to make StackExchange and how has it evolved or added since?
Atwood: Do you remember a site called Experts-Exchange? No? That means we succeeded at our original goal.
The basic concept was to do a 100% community driven Q&A that had elements of:
- Wikipedia (all the articles are always up to date and not dead tombstones from six years ago).
- Reddit (voting up the good information and voting down the bad information).
- Blogs (ownership, curation, and responsibility for content that has your name on it).
- Videogames (the Xbox 360 Achievements system, points, and ways of encouraging and incentivizing positive community behavior that are fun).
Where everything we build together is creative commons, and belongs to all of us, since you guys and gals are the ones doing all the work in the system!
Reputation mechanisms & scientific quality
by Anonymous Coward
Jeff, have you thought about how to use reputation mechanisms to improve the quality of published scientific results? I'm asking in the context of John P. A. Ioannidis' famous paper.
It seems to me one fix for this (horrible) problem might be an online reputation mechanism where scientists could rate the reproducibility of published results. Thoughts? (thanks for inventing Stack Exchange - you've done the world a big favor).
Atwood: It certainly seems applicable. The Stack engine works best for systems of data, fact, and science -- or at least a "tome of knowledge" -- where you can actually verify an answer (or five answers) as plausibly correct. You can see which topics do best on the Stack engine in the Stack Exchange directory, with a massive, Jupiter sized Stack Overflow right at the top.
There's always more than one way to do it, of course, but when you start getting dozens or hundreds of "answers" you don't have Q&A, you have a discussion with no clear answers, just opinions.
User Reputation, Moderating, and Discourse
by T.E.D.
I think its probably inarguable that the biggest innovation StackOverflow brought to the web was the centrality of reputation and user moderation to its design. Sure, our own /. had done something similar years before, and it was hardly the first either, but no website I know of had before taken it to its logical conclusion in quite the way SO does. This effectively "crowdsourced" a lot of traditional website administrative activities, which turned out to be an incredibly powerful idea. Practically all the functionality of SO is built around the concept.
So when I saw you were tackling online message boards, I expected the same kind of thing. But browsing around a typical Discourse thread, I'm not seeing that at all. Sure, users can "heart" posts, but all that does is bump a small counter next to the heart. There is no way to tell at a glance which posts users found the best and/or worst. Higher rated posts don't sort to the top, or get bigger or anything. As a result, I don't even see that feature used much. Certainly its nothing like SO, where post voting is the central activity. It also seems like moderation on Discourse is designed to be done by administrators, not users. I don't see any facility for users getting moderation privs as they gain reputation. Compared to SO, Discourse seems kind of, well, like a big step backwards in interactivity.
I'm sure I'm missing something here. What is it? Or did you really decide SO's centering of its design around users and their opinion on posts was a mistake, or perhaps just not a good fit for a more generalized discussion board?
Atwood: Sorting a conversation by votes is a pretty effective way to destroy conversation. How can you follow the logical flow of back and forth, chronological dialog when the ground is constantly shifting underneath you as posts get voted up or down? You can't.
Stack is a system of technical Q&A, where opinions are fascinating, and all, but they are completely trumped by facts, data, and science. Stack only tolerates the minimum amount of discussion necessary to get the best questions and the best answers. The goal isn't for people to talk to each other, the goal is for people to *answer the damn question*. Ideally with the aforementioned facts, data, and science, so our peers can objectively decide if the answer is correct and works.
Discourse, on the other hand, is explicitly a system of discussion and opinion. There is no right and wrong. You can't tell me my opinion that Wolverine is the coolest X-Man is wrong. Long after people have forgotten what exactly was said, they will remember how you made them feel. That's what the like (heart) action is about, and why it is featured so prominently: empathy. Discourse is a system of empathy.
We do have user trust levels in Discourse, it's just less obvious, because we're playing a different kind of game. Compare that with Stack, where your reputation number and badge counts appear prominently next to your name every time you post. Trust me, people *do* notice when you like their post. And if they see your post got 20 likes whereas their post only got two, or none, they absolutely notice that too. Discourse is more of a collaborative game, where Stack is an explicitly competitive game, and that's why the score is so prominent. The best way to motivate a programmer is to tell them someone else did it better. Don't try to race sheep, don't try to herd race horses.
There may not be re-ordering by votes in Discourse, as there is in Stack Overflow, but there is a summary mode for topics when they reach 50 or more replies. If you'd like to see this in action, visit a longer topic and press the "Summarize Topic" button at the top near the estimated read time, or as I like to call it, the TL;DR button. Then you'll see only the "best" 10 percent of that long topic. That factors in a lot of data from each post such as likes, incoming and outgoing links to the post, the number of times it has been read, total read time (we track actual on-screen read time for all posts in Discourse), number of times it has been bookmarked, number of replies, and so on. You can also expand context above (in reply to) and below (replies) for each post as needed. Or you can expand the collapsed gaps as needed. Try it, you just need a long topic with over 50 replies to see it in action.
Cargo cult programming and Stack Overflow
by Anonymous Coward
I don't mean to minimize StackOverflow's contribution to the online knowledge base, because it's a great tool when used properly. I'm a systems guy and Server Fault is often more useful than vendor support for looking up strange error messages and possible troubleshooting routes. But, there are a lot of low skill programmers and sysadmins out there who lean on these tools way too much. How do you feel about these properties contributing to the crappy cargo cult programming and sysadmin work we see in our field?
Atwood: Stack is a system of peer education at its core. The key insight is realizing that crappy programmers hurt all of us, and it's our job to learn from each other so that we have less terrible code and terrible coders to deal with in the future. Even if that terrible coder is us!
The best way to learn a topic is to teach it to someone else. That is the skill at the heart of the Stack engine. It works at three levels:
1. Selfish. I need the answer to this question or I may get fired. Give me the answer. This is ideally handled through a good search result. They get what they need.
2. Self Improvement. I want to get reputation and prove to my peers that I know what I am doing. The more I learn, the better I am at my job, the more skilled I am, and the more job satisfaction / money / prestige I can gain.
3. Advancement of our craft. Programming, physics, and math will be here long after we are all dead. It's an honor to help move science forward together as much as we can together in our lifetime, so that future programmers, physicists, and mathematicians can stand on our shoulders and do amazing, incredible things for the future of humanity.
It's fine for people to play the game at level one, because they are also helping others learn and work their way up the skill ladder. If someone is learning, and someone is teaching, we all win.
Rampant closure of questions
by WaffleMonster
From time to time I search stackoverflow for easy answers and I would say about 20% of the time the question has been closed even though it is the reason I went to stackoverflow in the first place. In most of these instances a useful answer was also provided before closure. So my question to you is simply what gives.
The most common reason for closure I run into is that the people closing it don't have any domain clue what is being asked and appear to assume if they don't understand nobody else does either.
Another common reason for closure is the "duplicate" question meme in which nuance is overlooked and questions are marked as duplicates because the people doing the marking failed to understand or appreciate the difference. This is very annoying.
Less common but equally annoying issues are closure due to chatter about domain specific algorithms not being "programming questions" or even more amusing someone posting a question that is more specifically addressed by one of a hundred different stack exchanges even though it is still on topic.
Atwood: Remember that Stack is for questions that can be explicitly answered, *not* discussion. It's not a place for "what's the best way to.." opinion sinkholes. Humans love this kind of stuff because they are social animals, and there's nothing wrong with wanting to have a discussion -- you just need to have that discussion elsewhere, because you can't have it on Stack Overflow.
We're strict about this because we've seen what happens when systems are not explicit about their goals. This way lies madness. This way lies Yahoo Answers. In Stack's case the goal is *learning*. And I do not mean accidental, random, meandering, oh-hey-check-out-this-crazy-thing-I-saw-on-Reddit learning, but highly efficient, directed learning where you are a classroom, not a social club.
Duplicates are a hard problem, for sure. That's the one place I felt we didn't make a ton of progress in my four years there, unfortunately. Human beings have the incredibly annoying habit of asking the same questions using completely and utterly different words. They're really good at it. And it is true that over time there are more and more questions and answers on Stack Overflow, so the minefield of "is this a duplicate of...?" is only getting bigger over time. It is a super hard problem. If you have specific ideas of how to handle duplicates better, don't hesitate to ask or search some of the existing topics there.
Remember, Stack Overflow is governed by programmers just like you, you are a citizen of its community just like me, and you get a say in what happens there. You could even be elected a moderator by participating in the yearly elections. So if you don't like the way things work, it's like any other democracy -- make your voice heard, vote, campaign, or run for office.
Relevance of old answers
by Scottingham
As SO ages, some of the offered solutions are no longer valid. Are there currently plans to automate some way of validating old answers automatically? This problem seems to be a larger problem with forums in general. Do you have any musings regarding aging forums?
Atwood: Anyone, even anonymous users, can suggest an edit to any question or answer on any Stack Exchange site. It is like Wikipedia in that regard. Once two other users with sufficient reputation approve the edit it goes through. Alternately, if you earn enough reputation, you can make direct edits yourself.
If you see information that's out of date, edit it to make it more up to date! Be the change you want to see, and all that.
Signal To Noise: Trolls
by Anonymous Coward
In reading your work for years and seeing your various contributions, it seems like you are fascinated with filtering out the most useful information. In many of your blog posts the insight is not yours but rather a conglomeration of chosen useful quotes and sources. I very much appreciate this. My question for you is how do you handle critical feedback vs trolls when dealing with communities. For example, the down button is often a disagree button rather than a negative point. How do you deal with mixed opinions?
To use a real life personal example, TEF noted how he felt you were suggesting that people shouldn't play around to learn. Yet, the way he said it was clearly inflammatory. How do you separate the legitimate concern and critical feedback from the troll who doesn't want to listen to your response?
Atwood: There is a reason we don't have a "dislike" or "downvote" in Discourse. How can an opinion be wrong? It can be rude, offensive, misinformed, misguided, or just plumb crazy -- but it can't be objectively *wrong*. Often the way you judge posts in Discourse is by their *lack* of likes. If nobody feels strongly enough about your reply to push the heart button on it, and 'co-sign' it with their name in public, that says something.
As for separating legitimate criticism from trolling, I don't know that actual trolls, by the strict definition of the word troll, are that common. I think bad faith makes itself quite clear in the tone and delivery of the criticism. Are you saying this in the hope that we can both learn something from the interaction, or are you saying it because you want to hurt or shame or denigrate or discredit me? Truth alone, as it turns out, isn't the whole truth. How you say something matters.
Bad faith is especially visible to the audience, who has no stake in the argument, and can be surprisingly objective in judging authenticity. One of the most striking things about the early days of Stack Overflow was seeing how people would not upvote cruelty. They wouldn't necessarily downvote it, mind you, but overt cruelty and meanness in an answer was never an effective way to get upvotes and reputation even if the technical information was sound. The best way to win an argument isn't to convince the other person, necessarily -- good luck with that -- but to convince everyone who is watching. And you will never convince an audience watching you be cruel to another person.
In life, being cruel to others may achieve some short term goals, but it is *never* a winning long term strategy. And I think that is exactly how it should be.
How do you have a good debate online?
by AmiMoJo
It seems like the internet is mostly a terrible place to have debates. Many forums quickly become echo chambers for people who want to be as offensive as possible just to prove that they can exercise their free speech rights. Other times debates are derailed by cheap tactics like being deliberately offensive to derail the arguments and bog everyone down in accusations that they are "SJWs". Ad-hominems and obvious logical fallacies seem to be the norm.
How do you plan to avoid this happening? So far no-one seems to have found a way.
Atwood: We have a few tricks up our sleeve at Discourse. We try to teach communities not just how the software works, but how human beings should work, with stuff like our Universal Rules of Civilized Discourse which is prominently featured in every install of Discourse and of course Creative Commons licensed.
I believe in the “Just in Time" theory of human behavior where we try to reach you at the exact moment you start typing your first post with the TL;DR version of those rules. And the most important rule of all for empathy is a simple one: hey, there's another person on the other side of that screen. Not just an abstract name, an avatar, a collection of pixels, but a real live human being, just like you.
I don't know if we can weaponize empathy but I'd sure like to try. Not every space has to be open to everyone, unless you work for Facebook or Twitter. Sometimes the point of having your own community is being able to close the door on people who demonstrate that they can't behave themselves in your house. Live with wolves, and you learn to howl.
Stackoverflow in hindsight
by jez9999
In hindsight, would you have reduced the scope of on-topic questions for Stackoverflow to where it's at today when you started the site knowing what you do now, and do you think it would've made the site less popular?
Atwood: Much of the strictness of Stack Overflow evolved as a side effect of the reputation system. Once you have a reputation score, you want to protect that score, and nothing devalues your own reputation more than seeing some other programmer get 300 reputation points from a humorous answer containing nothing but an XKCD comic. Anyone can post an XKCD comic; that takes no particular competence or knowledge. So the evolution in strictness -- peer reputation should come from expression of *skill*, not funny anecdotes -- was largely driven by the community, not by anyone employed at Stack Overflow.
Even knowing what I already knew, which is that putting a number next to someone's name will cause them to do whatever it takes to make that number go up -- I didn't anticipate how strong this effect would be. But ultimately I agree with it, and I think systems should trend to slightly increasing strictness over time as they grow bigger. Big cities have different problems than small cities, and they need more structure. -
Interviews: Stack Overflow Co-Founder Jeff Atwood Answers Your Questions
A few weeks ago you had a chance to ask author, entrepreneur, and software developer Jeff Atwood about founding Stack Overflow and the Stack Exchange Network, as well as his new endeavor, the Discourse open-source discussion platform. Below you will find his answers to your questions. Magic wand
by Anonymous Coward
If you had a magic wand to make one change in technology right now, what would it be?
Atwood: Users would not have to generate, remember, enter, or ever think about passwords again. Computers would automatically know who the user is through a combination of ambient biometrics plus physical possession of some kind of device. Like, say, a smartphone.
Passwords are the enemy. And the users, because we are the idiots put in charge of making up the passwords. But mostly, it's the *goddamn passwords*.
Why did you choose Microsoft Platform for SE?
by Sadsfae
I don't see many large, high profile sites running an entire Microsoft Windows stack nowadays (IIS/SQL Server, etc) but Stack Exchange is one of them.
What were the reasons behind choosing a full Microsoft stack versus any of the Open Source alternatives which seem much more prevalent, especially in start-ups and smaller businesses for web presence?
Atwood: Mostly, C# is what I knew and what I was skilled in -- and I'm a great fan of its primary architect Anders Hejsberg who also created Turbo Pascal and Delphi. Performance was a goal, too, and since C# is a compiled language it's *extremely* fast. I think you can see for yourself that Stack Overflow is absurdly fast. Having switched to Ruby with the Discourse project, I can also testify that Ruby .. is, uh ... not ... absurdly fast.
The only downside of the .NET environment is, honestly, the SQL Server licensing costs which can be quite extreme at scale. There is movement to make .NET more open source. Plus the long running mono effort.
The main weakness of .NET is that it's not great for open source projects, though that has changed a bit over the last few years. It never really made sense to open source Stack Overflow -- ask yourself, how many Stack Overflow clones have flourished? Why is that? As a closed source project, the performance, great language design, and scaling of C# worked for us.
I made different choices for Discourse which *was* designed to be an open source project, a tool that is widely applicable to many communities, from day zero.
History of StackExchange
by unencode200x
A question on the history of Stack Exchange. What was the original idea that drove you to make StackExchange and how has it evolved or added since?
Atwood: Do you remember a site called Experts-Exchange? No? That means we succeeded at our original goal.
The basic concept was to do a 100% community driven Q&A that had elements of:
- Wikipedia (all the articles are always up to date and not dead tombstones from six years ago).
- Reddit (voting up the good information and voting down the bad information).
- Blogs (ownership, curation, and responsibility for content that has your name on it).
- Videogames (the Xbox 360 Achievements system, points, and ways of encouraging and incentivizing positive community behavior that are fun).
Where everything we build together is creative commons, and belongs to all of us, since you guys and gals are the ones doing all the work in the system!
Reputation mechanisms & scientific quality
by Anonymous Coward
Jeff, have you thought about how to use reputation mechanisms to improve the quality of published scientific results? I'm asking in the context of John P. A. Ioannidis' famous paper.
It seems to me one fix for this (horrible) problem might be an online reputation mechanism where scientists could rate the reproducibility of published results. Thoughts? (thanks for inventing Stack Exchange - you've done the world a big favor).
Atwood: It certainly seems applicable. The Stack engine works best for systems of data, fact, and science -- or at least a "tome of knowledge" -- where you can actually verify an answer (or five answers) as plausibly correct. You can see which topics do best on the Stack engine in the Stack Exchange directory, with a massive, Jupiter sized Stack Overflow right at the top.
There's always more than one way to do it, of course, but when you start getting dozens or hundreds of "answers" you don't have Q&A, you have a discussion with no clear answers, just opinions.
User Reputation, Moderating, and Discourse
by T.E.D.
I think its probably inarguable that the biggest innovation StackOverflow brought to the web was the centrality of reputation and user moderation to its design. Sure, our own /. had done something similar years before, and it was hardly the first either, but no website I know of had before taken it to its logical conclusion in quite the way SO does. This effectively "crowdsourced" a lot of traditional website administrative activities, which turned out to be an incredibly powerful idea. Practically all the functionality of SO is built around the concept.
So when I saw you were tackling online message boards, I expected the same kind of thing. But browsing around a typical Discourse thread, I'm not seeing that at all. Sure, users can "heart" posts, but all that does is bump a small counter next to the heart. There is no way to tell at a glance which posts users found the best and/or worst. Higher rated posts don't sort to the top, or get bigger or anything. As a result, I don't even see that feature used much. Certainly its nothing like SO, where post voting is the central activity. It also seems like moderation on Discourse is designed to be done by administrators, not users. I don't see any facility for users getting moderation privs as they gain reputation. Compared to SO, Discourse seems kind of, well, like a big step backwards in interactivity.
I'm sure I'm missing something here. What is it? Or did you really decide SO's centering of its design around users and their opinion on posts was a mistake, or perhaps just not a good fit for a more generalized discussion board?
Atwood: Sorting a conversation by votes is a pretty effective way to destroy conversation. How can you follow the logical flow of back and forth, chronological dialog when the ground is constantly shifting underneath you as posts get voted up or down? You can't.
Stack is a system of technical Q&A, where opinions are fascinating, and all, but they are completely trumped by facts, data, and science. Stack only tolerates the minimum amount of discussion necessary to get the best questions and the best answers. The goal isn't for people to talk to each other, the goal is for people to *answer the damn question*. Ideally with the aforementioned facts, data, and science, so our peers can objectively decide if the answer is correct and works.
Discourse, on the other hand, is explicitly a system of discussion and opinion. There is no right and wrong. You can't tell me my opinion that Wolverine is the coolest X-Man is wrong. Long after people have forgotten what exactly was said, they will remember how you made them feel. That's what the like (heart) action is about, and why it is featured so prominently: empathy. Discourse is a system of empathy.
We do have user trust levels in Discourse, it's just less obvious, because we're playing a different kind of game. Compare that with Stack, where your reputation number and badge counts appear prominently next to your name every time you post. Trust me, people *do* notice when you like their post. And if they see your post got 20 likes whereas their post only got two, or none, they absolutely notice that too. Discourse is more of a collaborative game, where Stack is an explicitly competitive game, and that's why the score is so prominent. The best way to motivate a programmer is to tell them someone else did it better. Don't try to race sheep, don't try to herd race horses.
There may not be re-ordering by votes in Discourse, as there is in Stack Overflow, but there is a summary mode for topics when they reach 50 or more replies. If you'd like to see this in action, visit a longer topic and press the "Summarize Topic" button at the top near the estimated read time, or as I like to call it, the TL;DR button. Then you'll see only the "best" 10 percent of that long topic. That factors in a lot of data from each post such as likes, incoming and outgoing links to the post, the number of times it has been read, total read time (we track actual on-screen read time for all posts in Discourse), number of times it has been bookmarked, number of replies, and so on. You can also expand context above (in reply to) and below (replies) for each post as needed. Or you can expand the collapsed gaps as needed. Try it, you just need a long topic with over 50 replies to see it in action.
Cargo cult programming and Stack Overflow
by Anonymous Coward
I don't mean to minimize StackOverflow's contribution to the online knowledge base, because it's a great tool when used properly. I'm a systems guy and Server Fault is often more useful than vendor support for looking up strange error messages and possible troubleshooting routes. But, there are a lot of low skill programmers and sysadmins out there who lean on these tools way too much. How do you feel about these properties contributing to the crappy cargo cult programming and sysadmin work we see in our field?
Atwood: Stack is a system of peer education at its core. The key insight is realizing that crappy programmers hurt all of us, and it's our job to learn from each other so that we have less terrible code and terrible coders to deal with in the future. Even if that terrible coder is us!
The best way to learn a topic is to teach it to someone else. That is the skill at the heart of the Stack engine. It works at three levels:
1. Selfish. I need the answer to this question or I may get fired. Give me the answer. This is ideally handled through a good search result. They get what they need.
2. Self Improvement. I want to get reputation and prove to my peers that I know what I am doing. The more I learn, the better I am at my job, the more skilled I am, and the more job satisfaction / money / prestige I can gain.
3. Advancement of our craft. Programming, physics, and math will be here long after we are all dead. It's an honor to help move science forward together as much as we can together in our lifetime, so that future programmers, physicists, and mathematicians can stand on our shoulders and do amazing, incredible things for the future of humanity.
It's fine for people to play the game at level one, because they are also helping others learn and work their way up the skill ladder. If someone is learning, and someone is teaching, we all win.
Rampant closure of questions
by WaffleMonster
From time to time I search stackoverflow for easy answers and I would say about 20% of the time the question has been closed even though it is the reason I went to stackoverflow in the first place. In most of these instances a useful answer was also provided before closure. So my question to you is simply what gives.
The most common reason for closure I run into is that the people closing it don't have any domain clue what is being asked and appear to assume if they don't understand nobody else does either.
Another common reason for closure is the "duplicate" question meme in which nuance is overlooked and questions are marked as duplicates because the people doing the marking failed to understand or appreciate the difference. This is very annoying.
Less common but equally annoying issues are closure due to chatter about domain specific algorithms not being "programming questions" or even more amusing someone posting a question that is more specifically addressed by one of a hundred different stack exchanges even though it is still on topic.
Atwood: Remember that Stack is for questions that can be explicitly answered, *not* discussion. It's not a place for "what's the best way to.." opinion sinkholes. Humans love this kind of stuff because they are social animals, and there's nothing wrong with wanting to have a discussion -- you just need to have that discussion elsewhere, because you can't have it on Stack Overflow.
We're strict about this because we've seen what happens when systems are not explicit about their goals. This way lies madness. This way lies Yahoo Answers. In Stack's case the goal is *learning*. And I do not mean accidental, random, meandering, oh-hey-check-out-this-crazy-thing-I-saw-on-Reddit learning, but highly efficient, directed learning where you are a classroom, not a social club.
Duplicates are a hard problem, for sure. That's the one place I felt we didn't make a ton of progress in my four years there, unfortunately. Human beings have the incredibly annoying habit of asking the same questions using completely and utterly different words. They're really good at it. And it is true that over time there are more and more questions and answers on Stack Overflow, so the minefield of "is this a duplicate of...?" is only getting bigger over time. It is a super hard problem. If you have specific ideas of how to handle duplicates better, don't hesitate to ask or search some of the existing topics there.
Remember, Stack Overflow is governed by programmers just like you, you are a citizen of its community just like me, and you get a say in what happens there. You could even be elected a moderator by participating in the yearly elections. So if you don't like the way things work, it's like any other democracy -- make your voice heard, vote, campaign, or run for office.
Relevance of old answers
by Scottingham
As SO ages, some of the offered solutions are no longer valid. Are there currently plans to automate some way of validating old answers automatically? This problem seems to be a larger problem with forums in general. Do you have any musings regarding aging forums?
Atwood: Anyone, even anonymous users, can suggest an edit to any question or answer on any Stack Exchange site. It is like Wikipedia in that regard. Once two other users with sufficient reputation approve the edit it goes through. Alternately, if you earn enough reputation, you can make direct edits yourself.
If you see information that's out of date, edit it to make it more up to date! Be the change you want to see, and all that.
Signal To Noise: Trolls
by Anonymous Coward
In reading your work for years and seeing your various contributions, it seems like you are fascinated with filtering out the most useful information. In many of your blog posts the insight is not yours but rather a conglomeration of chosen useful quotes and sources. I very much appreciate this. My question for you is how do you handle critical feedback vs trolls when dealing with communities. For example, the down button is often a disagree button rather than a negative point. How do you deal with mixed opinions?
To use a real life personal example, TEF noted how he felt you were suggesting that people shouldn't play around to learn. Yet, the way he said it was clearly inflammatory. How do you separate the legitimate concern and critical feedback from the troll who doesn't want to listen to your response?
Atwood: There is a reason we don't have a "dislike" or "downvote" in Discourse. How can an opinion be wrong? It can be rude, offensive, misinformed, misguided, or just plumb crazy -- but it can't be objectively *wrong*. Often the way you judge posts in Discourse is by their *lack* of likes. If nobody feels strongly enough about your reply to push the heart button on it, and 'co-sign' it with their name in public, that says something.
As for separating legitimate criticism from trolling, I don't know that actual trolls, by the strict definition of the word troll, are that common. I think bad faith makes itself quite clear in the tone and delivery of the criticism. Are you saying this in the hope that we can both learn something from the interaction, or are you saying it because you want to hurt or shame or denigrate or discredit me? Truth alone, as it turns out, isn't the whole truth. How you say something matters.
Bad faith is especially visible to the audience, who has no stake in the argument, and can be surprisingly objective in judging authenticity. One of the most striking things about the early days of Stack Overflow was seeing how people would not upvote cruelty. They wouldn't necessarily downvote it, mind you, but overt cruelty and meanness in an answer was never an effective way to get upvotes and reputation even if the technical information was sound. The best way to win an argument isn't to convince the other person, necessarily -- good luck with that -- but to convince everyone who is watching. And you will never convince an audience watching you be cruel to another person.
In life, being cruel to others may achieve some short term goals, but it is *never* a winning long term strategy. And I think that is exactly how it should be.
How do you have a good debate online?
by AmiMoJo
It seems like the internet is mostly a terrible place to have debates. Many forums quickly become echo chambers for people who want to be as offensive as possible just to prove that they can exercise their free speech rights. Other times debates are derailed by cheap tactics like being deliberately offensive to derail the arguments and bog everyone down in accusations that they are "SJWs". Ad-hominems and obvious logical fallacies seem to be the norm.
How do you plan to avoid this happening? So far no-one seems to have found a way.
Atwood: We have a few tricks up our sleeve at Discourse. We try to teach communities not just how the software works, but how human beings should work, with stuff like our Universal Rules of Civilized Discourse which is prominently featured in every install of Discourse and of course Creative Commons licensed.
I believe in the “Just in Time" theory of human behavior where we try to reach you at the exact moment you start typing your first post with the TL;DR version of those rules. And the most important rule of all for empathy is a simple one: hey, there's another person on the other side of that screen. Not just an abstract name, an avatar, a collection of pixels, but a real live human being, just like you.
I don't know if we can weaponize empathy but I'd sure like to try. Not every space has to be open to everyone, unless you work for Facebook or Twitter. Sometimes the point of having your own community is being able to close the door on people who demonstrate that they can't behave themselves in your house. Live with wolves, and you learn to howl.
Stackoverflow in hindsight
by jez9999
In hindsight, would you have reduced the scope of on-topic questions for Stackoverflow to where it's at today when you started the site knowing what you do now, and do you think it would've made the site less popular?
Atwood: Much of the strictness of Stack Overflow evolved as a side effect of the reputation system. Once you have a reputation score, you want to protect that score, and nothing devalues your own reputation more than seeing some other programmer get 300 reputation points from a humorous answer containing nothing but an XKCD comic. Anyone can post an XKCD comic; that takes no particular competence or knowledge. So the evolution in strictness -- peer reputation should come from expression of *skill*, not funny anecdotes -- was largely driven by the community, not by anyone employed at Stack Overflow.
Even knowing what I already knew, which is that putting a number next to someone's name will cause them to do whatever it takes to make that number go up -- I didn't anticipate how strong this effect would be. But ultimately I agree with it, and I think systems should trend to slightly increasing strictness over time as they grow bigger. Big cities have different problems than small cities, and they need more structure. -
Interviews: Stack Overflow Co-Founder Jeff Atwood Answers Your Questions
A few weeks ago you had a chance to ask author, entrepreneur, and software developer Jeff Atwood about founding Stack Overflow and the Stack Exchange Network, as well as his new endeavor, the Discourse open-source discussion platform. Below you will find his answers to your questions. Magic wand
by Anonymous Coward
If you had a magic wand to make one change in technology right now, what would it be?
Atwood: Users would not have to generate, remember, enter, or ever think about passwords again. Computers would automatically know who the user is through a combination of ambient biometrics plus physical possession of some kind of device. Like, say, a smartphone.
Passwords are the enemy. And the users, because we are the idiots put in charge of making up the passwords. But mostly, it's the *goddamn passwords*.
Why did you choose Microsoft Platform for SE?
by Sadsfae
I don't see many large, high profile sites running an entire Microsoft Windows stack nowadays (IIS/SQL Server, etc) but Stack Exchange is one of them.
What were the reasons behind choosing a full Microsoft stack versus any of the Open Source alternatives which seem much more prevalent, especially in start-ups and smaller businesses for web presence?
Atwood: Mostly, C# is what I knew and what I was skilled in -- and I'm a great fan of its primary architect Anders Hejsberg who also created Turbo Pascal and Delphi. Performance was a goal, too, and since C# is a compiled language it's *extremely* fast. I think you can see for yourself that Stack Overflow is absurdly fast. Having switched to Ruby with the Discourse project, I can also testify that Ruby .. is, uh ... not ... absurdly fast.
The only downside of the .NET environment is, honestly, the SQL Server licensing costs which can be quite extreme at scale. There is movement to make .NET more open source. Plus the long running mono effort.
The main weakness of .NET is that it's not great for open source projects, though that has changed a bit over the last few years. It never really made sense to open source Stack Overflow -- ask yourself, how many Stack Overflow clones have flourished? Why is that? As a closed source project, the performance, great language design, and scaling of C# worked for us.
I made different choices for Discourse which *was* designed to be an open source project, a tool that is widely applicable to many communities, from day zero.
History of StackExchange
by unencode200x
A question on the history of Stack Exchange. What was the original idea that drove you to make StackExchange and how has it evolved or added since?
Atwood: Do you remember a site called Experts-Exchange? No? That means we succeeded at our original goal.
The basic concept was to do a 100% community driven Q&A that had elements of:
- Wikipedia (all the articles are always up to date and not dead tombstones from six years ago).
- Reddit (voting up the good information and voting down the bad information).
- Blogs (ownership, curation, and responsibility for content that has your name on it).
- Videogames (the Xbox 360 Achievements system, points, and ways of encouraging and incentivizing positive community behavior that are fun).
Where everything we build together is creative commons, and belongs to all of us, since you guys and gals are the ones doing all the work in the system!
Reputation mechanisms & scientific quality
by Anonymous Coward
Jeff, have you thought about how to use reputation mechanisms to improve the quality of published scientific results? I'm asking in the context of John P. A. Ioannidis' famous paper.
It seems to me one fix for this (horrible) problem might be an online reputation mechanism where scientists could rate the reproducibility of published results. Thoughts? (thanks for inventing Stack Exchange - you've done the world a big favor).
Atwood: It certainly seems applicable. The Stack engine works best for systems of data, fact, and science -- or at least a "tome of knowledge" -- where you can actually verify an answer (or five answers) as plausibly correct. You can see which topics do best on the Stack engine in the Stack Exchange directory, with a massive, Jupiter sized Stack Overflow right at the top.
There's always more than one way to do it, of course, but when you start getting dozens or hundreds of "answers" you don't have Q&A, you have a discussion with no clear answers, just opinions.
User Reputation, Moderating, and Discourse
by T.E.D.
I think its probably inarguable that the biggest innovation StackOverflow brought to the web was the centrality of reputation and user moderation to its design. Sure, our own /. had done something similar years before, and it was hardly the first either, but no website I know of had before taken it to its logical conclusion in quite the way SO does. This effectively "crowdsourced" a lot of traditional website administrative activities, which turned out to be an incredibly powerful idea. Practically all the functionality of SO is built around the concept.
So when I saw you were tackling online message boards, I expected the same kind of thing. But browsing around a typical Discourse thread, I'm not seeing that at all. Sure, users can "heart" posts, but all that does is bump a small counter next to the heart. There is no way to tell at a glance which posts users found the best and/or worst. Higher rated posts don't sort to the top, or get bigger or anything. As a result, I don't even see that feature used much. Certainly its nothing like SO, where post voting is the central activity. It also seems like moderation on Discourse is designed to be done by administrators, not users. I don't see any facility for users getting moderation privs as they gain reputation. Compared to SO, Discourse seems kind of, well, like a big step backwards in interactivity.
I'm sure I'm missing something here. What is it? Or did you really decide SO's centering of its design around users and their opinion on posts was a mistake, or perhaps just not a good fit for a more generalized discussion board?
Atwood: Sorting a conversation by votes is a pretty effective way to destroy conversation. How can you follow the logical flow of back and forth, chronological dialog when the ground is constantly shifting underneath you as posts get voted up or down? You can't.
Stack is a system of technical Q&A, where opinions are fascinating, and all, but they are completely trumped by facts, data, and science. Stack only tolerates the minimum amount of discussion necessary to get the best questions and the best answers. The goal isn't for people to talk to each other, the goal is for people to *answer the damn question*. Ideally with the aforementioned facts, data, and science, so our peers can objectively decide if the answer is correct and works.
Discourse, on the other hand, is explicitly a system of discussion and opinion. There is no right and wrong. You can't tell me my opinion that Wolverine is the coolest X-Man is wrong. Long after people have forgotten what exactly was said, they will remember how you made them feel. That's what the like (heart) action is about, and why it is featured so prominently: empathy. Discourse is a system of empathy.
We do have user trust levels in Discourse, it's just less obvious, because we're playing a different kind of game. Compare that with Stack, where your reputation number and badge counts appear prominently next to your name every time you post. Trust me, people *do* notice when you like their post. And if they see your post got 20 likes whereas their post only got two, or none, they absolutely notice that too. Discourse is more of a collaborative game, where Stack is an explicitly competitive game, and that's why the score is so prominent. The best way to motivate a programmer is to tell them someone else did it better. Don't try to race sheep, don't try to herd race horses.
There may not be re-ordering by votes in Discourse, as there is in Stack Overflow, but there is a summary mode for topics when they reach 50 or more replies. If you'd like to see this in action, visit a longer topic and press the "Summarize Topic" button at the top near the estimated read time, or as I like to call it, the TL;DR button. Then you'll see only the "best" 10 percent of that long topic. That factors in a lot of data from each post such as likes, incoming and outgoing links to the post, the number of times it has been read, total read time (we track actual on-screen read time for all posts in Discourse), number of times it has been bookmarked, number of replies, and so on. You can also expand context above (in reply to) and below (replies) for each post as needed. Or you can expand the collapsed gaps as needed. Try it, you just need a long topic with over 50 replies to see it in action.
Cargo cult programming and Stack Overflow
by Anonymous Coward
I don't mean to minimize StackOverflow's contribution to the online knowledge base, because it's a great tool when used properly. I'm a systems guy and Server Fault is often more useful than vendor support for looking up strange error messages and possible troubleshooting routes. But, there are a lot of low skill programmers and sysadmins out there who lean on these tools way too much. How do you feel about these properties contributing to the crappy cargo cult programming and sysadmin work we see in our field?
Atwood: Stack is a system of peer education at its core. The key insight is realizing that crappy programmers hurt all of us, and it's our job to learn from each other so that we have less terrible code and terrible coders to deal with in the future. Even if that terrible coder is us!
The best way to learn a topic is to teach it to someone else. That is the skill at the heart of the Stack engine. It works at three levels:
1. Selfish. I need the answer to this question or I may get fired. Give me the answer. This is ideally handled through a good search result. They get what they need.
2. Self Improvement. I want to get reputation and prove to my peers that I know what I am doing. The more I learn, the better I am at my job, the more skilled I am, and the more job satisfaction / money / prestige I can gain.
3. Advancement of our craft. Programming, physics, and math will be here long after we are all dead. It's an honor to help move science forward together as much as we can together in our lifetime, so that future programmers, physicists, and mathematicians can stand on our shoulders and do amazing, incredible things for the future of humanity.
It's fine for people to play the game at level one, because they are also helping others learn and work their way up the skill ladder. If someone is learning, and someone is teaching, we all win.
Rampant closure of questions
by WaffleMonster
From time to time I search stackoverflow for easy answers and I would say about 20% of the time the question has been closed even though it is the reason I went to stackoverflow in the first place. In most of these instances a useful answer was also provided before closure. So my question to you is simply what gives.
The most common reason for closure I run into is that the people closing it don't have any domain clue what is being asked and appear to assume if they don't understand nobody else does either.
Another common reason for closure is the "duplicate" question meme in which nuance is overlooked and questions are marked as duplicates because the people doing the marking failed to understand or appreciate the difference. This is very annoying.
Less common but equally annoying issues are closure due to chatter about domain specific algorithms not being "programming questions" or even more amusing someone posting a question that is more specifically addressed by one of a hundred different stack exchanges even though it is still on topic.
Atwood: Remember that Stack is for questions that can be explicitly answered, *not* discussion. It's not a place for "what's the best way to.." opinion sinkholes. Humans love this kind of stuff because they are social animals, and there's nothing wrong with wanting to have a discussion -- you just need to have that discussion elsewhere, because you can't have it on Stack Overflow.
We're strict about this because we've seen what happens when systems are not explicit about their goals. This way lies madness. This way lies Yahoo Answers. In Stack's case the goal is *learning*. And I do not mean accidental, random, meandering, oh-hey-check-out-this-crazy-thing-I-saw-on-Reddit learning, but highly efficient, directed learning where you are a classroom, not a social club.
Duplicates are a hard problem, for sure. That's the one place I felt we didn't make a ton of progress in my four years there, unfortunately. Human beings have the incredibly annoying habit of asking the same questions using completely and utterly different words. They're really good at it. And it is true that over time there are more and more questions and answers on Stack Overflow, so the minefield of "is this a duplicate of...?" is only getting bigger over time. It is a super hard problem. If you have specific ideas of how to handle duplicates better, don't hesitate to ask or search some of the existing topics there.
Remember, Stack Overflow is governed by programmers just like you, you are a citizen of its community just like me, and you get a say in what happens there. You could even be elected a moderator by participating in the yearly elections. So if you don't like the way things work, it's like any other democracy -- make your voice heard, vote, campaign, or run for office.
Relevance of old answers
by Scottingham
As SO ages, some of the offered solutions are no longer valid. Are there currently plans to automate some way of validating old answers automatically? This problem seems to be a larger problem with forums in general. Do you have any musings regarding aging forums?
Atwood: Anyone, even anonymous users, can suggest an edit to any question or answer on any Stack Exchange site. It is like Wikipedia in that regard. Once two other users with sufficient reputation approve the edit it goes through. Alternately, if you earn enough reputation, you can make direct edits yourself.
If you see information that's out of date, edit it to make it more up to date! Be the change you want to see, and all that.
Signal To Noise: Trolls
by Anonymous Coward
In reading your work for years and seeing your various contributions, it seems like you are fascinated with filtering out the most useful information. In many of your blog posts the insight is not yours but rather a conglomeration of chosen useful quotes and sources. I very much appreciate this. My question for you is how do you handle critical feedback vs trolls when dealing with communities. For example, the down button is often a disagree button rather than a negative point. How do you deal with mixed opinions?
To use a real life personal example, TEF noted how he felt you were suggesting that people shouldn't play around to learn. Yet, the way he said it was clearly inflammatory. How do you separate the legitimate concern and critical feedback from the troll who doesn't want to listen to your response?
Atwood: There is a reason we don't have a "dislike" or "downvote" in Discourse. How can an opinion be wrong? It can be rude, offensive, misinformed, misguided, or just plumb crazy -- but it can't be objectively *wrong*. Often the way you judge posts in Discourse is by their *lack* of likes. If nobody feels strongly enough about your reply to push the heart button on it, and 'co-sign' it with their name in public, that says something.
As for separating legitimate criticism from trolling, I don't know that actual trolls, by the strict definition of the word troll, are that common. I think bad faith makes itself quite clear in the tone and delivery of the criticism. Are you saying this in the hope that we can both learn something from the interaction, or are you saying it because you want to hurt or shame or denigrate or discredit me? Truth alone, as it turns out, isn't the whole truth. How you say something matters.
Bad faith is especially visible to the audience, who has no stake in the argument, and can be surprisingly objective in judging authenticity. One of the most striking things about the early days of Stack Overflow was seeing how people would not upvote cruelty. They wouldn't necessarily downvote it, mind you, but overt cruelty and meanness in an answer was never an effective way to get upvotes and reputation even if the technical information was sound. The best way to win an argument isn't to convince the other person, necessarily -- good luck with that -- but to convince everyone who is watching. And you will never convince an audience watching you be cruel to another person.
In life, being cruel to others may achieve some short term goals, but it is *never* a winning long term strategy. And I think that is exactly how it should be.
How do you have a good debate online?
by AmiMoJo
It seems like the internet is mostly a terrible place to have debates. Many forums quickly become echo chambers for people who want to be as offensive as possible just to prove that they can exercise their free speech rights. Other times debates are derailed by cheap tactics like being deliberately offensive to derail the arguments and bog everyone down in accusations that they are "SJWs". Ad-hominems and obvious logical fallacies seem to be the norm.
How do you plan to avoid this happening? So far no-one seems to have found a way.
Atwood: We have a few tricks up our sleeve at Discourse. We try to teach communities not just how the software works, but how human beings should work, with stuff like our Universal Rules of Civilized Discourse which is prominently featured in every install of Discourse and of course Creative Commons licensed.
I believe in the “Just in Time" theory of human behavior where we try to reach you at the exact moment you start typing your first post with the TL;DR version of those rules. And the most important rule of all for empathy is a simple one: hey, there's another person on the other side of that screen. Not just an abstract name, an avatar, a collection of pixels, but a real live human being, just like you.
I don't know if we can weaponize empathy but I'd sure like to try. Not every space has to be open to everyone, unless you work for Facebook or Twitter. Sometimes the point of having your own community is being able to close the door on people who demonstrate that they can't behave themselves in your house. Live with wolves, and you learn to howl.
Stackoverflow in hindsight
by jez9999
In hindsight, would you have reduced the scope of on-topic questions for Stackoverflow to where it's at today when you started the site knowing what you do now, and do you think it would've made the site less popular?
Atwood: Much of the strictness of Stack Overflow evolved as a side effect of the reputation system. Once you have a reputation score, you want to protect that score, and nothing devalues your own reputation more than seeing some other programmer get 300 reputation points from a humorous answer containing nothing but an XKCD comic. Anyone can post an XKCD comic; that takes no particular competence or knowledge. So the evolution in strictness -- peer reputation should come from expression of *skill*, not funny anecdotes -- was largely driven by the community, not by anyone employed at Stack Overflow.
Even knowing what I already knew, which is that putting a number next to someone's name will cause them to do whatever it takes to make that number go up -- I didn't anticipate how strong this effect would be. But ultimately I agree with it, and I think systems should trend to slightly increasing strictness over time as they grow bigger. Big cities have different problems than small cities, and they need more structure. -
Interviews: Stack Overflow Co-Founder Jeff Atwood Answers Your Questions
A few weeks ago you had a chance to ask author, entrepreneur, and software developer Jeff Atwood about founding Stack Overflow and the Stack Exchange Network, as well as his new endeavor, the Discourse open-source discussion platform. Below you will find his answers to your questions. Magic wand
by Anonymous Coward
If you had a magic wand to make one change in technology right now, what would it be?
Atwood: Users would not have to generate, remember, enter, or ever think about passwords again. Computers would automatically know who the user is through a combination of ambient biometrics plus physical possession of some kind of device. Like, say, a smartphone.
Passwords are the enemy. And the users, because we are the idiots put in charge of making up the passwords. But mostly, it's the *goddamn passwords*.
Why did you choose Microsoft Platform for SE?
by Sadsfae
I don't see many large, high profile sites running an entire Microsoft Windows stack nowadays (IIS/SQL Server, etc) but Stack Exchange is one of them.
What were the reasons behind choosing a full Microsoft stack versus any of the Open Source alternatives which seem much more prevalent, especially in start-ups and smaller businesses for web presence?
Atwood: Mostly, C# is what I knew and what I was skilled in -- and I'm a great fan of its primary architect Anders Hejsberg who also created Turbo Pascal and Delphi. Performance was a goal, too, and since C# is a compiled language it's *extremely* fast. I think you can see for yourself that Stack Overflow is absurdly fast. Having switched to Ruby with the Discourse project, I can also testify that Ruby .. is, uh ... not ... absurdly fast.
The only downside of the .NET environment is, honestly, the SQL Server licensing costs which can be quite extreme at scale. There is movement to make .NET more open source. Plus the long running mono effort.
The main weakness of .NET is that it's not great for open source projects, though that has changed a bit over the last few years. It never really made sense to open source Stack Overflow -- ask yourself, how many Stack Overflow clones have flourished? Why is that? As a closed source project, the performance, great language design, and scaling of C# worked for us.
I made different choices for Discourse which *was* designed to be an open source project, a tool that is widely applicable to many communities, from day zero.
History of StackExchange
by unencode200x
A question on the history of Stack Exchange. What was the original idea that drove you to make StackExchange and how has it evolved or added since?
Atwood: Do you remember a site called Experts-Exchange? No? That means we succeeded at our original goal.
The basic concept was to do a 100% community driven Q&A that had elements of:
- Wikipedia (all the articles are always up to date and not dead tombstones from six years ago).
- Reddit (voting up the good information and voting down the bad information).
- Blogs (ownership, curation, and responsibility for content that has your name on it).
- Videogames (the Xbox 360 Achievements system, points, and ways of encouraging and incentivizing positive community behavior that are fun).
Where everything we build together is creative commons, and belongs to all of us, since you guys and gals are the ones doing all the work in the system!
Reputation mechanisms & scientific quality
by Anonymous Coward
Jeff, have you thought about how to use reputation mechanisms to improve the quality of published scientific results? I'm asking in the context of John P. A. Ioannidis' famous paper.
It seems to me one fix for this (horrible) problem might be an online reputation mechanism where scientists could rate the reproducibility of published results. Thoughts? (thanks for inventing Stack Exchange - you've done the world a big favor).
Atwood: It certainly seems applicable. The Stack engine works best for systems of data, fact, and science -- or at least a "tome of knowledge" -- where you can actually verify an answer (or five answers) as plausibly correct. You can see which topics do best on the Stack engine in the Stack Exchange directory, with a massive, Jupiter sized Stack Overflow right at the top.
There's always more than one way to do it, of course, but when you start getting dozens or hundreds of "answers" you don't have Q&A, you have a discussion with no clear answers, just opinions.
User Reputation, Moderating, and Discourse
by T.E.D.
I think its probably inarguable that the biggest innovation StackOverflow brought to the web was the centrality of reputation and user moderation to its design. Sure, our own /. had done something similar years before, and it was hardly the first either, but no website I know of had before taken it to its logical conclusion in quite the way SO does. This effectively "crowdsourced" a lot of traditional website administrative activities, which turned out to be an incredibly powerful idea. Practically all the functionality of SO is built around the concept.
So when I saw you were tackling online message boards, I expected the same kind of thing. But browsing around a typical Discourse thread, I'm not seeing that at all. Sure, users can "heart" posts, but all that does is bump a small counter next to the heart. There is no way to tell at a glance which posts users found the best and/or worst. Higher rated posts don't sort to the top, or get bigger or anything. As a result, I don't even see that feature used much. Certainly its nothing like SO, where post voting is the central activity. It also seems like moderation on Discourse is designed to be done by administrators, not users. I don't see any facility for users getting moderation privs as they gain reputation. Compared to SO, Discourse seems kind of, well, like a big step backwards in interactivity.
I'm sure I'm missing something here. What is it? Or did you really decide SO's centering of its design around users and their opinion on posts was a mistake, or perhaps just not a good fit for a more generalized discussion board?
Atwood: Sorting a conversation by votes is a pretty effective way to destroy conversation. How can you follow the logical flow of back and forth, chronological dialog when the ground is constantly shifting underneath you as posts get voted up or down? You can't.
Stack is a system of technical Q&A, where opinions are fascinating, and all, but they are completely trumped by facts, data, and science. Stack only tolerates the minimum amount of discussion necessary to get the best questions and the best answers. The goal isn't for people to talk to each other, the goal is for people to *answer the damn question*. Ideally with the aforementioned facts, data, and science, so our peers can objectively decide if the answer is correct and works.
Discourse, on the other hand, is explicitly a system of discussion and opinion. There is no right and wrong. You can't tell me my opinion that Wolverine is the coolest X-Man is wrong. Long after people have forgotten what exactly was said, they will remember how you made them feel. That's what the like (heart) action is about, and why it is featured so prominently: empathy. Discourse is a system of empathy.
We do have user trust levels in Discourse, it's just less obvious, because we're playing a different kind of game. Compare that with Stack, where your reputation number and badge counts appear prominently next to your name every time you post. Trust me, people *do* notice when you like their post. And if they see your post got 20 likes whereas their post only got two, or none, they absolutely notice that too. Discourse is more of a collaborative game, where Stack is an explicitly competitive game, and that's why the score is so prominent. The best way to motivate a programmer is to tell them someone else did it better. Don't try to race sheep, don't try to herd race horses.
There may not be re-ordering by votes in Discourse, as there is in Stack Overflow, but there is a summary mode for topics when they reach 50 or more replies. If you'd like to see this in action, visit a longer topic and press the "Summarize Topic" button at the top near the estimated read time, or as I like to call it, the TL;DR button. Then you'll see only the "best" 10 percent of that long topic. That factors in a lot of data from each post such as likes, incoming and outgoing links to the post, the number of times it has been read, total read time (we track actual on-screen read time for all posts in Discourse), number of times it has been bookmarked, number of replies, and so on. You can also expand context above (in reply to) and below (replies) for each post as needed. Or you can expand the collapsed gaps as needed. Try it, you just need a long topic with over 50 replies to see it in action.
Cargo cult programming and Stack Overflow
by Anonymous Coward
I don't mean to minimize StackOverflow's contribution to the online knowledge base, because it's a great tool when used properly. I'm a systems guy and Server Fault is often more useful than vendor support for looking up strange error messages and possible troubleshooting routes. But, there are a lot of low skill programmers and sysadmins out there who lean on these tools way too much. How do you feel about these properties contributing to the crappy cargo cult programming and sysadmin work we see in our field?
Atwood: Stack is a system of peer education at its core. The key insight is realizing that crappy programmers hurt all of us, and it's our job to learn from each other so that we have less terrible code and terrible coders to deal with in the future. Even if that terrible coder is us!
The best way to learn a topic is to teach it to someone else. That is the skill at the heart of the Stack engine. It works at three levels:
1. Selfish. I need the answer to this question or I may get fired. Give me the answer. This is ideally handled through a good search result. They get what they need.
2. Self Improvement. I want to get reputation and prove to my peers that I know what I am doing. The more I learn, the better I am at my job, the more skilled I am, and the more job satisfaction / money / prestige I can gain.
3. Advancement of our craft. Programming, physics, and math will be here long after we are all dead. It's an honor to help move science forward together as much as we can together in our lifetime, so that future programmers, physicists, and mathematicians can stand on our shoulders and do amazing, incredible things for the future of humanity.
It's fine for people to play the game at level one, because they are also helping others learn and work their way up the skill ladder. If someone is learning, and someone is teaching, we all win.
Rampant closure of questions
by WaffleMonster
From time to time I search stackoverflow for easy answers and I would say about 20% of the time the question has been closed even though it is the reason I went to stackoverflow in the first place. In most of these instances a useful answer was also provided before closure. So my question to you is simply what gives.
The most common reason for closure I run into is that the people closing it don't have any domain clue what is being asked and appear to assume if they don't understand nobody else does either.
Another common reason for closure is the "duplicate" question meme in which nuance is overlooked and questions are marked as duplicates because the people doing the marking failed to understand or appreciate the difference. This is very annoying.
Less common but equally annoying issues are closure due to chatter about domain specific algorithms not being "programming questions" or even more amusing someone posting a question that is more specifically addressed by one of a hundred different stack exchanges even though it is still on topic.
Atwood: Remember that Stack is for questions that can be explicitly answered, *not* discussion. It's not a place for "what's the best way to.." opinion sinkholes. Humans love this kind of stuff because they are social animals, and there's nothing wrong with wanting to have a discussion -- you just need to have that discussion elsewhere, because you can't have it on Stack Overflow.
We're strict about this because we've seen what happens when systems are not explicit about their goals. This way lies madness. This way lies Yahoo Answers. In Stack's case the goal is *learning*. And I do not mean accidental, random, meandering, oh-hey-check-out-this-crazy-thing-I-saw-on-Reddit learning, but highly efficient, directed learning where you are a classroom, not a social club.
Duplicates are a hard problem, for sure. That's the one place I felt we didn't make a ton of progress in my four years there, unfortunately. Human beings have the incredibly annoying habit of asking the same questions using completely and utterly different words. They're really good at it. And it is true that over time there are more and more questions and answers on Stack Overflow, so the minefield of "is this a duplicate of...?" is only getting bigger over time. It is a super hard problem. If you have specific ideas of how to handle duplicates better, don't hesitate to ask or search some of the existing topics there.
Remember, Stack Overflow is governed by programmers just like you, you are a citizen of its community just like me, and you get a say in what happens there. You could even be elected a moderator by participating in the yearly elections. So if you don't like the way things work, it's like any other democracy -- make your voice heard, vote, campaign, or run for office.
Relevance of old answers
by Scottingham
As SO ages, some of the offered solutions are no longer valid. Are there currently plans to automate some way of validating old answers automatically? This problem seems to be a larger problem with forums in general. Do you have any musings regarding aging forums?
Atwood: Anyone, even anonymous users, can suggest an edit to any question or answer on any Stack Exchange site. It is like Wikipedia in that regard. Once two other users with sufficient reputation approve the edit it goes through. Alternately, if you earn enough reputation, you can make direct edits yourself.
If you see information that's out of date, edit it to make it more up to date! Be the change you want to see, and all that.
Signal To Noise: Trolls
by Anonymous Coward
In reading your work for years and seeing your various contributions, it seems like you are fascinated with filtering out the most useful information. In many of your blog posts the insight is not yours but rather a conglomeration of chosen useful quotes and sources. I very much appreciate this. My question for you is how do you handle critical feedback vs trolls when dealing with communities. For example, the down button is often a disagree button rather than a negative point. How do you deal with mixed opinions?
To use a real life personal example, TEF noted how he felt you were suggesting that people shouldn't play around to learn. Yet, the way he said it was clearly inflammatory. How do you separate the legitimate concern and critical feedback from the troll who doesn't want to listen to your response?
Atwood: There is a reason we don't have a "dislike" or "downvote" in Discourse. How can an opinion be wrong? It can be rude, offensive, misinformed, misguided, or just plumb crazy -- but it can't be objectively *wrong*. Often the way you judge posts in Discourse is by their *lack* of likes. If nobody feels strongly enough about your reply to push the heart button on it, and 'co-sign' it with their name in public, that says something.
As for separating legitimate criticism from trolling, I don't know that actual trolls, by the strict definition of the word troll, are that common. I think bad faith makes itself quite clear in the tone and delivery of the criticism. Are you saying this in the hope that we can both learn something from the interaction, or are you saying it because you want to hurt or shame or denigrate or discredit me? Truth alone, as it turns out, isn't the whole truth. How you say something matters.
Bad faith is especially visible to the audience, who has no stake in the argument, and can be surprisingly objective in judging authenticity. One of the most striking things about the early days of Stack Overflow was seeing how people would not upvote cruelty. They wouldn't necessarily downvote it, mind you, but overt cruelty and meanness in an answer was never an effective way to get upvotes and reputation even if the technical information was sound. The best way to win an argument isn't to convince the other person, necessarily -- good luck with that -- but to convince everyone who is watching. And you will never convince an audience watching you be cruel to another person.
In life, being cruel to others may achieve some short term goals, but it is *never* a winning long term strategy. And I think that is exactly how it should be.
How do you have a good debate online?
by AmiMoJo
It seems like the internet is mostly a terrible place to have debates. Many forums quickly become echo chambers for people who want to be as offensive as possible just to prove that they can exercise their free speech rights. Other times debates are derailed by cheap tactics like being deliberately offensive to derail the arguments and bog everyone down in accusations that they are "SJWs". Ad-hominems and obvious logical fallacies seem to be the norm.
How do you plan to avoid this happening? So far no-one seems to have found a way.
Atwood: We have a few tricks up our sleeve at Discourse. We try to teach communities not just how the software works, but how human beings should work, with stuff like our Universal Rules of Civilized Discourse which is prominently featured in every install of Discourse and of course Creative Commons licensed.
I believe in the “Just in Time" theory of human behavior where we try to reach you at the exact moment you start typing your first post with the TL;DR version of those rules. And the most important rule of all for empathy is a simple one: hey, there's another person on the other side of that screen. Not just an abstract name, an avatar, a collection of pixels, but a real live human being, just like you.
I don't know if we can weaponize empathy but I'd sure like to try. Not every space has to be open to everyone, unless you work for Facebook or Twitter. Sometimes the point of having your own community is being able to close the door on people who demonstrate that they can't behave themselves in your house. Live with wolves, and you learn to howl.
Stackoverflow in hindsight
by jez9999
In hindsight, would you have reduced the scope of on-topic questions for Stackoverflow to where it's at today when you started the site knowing what you do now, and do you think it would've made the site less popular?
Atwood: Much of the strictness of Stack Overflow evolved as a side effect of the reputation system. Once you have a reputation score, you want to protect that score, and nothing devalues your own reputation more than seeing some other programmer get 300 reputation points from a humorous answer containing nothing but an XKCD comic. Anyone can post an XKCD comic; that takes no particular competence or knowledge. So the evolution in strictness -- peer reputation should come from expression of *skill*, not funny anecdotes -- was largely driven by the community, not by anyone employed at Stack Overflow.
Even knowing what I already knew, which is that putting a number next to someone's name will cause them to do whatever it takes to make that number go up -- I didn't anticipate how strong this effect would be. But ultimately I agree with it, and I think systems should trend to slightly increasing strictness over time as they grow bigger. Big cities have different problems than small cities, and they need more structure. -
Interviews: Stack Overflow Co-Founder Jeff Atwood Answers Your Questions
A few weeks ago you had a chance to ask author, entrepreneur, and software developer Jeff Atwood about founding Stack Overflow and the Stack Exchange Network, as well as his new endeavor, the Discourse open-source discussion platform. Below you will find his answers to your questions. Magic wand
by Anonymous Coward
If you had a magic wand to make one change in technology right now, what would it be?
Atwood: Users would not have to generate, remember, enter, or ever think about passwords again. Computers would automatically know who the user is through a combination of ambient biometrics plus physical possession of some kind of device. Like, say, a smartphone.
Passwords are the enemy. And the users, because we are the idiots put in charge of making up the passwords. But mostly, it's the *goddamn passwords*.
Why did you choose Microsoft Platform for SE?
by Sadsfae
I don't see many large, high profile sites running an entire Microsoft Windows stack nowadays (IIS/SQL Server, etc) but Stack Exchange is one of them.
What were the reasons behind choosing a full Microsoft stack versus any of the Open Source alternatives which seem much more prevalent, especially in start-ups and smaller businesses for web presence?
Atwood: Mostly, C# is what I knew and what I was skilled in -- and I'm a great fan of its primary architect Anders Hejsberg who also created Turbo Pascal and Delphi. Performance was a goal, too, and since C# is a compiled language it's *extremely* fast. I think you can see for yourself that Stack Overflow is absurdly fast. Having switched to Ruby with the Discourse project, I can also testify that Ruby .. is, uh ... not ... absurdly fast.
The only downside of the .NET environment is, honestly, the SQL Server licensing costs which can be quite extreme at scale. There is movement to make .NET more open source. Plus the long running mono effort.
The main weakness of .NET is that it's not great for open source projects, though that has changed a bit over the last few years. It never really made sense to open source Stack Overflow -- ask yourself, how many Stack Overflow clones have flourished? Why is that? As a closed source project, the performance, great language design, and scaling of C# worked for us.
I made different choices for Discourse which *was* designed to be an open source project, a tool that is widely applicable to many communities, from day zero.
History of StackExchange
by unencode200x
A question on the history of Stack Exchange. What was the original idea that drove you to make StackExchange and how has it evolved or added since?
Atwood: Do you remember a site called Experts-Exchange? No? That means we succeeded at our original goal.
The basic concept was to do a 100% community driven Q&A that had elements of:
- Wikipedia (all the articles are always up to date and not dead tombstones from six years ago).
- Reddit (voting up the good information and voting down the bad information).
- Blogs (ownership, curation, and responsibility for content that has your name on it).
- Videogames (the Xbox 360 Achievements system, points, and ways of encouraging and incentivizing positive community behavior that are fun).
Where everything we build together is creative commons, and belongs to all of us, since you guys and gals are the ones doing all the work in the system!
Reputation mechanisms & scientific quality
by Anonymous Coward
Jeff, have you thought about how to use reputation mechanisms to improve the quality of published scientific results? I'm asking in the context of John P. A. Ioannidis' famous paper.
It seems to me one fix for this (horrible) problem might be an online reputation mechanism where scientists could rate the reproducibility of published results. Thoughts? (thanks for inventing Stack Exchange - you've done the world a big favor).
Atwood: It certainly seems applicable. The Stack engine works best for systems of data, fact, and science -- or at least a "tome of knowledge" -- where you can actually verify an answer (or five answers) as plausibly correct. You can see which topics do best on the Stack engine in the Stack Exchange directory, with a massive, Jupiter sized Stack Overflow right at the top.
There's always more than one way to do it, of course, but when you start getting dozens or hundreds of "answers" you don't have Q&A, you have a discussion with no clear answers, just opinions.
User Reputation, Moderating, and Discourse
by T.E.D.
I think its probably inarguable that the biggest innovation StackOverflow brought to the web was the centrality of reputation and user moderation to its design. Sure, our own /. had done something similar years before, and it was hardly the first either, but no website I know of had before taken it to its logical conclusion in quite the way SO does. This effectively "crowdsourced" a lot of traditional website administrative activities, which turned out to be an incredibly powerful idea. Practically all the functionality of SO is built around the concept.
So when I saw you were tackling online message boards, I expected the same kind of thing. But browsing around a typical Discourse thread, I'm not seeing that at all. Sure, users can "heart" posts, but all that does is bump a small counter next to the heart. There is no way to tell at a glance which posts users found the best and/or worst. Higher rated posts don't sort to the top, or get bigger or anything. As a result, I don't even see that feature used much. Certainly its nothing like SO, where post voting is the central activity. It also seems like moderation on Discourse is designed to be done by administrators, not users. I don't see any facility for users getting moderation privs as they gain reputation. Compared to SO, Discourse seems kind of, well, like a big step backwards in interactivity.
I'm sure I'm missing something here. What is it? Or did you really decide SO's centering of its design around users and their opinion on posts was a mistake, or perhaps just not a good fit for a more generalized discussion board?
Atwood: Sorting a conversation by votes is a pretty effective way to destroy conversation. How can you follow the logical flow of back and forth, chronological dialog when the ground is constantly shifting underneath you as posts get voted up or down? You can't.
Stack is a system of technical Q&A, where opinions are fascinating, and all, but they are completely trumped by facts, data, and science. Stack only tolerates the minimum amount of discussion necessary to get the best questions and the best answers. The goal isn't for people to talk to each other, the goal is for people to *answer the damn question*. Ideally with the aforementioned facts, data, and science, so our peers can objectively decide if the answer is correct and works.
Discourse, on the other hand, is explicitly a system of discussion and opinion. There is no right and wrong. You can't tell me my opinion that Wolverine is the coolest X-Man is wrong. Long after people have forgotten what exactly was said, they will remember how you made them feel. That's what the like (heart) action is about, and why it is featured so prominently: empathy. Discourse is a system of empathy.
We do have user trust levels in Discourse, it's just less obvious, because we're playing a different kind of game. Compare that with Stack, where your reputation number and badge counts appear prominently next to your name every time you post. Trust me, people *do* notice when you like their post. And if they see your post got 20 likes whereas their post only got two, or none, they absolutely notice that too. Discourse is more of a collaborative game, where Stack is an explicitly competitive game, and that's why the score is so prominent. The best way to motivate a programmer is to tell them someone else did it better. Don't try to race sheep, don't try to herd race horses.
There may not be re-ordering by votes in Discourse, as there is in Stack Overflow, but there is a summary mode for topics when they reach 50 or more replies. If you'd like to see this in action, visit a longer topic and press the "Summarize Topic" button at the top near the estimated read time, or as I like to call it, the TL;DR button. Then you'll see only the "best" 10 percent of that long topic. That factors in a lot of data from each post such as likes, incoming and outgoing links to the post, the number of times it has been read, total read time (we track actual on-screen read time for all posts in Discourse), number of times it has been bookmarked, number of replies, and so on. You can also expand context above (in reply to) and below (replies) for each post as needed. Or you can expand the collapsed gaps as needed. Try it, you just need a long topic with over 50 replies to see it in action.
Cargo cult programming and Stack Overflow
by Anonymous Coward
I don't mean to minimize StackOverflow's contribution to the online knowledge base, because it's a great tool when used properly. I'm a systems guy and Server Fault is often more useful than vendor support for looking up strange error messages and possible troubleshooting routes. But, there are a lot of low skill programmers and sysadmins out there who lean on these tools way too much. How do you feel about these properties contributing to the crappy cargo cult programming and sysadmin work we see in our field?
Atwood: Stack is a system of peer education at its core. The key insight is realizing that crappy programmers hurt all of us, and it's our job to learn from each other so that we have less terrible code and terrible coders to deal with in the future. Even if that terrible coder is us!
The best way to learn a topic is to teach it to someone else. That is the skill at the heart of the Stack engine. It works at three levels:
1. Selfish. I need the answer to this question or I may get fired. Give me the answer. This is ideally handled through a good search result. They get what they need.
2. Self Improvement. I want to get reputation and prove to my peers that I know what I am doing. The more I learn, the better I am at my job, the more skilled I am, and the more job satisfaction / money / prestige I can gain.
3. Advancement of our craft. Programming, physics, and math will be here long after we are all dead. It's an honor to help move science forward together as much as we can together in our lifetime, so that future programmers, physicists, and mathematicians can stand on our shoulders and do amazing, incredible things for the future of humanity.
It's fine for people to play the game at level one, because they are also helping others learn and work their way up the skill ladder. If someone is learning, and someone is teaching, we all win.
Rampant closure of questions
by WaffleMonster
From time to time I search stackoverflow for easy answers and I would say about 20% of the time the question has been closed even though it is the reason I went to stackoverflow in the first place. In most of these instances a useful answer was also provided before closure. So my question to you is simply what gives.
The most common reason for closure I run into is that the people closing it don't have any domain clue what is being asked and appear to assume if they don't understand nobody else does either.
Another common reason for closure is the "duplicate" question meme in which nuance is overlooked and questions are marked as duplicates because the people doing the marking failed to understand or appreciate the difference. This is very annoying.
Less common but equally annoying issues are closure due to chatter about domain specific algorithms not being "programming questions" or even more amusing someone posting a question that is more specifically addressed by one of a hundred different stack exchanges even though it is still on topic.
Atwood: Remember that Stack is for questions that can be explicitly answered, *not* discussion. It's not a place for "what's the best way to.." opinion sinkholes. Humans love this kind of stuff because they are social animals, and there's nothing wrong with wanting to have a discussion -- you just need to have that discussion elsewhere, because you can't have it on Stack Overflow.
We're strict about this because we've seen what happens when systems are not explicit about their goals. This way lies madness. This way lies Yahoo Answers. In Stack's case the goal is *learning*. And I do not mean accidental, random, meandering, oh-hey-check-out-this-crazy-thing-I-saw-on-Reddit learning, but highly efficient, directed learning where you are a classroom, not a social club.
Duplicates are a hard problem, for sure. That's the one place I felt we didn't make a ton of progress in my four years there, unfortunately. Human beings have the incredibly annoying habit of asking the same questions using completely and utterly different words. They're really good at it. And it is true that over time there are more and more questions and answers on Stack Overflow, so the minefield of "is this a duplicate of...?" is only getting bigger over time. It is a super hard problem. If you have specific ideas of how to handle duplicates better, don't hesitate to ask or search some of the existing topics there.
Remember, Stack Overflow is governed by programmers just like you, you are a citizen of its community just like me, and you get a say in what happens there. You could even be elected a moderator by participating in the yearly elections. So if you don't like the way things work, it's like any other democracy -- make your voice heard, vote, campaign, or run for office.
Relevance of old answers
by Scottingham
As SO ages, some of the offered solutions are no longer valid. Are there currently plans to automate some way of validating old answers automatically? This problem seems to be a larger problem with forums in general. Do you have any musings regarding aging forums?
Atwood: Anyone, even anonymous users, can suggest an edit to any question or answer on any Stack Exchange site. It is like Wikipedia in that regard. Once two other users with sufficient reputation approve the edit it goes through. Alternately, if you earn enough reputation, you can make direct edits yourself.
If you see information that's out of date, edit it to make it more up to date! Be the change you want to see, and all that.
Signal To Noise: Trolls
by Anonymous Coward
In reading your work for years and seeing your various contributions, it seems like you are fascinated with filtering out the most useful information. In many of your blog posts the insight is not yours but rather a conglomeration of chosen useful quotes and sources. I very much appreciate this. My question for you is how do you handle critical feedback vs trolls when dealing with communities. For example, the down button is often a disagree button rather than a negative point. How do you deal with mixed opinions?
To use a real life personal example, TEF noted how he felt you were suggesting that people shouldn't play around to learn. Yet, the way he said it was clearly inflammatory. How do you separate the legitimate concern and critical feedback from the troll who doesn't want to listen to your response?
Atwood: There is a reason we don't have a "dislike" or "downvote" in Discourse. How can an opinion be wrong? It can be rude, offensive, misinformed, misguided, or just plumb crazy -- but it can't be objectively *wrong*. Often the way you judge posts in Discourse is by their *lack* of likes. If nobody feels strongly enough about your reply to push the heart button on it, and 'co-sign' it with their name in public, that says something.
As for separating legitimate criticism from trolling, I don't know that actual trolls, by the strict definition of the word troll, are that common. I think bad faith makes itself quite clear in the tone and delivery of the criticism. Are you saying this in the hope that we can both learn something from the interaction, or are you saying it because you want to hurt or shame or denigrate or discredit me? Truth alone, as it turns out, isn't the whole truth. How you say something matters.
Bad faith is especially visible to the audience, who has no stake in the argument, and can be surprisingly objective in judging authenticity. One of the most striking things about the early days of Stack Overflow was seeing how people would not upvote cruelty. They wouldn't necessarily downvote it, mind you, but overt cruelty and meanness in an answer was never an effective way to get upvotes and reputation even if the technical information was sound. The best way to win an argument isn't to convince the other person, necessarily -- good luck with that -- but to convince everyone who is watching. And you will never convince an audience watching you be cruel to another person.
In life, being cruel to others may achieve some short term goals, but it is *never* a winning long term strategy. And I think that is exactly how it should be.
How do you have a good debate online?
by AmiMoJo
It seems like the internet is mostly a terrible place to have debates. Many forums quickly become echo chambers for people who want to be as offensive as possible just to prove that they can exercise their free speech rights. Other times debates are derailed by cheap tactics like being deliberately offensive to derail the arguments and bog everyone down in accusations that they are "SJWs". Ad-hominems and obvious logical fallacies seem to be the norm.
How do you plan to avoid this happening? So far no-one seems to have found a way.
Atwood: We have a few tricks up our sleeve at Discourse. We try to teach communities not just how the software works, but how human beings should work, with stuff like our Universal Rules of Civilized Discourse which is prominently featured in every install of Discourse and of course Creative Commons licensed.
I believe in the “Just in Time" theory of human behavior where we try to reach you at the exact moment you start typing your first post with the TL;DR version of those rules. And the most important rule of all for empathy is a simple one: hey, there's another person on the other side of that screen. Not just an abstract name, an avatar, a collection of pixels, but a real live human being, just like you.
I don't know if we can weaponize empathy but I'd sure like to try. Not every space has to be open to everyone, unless you work for Facebook or Twitter. Sometimes the point of having your own community is being able to close the door on people who demonstrate that they can't behave themselves in your house. Live with wolves, and you learn to howl.
Stackoverflow in hindsight
by jez9999
In hindsight, would you have reduced the scope of on-topic questions for Stackoverflow to where it's at today when you started the site knowing what you do now, and do you think it would've made the site less popular?
Atwood: Much of the strictness of Stack Overflow evolved as a side effect of the reputation system. Once you have a reputation score, you want to protect that score, and nothing devalues your own reputation more than seeing some other programmer get 300 reputation points from a humorous answer containing nothing but an XKCD comic. Anyone can post an XKCD comic; that takes no particular competence or knowledge. So the evolution in strictness -- peer reputation should come from expression of *skill*, not funny anecdotes -- was largely driven by the community, not by anyone employed at Stack Overflow.
Even knowing what I already knew, which is that putting a number next to someone's name will cause them to do whatever it takes to make that number go up -- I didn't anticipate how strong this effect would be. But ultimately I agree with it, and I think systems should trend to slightly increasing strictness over time as they grow bigger. Big cities have different problems than small cities, and they need more structure. -
Interviews: Stack Overflow Co-Founder Jeff Atwood Answers Your Questions
A few weeks ago you had a chance to ask author, entrepreneur, and software developer Jeff Atwood about founding Stack Overflow and the Stack Exchange Network, as well as his new endeavor, the Discourse open-source discussion platform. Below you will find his answers to your questions. Magic wand
by Anonymous Coward
If you had a magic wand to make one change in technology right now, what would it be?
Atwood: Users would not have to generate, remember, enter, or ever think about passwords again. Computers would automatically know who the user is through a combination of ambient biometrics plus physical possession of some kind of device. Like, say, a smartphone.
Passwords are the enemy. And the users, because we are the idiots put in charge of making up the passwords. But mostly, it's the *goddamn passwords*.
Why did you choose Microsoft Platform for SE?
by Sadsfae
I don't see many large, high profile sites running an entire Microsoft Windows stack nowadays (IIS/SQL Server, etc) but Stack Exchange is one of them.
What were the reasons behind choosing a full Microsoft stack versus any of the Open Source alternatives which seem much more prevalent, especially in start-ups and smaller businesses for web presence?
Atwood: Mostly, C# is what I knew and what I was skilled in -- and I'm a great fan of its primary architect Anders Hejsberg who also created Turbo Pascal and Delphi. Performance was a goal, too, and since C# is a compiled language it's *extremely* fast. I think you can see for yourself that Stack Overflow is absurdly fast. Having switched to Ruby with the Discourse project, I can also testify that Ruby .. is, uh ... not ... absurdly fast.
The only downside of the .NET environment is, honestly, the SQL Server licensing costs which can be quite extreme at scale. There is movement to make .NET more open source. Plus the long running mono effort.
The main weakness of .NET is that it's not great for open source projects, though that has changed a bit over the last few years. It never really made sense to open source Stack Overflow -- ask yourself, how many Stack Overflow clones have flourished? Why is that? As a closed source project, the performance, great language design, and scaling of C# worked for us.
I made different choices for Discourse which *was* designed to be an open source project, a tool that is widely applicable to many communities, from day zero.
History of StackExchange
by unencode200x
A question on the history of Stack Exchange. What was the original idea that drove you to make StackExchange and how has it evolved or added since?
Atwood: Do you remember a site called Experts-Exchange? No? That means we succeeded at our original goal.
The basic concept was to do a 100% community driven Q&A that had elements of:
- Wikipedia (all the articles are always up to date and not dead tombstones from six years ago).
- Reddit (voting up the good information and voting down the bad information).
- Blogs (ownership, curation, and responsibility for content that has your name on it).
- Videogames (the Xbox 360 Achievements system, points, and ways of encouraging and incentivizing positive community behavior that are fun).
Where everything we build together is creative commons, and belongs to all of us, since you guys and gals are the ones doing all the work in the system!
Reputation mechanisms & scientific quality
by Anonymous Coward
Jeff, have you thought about how to use reputation mechanisms to improve the quality of published scientific results? I'm asking in the context of John P. A. Ioannidis' famous paper.
It seems to me one fix for this (horrible) problem might be an online reputation mechanism where scientists could rate the reproducibility of published results. Thoughts? (thanks for inventing Stack Exchange - you've done the world a big favor).
Atwood: It certainly seems applicable. The Stack engine works best for systems of data, fact, and science -- or at least a "tome of knowledge" -- where you can actually verify an answer (or five answers) as plausibly correct. You can see which topics do best on the Stack engine in the Stack Exchange directory, with a massive, Jupiter sized Stack Overflow right at the top.
There's always more than one way to do it, of course, but when you start getting dozens or hundreds of "answers" you don't have Q&A, you have a discussion with no clear answers, just opinions.
User Reputation, Moderating, and Discourse
by T.E.D.
I think its probably inarguable that the biggest innovation StackOverflow brought to the web was the centrality of reputation and user moderation to its design. Sure, our own /. had done something similar years before, and it was hardly the first either, but no website I know of had before taken it to its logical conclusion in quite the way SO does. This effectively "crowdsourced" a lot of traditional website administrative activities, which turned out to be an incredibly powerful idea. Practically all the functionality of SO is built around the concept.
So when I saw you were tackling online message boards, I expected the same kind of thing. But browsing around a typical Discourse thread, I'm not seeing that at all. Sure, users can "heart" posts, but all that does is bump a small counter next to the heart. There is no way to tell at a glance which posts users found the best and/or worst. Higher rated posts don't sort to the top, or get bigger or anything. As a result, I don't even see that feature used much. Certainly its nothing like SO, where post voting is the central activity. It also seems like moderation on Discourse is designed to be done by administrators, not users. I don't see any facility for users getting moderation privs as they gain reputation. Compared to SO, Discourse seems kind of, well, like a big step backwards in interactivity.
I'm sure I'm missing something here. What is it? Or did you really decide SO's centering of its design around users and their opinion on posts was a mistake, or perhaps just not a good fit for a more generalized discussion board?
Atwood: Sorting a conversation by votes is a pretty effective way to destroy conversation. How can you follow the logical flow of back and forth, chronological dialog when the ground is constantly shifting underneath you as posts get voted up or down? You can't.
Stack is a system of technical Q&A, where opinions are fascinating, and all, but they are completely trumped by facts, data, and science. Stack only tolerates the minimum amount of discussion necessary to get the best questions and the best answers. The goal isn't for people to talk to each other, the goal is for people to *answer the damn question*. Ideally with the aforementioned facts, data, and science, so our peers can objectively decide if the answer is correct and works.
Discourse, on the other hand, is explicitly a system of discussion and opinion. There is no right and wrong. You can't tell me my opinion that Wolverine is the coolest X-Man is wrong. Long after people have forgotten what exactly was said, they will remember how you made them feel. That's what the like (heart) action is about, and why it is featured so prominently: empathy. Discourse is a system of empathy.
We do have user trust levels in Discourse, it's just less obvious, because we're playing a different kind of game. Compare that with Stack, where your reputation number and badge counts appear prominently next to your name every time you post. Trust me, people *do* notice when you like their post. And if they see your post got 20 likes whereas their post only got two, or none, they absolutely notice that too. Discourse is more of a collaborative game, where Stack is an explicitly competitive game, and that's why the score is so prominent. The best way to motivate a programmer is to tell them someone else did it better. Don't try to race sheep, don't try to herd race horses.
There may not be re-ordering by votes in Discourse, as there is in Stack Overflow, but there is a summary mode for topics when they reach 50 or more replies. If you'd like to see this in action, visit a longer topic and press the "Summarize Topic" button at the top near the estimated read time, or as I like to call it, the TL;DR button. Then you'll see only the "best" 10 percent of that long topic. That factors in a lot of data from each post such as likes, incoming and outgoing links to the post, the number of times it has been read, total read time (we track actual on-screen read time for all posts in Discourse), number of times it has been bookmarked, number of replies, and so on. You can also expand context above (in reply to) and below (replies) for each post as needed. Or you can expand the collapsed gaps as needed. Try it, you just need a long topic with over 50 replies to see it in action.
Cargo cult programming and Stack Overflow
by Anonymous Coward
I don't mean to minimize StackOverflow's contribution to the online knowledge base, because it's a great tool when used properly. I'm a systems guy and Server Fault is often more useful than vendor support for looking up strange error messages and possible troubleshooting routes. But, there are a lot of low skill programmers and sysadmins out there who lean on these tools way too much. How do you feel about these properties contributing to the crappy cargo cult programming and sysadmin work we see in our field?
Atwood: Stack is a system of peer education at its core. The key insight is realizing that crappy programmers hurt all of us, and it's our job to learn from each other so that we have less terrible code and terrible coders to deal with in the future. Even if that terrible coder is us!
The best way to learn a topic is to teach it to someone else. That is the skill at the heart of the Stack engine. It works at three levels:
1. Selfish. I need the answer to this question or I may get fired. Give me the answer. This is ideally handled through a good search result. They get what they need.
2. Self Improvement. I want to get reputation and prove to my peers that I know what I am doing. The more I learn, the better I am at my job, the more skilled I am, and the more job satisfaction / money / prestige I can gain.
3. Advancement of our craft. Programming, physics, and math will be here long after we are all dead. It's an honor to help move science forward together as much as we can together in our lifetime, so that future programmers, physicists, and mathematicians can stand on our shoulders and do amazing, incredible things for the future of humanity.
It's fine for people to play the game at level one, because they are also helping others learn and work their way up the skill ladder. If someone is learning, and someone is teaching, we all win.
Rampant closure of questions
by WaffleMonster
From time to time I search stackoverflow for easy answers and I would say about 20% of the time the question has been closed even though it is the reason I went to stackoverflow in the first place. In most of these instances a useful answer was also provided before closure. So my question to you is simply what gives.
The most common reason for closure I run into is that the people closing it don't have any domain clue what is being asked and appear to assume if they don't understand nobody else does either.
Another common reason for closure is the "duplicate" question meme in which nuance is overlooked and questions are marked as duplicates because the people doing the marking failed to understand or appreciate the difference. This is very annoying.
Less common but equally annoying issues are closure due to chatter about domain specific algorithms not being "programming questions" or even more amusing someone posting a question that is more specifically addressed by one of a hundred different stack exchanges even though it is still on topic.
Atwood: Remember that Stack is for questions that can be explicitly answered, *not* discussion. It's not a place for "what's the best way to.." opinion sinkholes. Humans love this kind of stuff because they are social animals, and there's nothing wrong with wanting to have a discussion -- you just need to have that discussion elsewhere, because you can't have it on Stack Overflow.
We're strict about this because we've seen what happens when systems are not explicit about their goals. This way lies madness. This way lies Yahoo Answers. In Stack's case the goal is *learning*. And I do not mean accidental, random, meandering, oh-hey-check-out-this-crazy-thing-I-saw-on-Reddit learning, but highly efficient, directed learning where you are a classroom, not a social club.
Duplicates are a hard problem, for sure. That's the one place I felt we didn't make a ton of progress in my four years there, unfortunately. Human beings have the incredibly annoying habit of asking the same questions using completely and utterly different words. They're really good at it. And it is true that over time there are more and more questions and answers on Stack Overflow, so the minefield of "is this a duplicate of...?" is only getting bigger over time. It is a super hard problem. If you have specific ideas of how to handle duplicates better, don't hesitate to ask or search some of the existing topics there.
Remember, Stack Overflow is governed by programmers just like you, you are a citizen of its community just like me, and you get a say in what happens there. You could even be elected a moderator by participating in the yearly elections. So if you don't like the way things work, it's like any other democracy -- make your voice heard, vote, campaign, or run for office.
Relevance of old answers
by Scottingham
As SO ages, some of the offered solutions are no longer valid. Are there currently plans to automate some way of validating old answers automatically? This problem seems to be a larger problem with forums in general. Do you have any musings regarding aging forums?
Atwood: Anyone, even anonymous users, can suggest an edit to any question or answer on any Stack Exchange site. It is like Wikipedia in that regard. Once two other users with sufficient reputation approve the edit it goes through. Alternately, if you earn enough reputation, you can make direct edits yourself.
If you see information that's out of date, edit it to make it more up to date! Be the change you want to see, and all that.
Signal To Noise: Trolls
by Anonymous Coward
In reading your work for years and seeing your various contributions, it seems like you are fascinated with filtering out the most useful information. In many of your blog posts the insight is not yours but rather a conglomeration of chosen useful quotes and sources. I very much appreciate this. My question for you is how do you handle critical feedback vs trolls when dealing with communities. For example, the down button is often a disagree button rather than a negative point. How do you deal with mixed opinions?
To use a real life personal example, TEF noted how he felt you were suggesting that people shouldn't play around to learn. Yet, the way he said it was clearly inflammatory. How do you separate the legitimate concern and critical feedback from the troll who doesn't want to listen to your response?
Atwood: There is a reason we don't have a "dislike" or "downvote" in Discourse. How can an opinion be wrong? It can be rude, offensive, misinformed, misguided, or just plumb crazy -- but it can't be objectively *wrong*. Often the way you judge posts in Discourse is by their *lack* of likes. If nobody feels strongly enough about your reply to push the heart button on it, and 'co-sign' it with their name in public, that says something.
As for separating legitimate criticism from trolling, I don't know that actual trolls, by the strict definition of the word troll, are that common. I think bad faith makes itself quite clear in the tone and delivery of the criticism. Are you saying this in the hope that we can both learn something from the interaction, or are you saying it because you want to hurt or shame or denigrate or discredit me? Truth alone, as it turns out, isn't the whole truth. How you say something matters.
Bad faith is especially visible to the audience, who has no stake in the argument, and can be surprisingly objective in judging authenticity. One of the most striking things about the early days of Stack Overflow was seeing how people would not upvote cruelty. They wouldn't necessarily downvote it, mind you, but overt cruelty and meanness in an answer was never an effective way to get upvotes and reputation even if the technical information was sound. The best way to win an argument isn't to convince the other person, necessarily -- good luck with that -- but to convince everyone who is watching. And you will never convince an audience watching you be cruel to another person.
In life, being cruel to others may achieve some short term goals, but it is *never* a winning long term strategy. And I think that is exactly how it should be.
How do you have a good debate online?
by AmiMoJo
It seems like the internet is mostly a terrible place to have debates. Many forums quickly become echo chambers for people who want to be as offensive as possible just to prove that they can exercise their free speech rights. Other times debates are derailed by cheap tactics like being deliberately offensive to derail the arguments and bog everyone down in accusations that they are "SJWs". Ad-hominems and obvious logical fallacies seem to be the norm.
How do you plan to avoid this happening? So far no-one seems to have found a way.
Atwood: We have a few tricks up our sleeve at Discourse. We try to teach communities not just how the software works, but how human beings should work, with stuff like our Universal Rules of Civilized Discourse which is prominently featured in every install of Discourse and of course Creative Commons licensed.
I believe in the “Just in Time" theory of human behavior where we try to reach you at the exact moment you start typing your first post with the TL;DR version of those rules. And the most important rule of all for empathy is a simple one: hey, there's another person on the other side of that screen. Not just an abstract name, an avatar, a collection of pixels, but a real live human being, just like you.
I don't know if we can weaponize empathy but I'd sure like to try. Not every space has to be open to everyone, unless you work for Facebook or Twitter. Sometimes the point of having your own community is being able to close the door on people who demonstrate that they can't behave themselves in your house. Live with wolves, and you learn to howl.
Stackoverflow in hindsight
by jez9999
In hindsight, would you have reduced the scope of on-topic questions for Stackoverflow to where it's at today when you started the site knowing what you do now, and do you think it would've made the site less popular?
Atwood: Much of the strictness of Stack Overflow evolved as a side effect of the reputation system. Once you have a reputation score, you want to protect that score, and nothing devalues your own reputation more than seeing some other programmer get 300 reputation points from a humorous answer containing nothing but an XKCD comic. Anyone can post an XKCD comic; that takes no particular competence or knowledge. So the evolution in strictness -- peer reputation should come from expression of *skill*, not funny anecdotes -- was largely driven by the community, not by anyone employed at Stack Overflow.
Even knowing what I already knew, which is that putting a number next to someone's name will cause them to do whatever it takes to make that number go up -- I didn't anticipate how strong this effect would be. But ultimately I agree with it, and I think systems should trend to slightly increasing strictness over time as they grow bigger. Big cities have different problems than small cities, and they need more structure. -
Interviews: Stack Overflow Co-Founder Jeff Atwood Answers Your Questions
A few weeks ago you had a chance to ask author, entrepreneur, and software developer Jeff Atwood about founding Stack Overflow and the Stack Exchange Network, as well as his new endeavor, the Discourse open-source discussion platform. Below you will find his answers to your questions. Magic wand
by Anonymous Coward
If you had a magic wand to make one change in technology right now, what would it be?
Atwood: Users would not have to generate, remember, enter, or ever think about passwords again. Computers would automatically know who the user is through a combination of ambient biometrics plus physical possession of some kind of device. Like, say, a smartphone.
Passwords are the enemy. And the users, because we are the idiots put in charge of making up the passwords. But mostly, it's the *goddamn passwords*.
Why did you choose Microsoft Platform for SE?
by Sadsfae
I don't see many large, high profile sites running an entire Microsoft Windows stack nowadays (IIS/SQL Server, etc) but Stack Exchange is one of them.
What were the reasons behind choosing a full Microsoft stack versus any of the Open Source alternatives which seem much more prevalent, especially in start-ups and smaller businesses for web presence?
Atwood: Mostly, C# is what I knew and what I was skilled in -- and I'm a great fan of its primary architect Anders Hejsberg who also created Turbo Pascal and Delphi. Performance was a goal, too, and since C# is a compiled language it's *extremely* fast. I think you can see for yourself that Stack Overflow is absurdly fast. Having switched to Ruby with the Discourse project, I can also testify that Ruby .. is, uh ... not ... absurdly fast.
The only downside of the .NET environment is, honestly, the SQL Server licensing costs which can be quite extreme at scale. There is movement to make .NET more open source. Plus the long running mono effort.
The main weakness of .NET is that it's not great for open source projects, though that has changed a bit over the last few years. It never really made sense to open source Stack Overflow -- ask yourself, how many Stack Overflow clones have flourished? Why is that? As a closed source project, the performance, great language design, and scaling of C# worked for us.
I made different choices for Discourse which *was* designed to be an open source project, a tool that is widely applicable to many communities, from day zero.
History of StackExchange
by unencode200x
A question on the history of Stack Exchange. What was the original idea that drove you to make StackExchange and how has it evolved or added since?
Atwood: Do you remember a site called Experts-Exchange? No? That means we succeeded at our original goal.
The basic concept was to do a 100% community driven Q&A that had elements of:
- Wikipedia (all the articles are always up to date and not dead tombstones from six years ago).
- Reddit (voting up the good information and voting down the bad information).
- Blogs (ownership, curation, and responsibility for content that has your name on it).
- Videogames (the Xbox 360 Achievements system, points, and ways of encouraging and incentivizing positive community behavior that are fun).
Where everything we build together is creative commons, and belongs to all of us, since you guys and gals are the ones doing all the work in the system!
Reputation mechanisms & scientific quality
by Anonymous Coward
Jeff, have you thought about how to use reputation mechanisms to improve the quality of published scientific results? I'm asking in the context of John P. A. Ioannidis' famous paper.
It seems to me one fix for this (horrible) problem might be an online reputation mechanism where scientists could rate the reproducibility of published results. Thoughts? (thanks for inventing Stack Exchange - you've done the world a big favor).
Atwood: It certainly seems applicable. The Stack engine works best for systems of data, fact, and science -- or at least a "tome of knowledge" -- where you can actually verify an answer (or five answers) as plausibly correct. You can see which topics do best on the Stack engine in the Stack Exchange directory, with a massive, Jupiter sized Stack Overflow right at the top.
There's always more than one way to do it, of course, but when you start getting dozens or hundreds of "answers" you don't have Q&A, you have a discussion with no clear answers, just opinions.
User Reputation, Moderating, and Discourse
by T.E.D.
I think its probably inarguable that the biggest innovation StackOverflow brought to the web was the centrality of reputation and user moderation to its design. Sure, our own /. had done something similar years before, and it was hardly the first either, but no website I know of had before taken it to its logical conclusion in quite the way SO does. This effectively "crowdsourced" a lot of traditional website administrative activities, which turned out to be an incredibly powerful idea. Practically all the functionality of SO is built around the concept.
So when I saw you were tackling online message boards, I expected the same kind of thing. But browsing around a typical Discourse thread, I'm not seeing that at all. Sure, users can "heart" posts, but all that does is bump a small counter next to the heart. There is no way to tell at a glance which posts users found the best and/or worst. Higher rated posts don't sort to the top, or get bigger or anything. As a result, I don't even see that feature used much. Certainly its nothing like SO, where post voting is the central activity. It also seems like moderation on Discourse is designed to be done by administrators, not users. I don't see any facility for users getting moderation privs as they gain reputation. Compared to SO, Discourse seems kind of, well, like a big step backwards in interactivity.
I'm sure I'm missing something here. What is it? Or did you really decide SO's centering of its design around users and their opinion on posts was a mistake, or perhaps just not a good fit for a more generalized discussion board?
Atwood: Sorting a conversation by votes is a pretty effective way to destroy conversation. How can you follow the logical flow of back and forth, chronological dialog when the ground is constantly shifting underneath you as posts get voted up or down? You can't.
Stack is a system of technical Q&A, where opinions are fascinating, and all, but they are completely trumped by facts, data, and science. Stack only tolerates the minimum amount of discussion necessary to get the best questions and the best answers. The goal isn't for people to talk to each other, the goal is for people to *answer the damn question*. Ideally with the aforementioned facts, data, and science, so our peers can objectively decide if the answer is correct and works.
Discourse, on the other hand, is explicitly a system of discussion and opinion. There is no right and wrong. You can't tell me my opinion that Wolverine is the coolest X-Man is wrong. Long after people have forgotten what exactly was said, they will remember how you made them feel. That's what the like (heart) action is about, and why it is featured so prominently: empathy. Discourse is a system of empathy.
We do have user trust levels in Discourse, it's just less obvious, because we're playing a different kind of game. Compare that with Stack, where your reputation number and badge counts appear prominently next to your name every time you post. Trust me, people *do* notice when you like their post. And if they see your post got 20 likes whereas their post only got two, or none, they absolutely notice that too. Discourse is more of a collaborative game, where Stack is an explicitly competitive game, and that's why the score is so prominent. The best way to motivate a programmer is to tell them someone else did it better. Don't try to race sheep, don't try to herd race horses.
There may not be re-ordering by votes in Discourse, as there is in Stack Overflow, but there is a summary mode for topics when they reach 50 or more replies. If you'd like to see this in action, visit a longer topic and press the "Summarize Topic" button at the top near the estimated read time, or as I like to call it, the TL;DR button. Then you'll see only the "best" 10 percent of that long topic. That factors in a lot of data from each post such as likes, incoming and outgoing links to the post, the number of times it has been read, total read time (we track actual on-screen read time for all posts in Discourse), number of times it has been bookmarked, number of replies, and so on. You can also expand context above (in reply to) and below (replies) for each post as needed. Or you can expand the collapsed gaps as needed. Try it, you just need a long topic with over 50 replies to see it in action.
Cargo cult programming and Stack Overflow
by Anonymous Coward
I don't mean to minimize StackOverflow's contribution to the online knowledge base, because it's a great tool when used properly. I'm a systems guy and Server Fault is often more useful than vendor support for looking up strange error messages and possible troubleshooting routes. But, there are a lot of low skill programmers and sysadmins out there who lean on these tools way too much. How do you feel about these properties contributing to the crappy cargo cult programming and sysadmin work we see in our field?
Atwood: Stack is a system of peer education at its core. The key insight is realizing that crappy programmers hurt all of us, and it's our job to learn from each other so that we have less terrible code and terrible coders to deal with in the future. Even if that terrible coder is us!
The best way to learn a topic is to teach it to someone else. That is the skill at the heart of the Stack engine. It works at three levels:
1. Selfish. I need the answer to this question or I may get fired. Give me the answer. This is ideally handled through a good search result. They get what they need.
2. Self Improvement. I want to get reputation and prove to my peers that I know what I am doing. The more I learn, the better I am at my job, the more skilled I am, and the more job satisfaction / money / prestige I can gain.
3. Advancement of our craft. Programming, physics, and math will be here long after we are all dead. It's an honor to help move science forward together as much as we can together in our lifetime, so that future programmers, physicists, and mathematicians can stand on our shoulders and do amazing, incredible things for the future of humanity.
It's fine for people to play the game at level one, because they are also helping others learn and work their way up the skill ladder. If someone is learning, and someone is teaching, we all win.
Rampant closure of questions
by WaffleMonster
From time to time I search stackoverflow for easy answers and I would say about 20% of the time the question has been closed even though it is the reason I went to stackoverflow in the first place. In most of these instances a useful answer was also provided before closure. So my question to you is simply what gives.
The most common reason for closure I run into is that the people closing it don't have any domain clue what is being asked and appear to assume if they don't understand nobody else does either.
Another common reason for closure is the "duplicate" question meme in which nuance is overlooked and questions are marked as duplicates because the people doing the marking failed to understand or appreciate the difference. This is very annoying.
Less common but equally annoying issues are closure due to chatter about domain specific algorithms not being "programming questions" or even more amusing someone posting a question that is more specifically addressed by one of a hundred different stack exchanges even though it is still on topic.
Atwood: Remember that Stack is for questions that can be explicitly answered, *not* discussion. It's not a place for "what's the best way to.." opinion sinkholes. Humans love this kind of stuff because they are social animals, and there's nothing wrong with wanting to have a discussion -- you just need to have that discussion elsewhere, because you can't have it on Stack Overflow.
We're strict about this because we've seen what happens when systems are not explicit about their goals. This way lies madness. This way lies Yahoo Answers. In Stack's case the goal is *learning*. And I do not mean accidental, random, meandering, oh-hey-check-out-this-crazy-thing-I-saw-on-Reddit learning, but highly efficient, directed learning where you are a classroom, not a social club.
Duplicates are a hard problem, for sure. That's the one place I felt we didn't make a ton of progress in my four years there, unfortunately. Human beings have the incredibly annoying habit of asking the same questions using completely and utterly different words. They're really good at it. And it is true that over time there are more and more questions and answers on Stack Overflow, so the minefield of "is this a duplicate of...?" is only getting bigger over time. It is a super hard problem. If you have specific ideas of how to handle duplicates better, don't hesitate to ask or search some of the existing topics there.
Remember, Stack Overflow is governed by programmers just like you, you are a citizen of its community just like me, and you get a say in what happens there. You could even be elected a moderator by participating in the yearly elections. So if you don't like the way things work, it's like any other democracy -- make your voice heard, vote, campaign, or run for office.
Relevance of old answers
by Scottingham
As SO ages, some of the offered solutions are no longer valid. Are there currently plans to automate some way of validating old answers automatically? This problem seems to be a larger problem with forums in general. Do you have any musings regarding aging forums?
Atwood: Anyone, even anonymous users, can suggest an edit to any question or answer on any Stack Exchange site. It is like Wikipedia in that regard. Once two other users with sufficient reputation approve the edit it goes through. Alternately, if you earn enough reputation, you can make direct edits yourself.
If you see information that's out of date, edit it to make it more up to date! Be the change you want to see, and all that.
Signal To Noise: Trolls
by Anonymous Coward
In reading your work for years and seeing your various contributions, it seems like you are fascinated with filtering out the most useful information. In many of your blog posts the insight is not yours but rather a conglomeration of chosen useful quotes and sources. I very much appreciate this. My question for you is how do you handle critical feedback vs trolls when dealing with communities. For example, the down button is often a disagree button rather than a negative point. How do you deal with mixed opinions?
To use a real life personal example, TEF noted how he felt you were suggesting that people shouldn't play around to learn. Yet, the way he said it was clearly inflammatory. How do you separate the legitimate concern and critical feedback from the troll who doesn't want to listen to your response?
Atwood: There is a reason we don't have a "dislike" or "downvote" in Discourse. How can an opinion be wrong? It can be rude, offensive, misinformed, misguided, or just plumb crazy -- but it can't be objectively *wrong*. Often the way you judge posts in Discourse is by their *lack* of likes. If nobody feels strongly enough about your reply to push the heart button on it, and 'co-sign' it with their name in public, that says something.
As for separating legitimate criticism from trolling, I don't know that actual trolls, by the strict definition of the word troll, are that common. I think bad faith makes itself quite clear in the tone and delivery of the criticism. Are you saying this in the hope that we can both learn something from the interaction, or are you saying it because you want to hurt or shame or denigrate or discredit me? Truth alone, as it turns out, isn't the whole truth. How you say something matters.
Bad faith is especially visible to the audience, who has no stake in the argument, and can be surprisingly objective in judging authenticity. One of the most striking things about the early days of Stack Overflow was seeing how people would not upvote cruelty. They wouldn't necessarily downvote it, mind you, but overt cruelty and meanness in an answer was never an effective way to get upvotes and reputation even if the technical information was sound. The best way to win an argument isn't to convince the other person, necessarily -- good luck with that -- but to convince everyone who is watching. And you will never convince an audience watching you be cruel to another person.
In life, being cruel to others may achieve some short term goals, but it is *never* a winning long term strategy. And I think that is exactly how it should be.
How do you have a good debate online?
by AmiMoJo
It seems like the internet is mostly a terrible place to have debates. Many forums quickly become echo chambers for people who want to be as offensive as possible just to prove that they can exercise their free speech rights. Other times debates are derailed by cheap tactics like being deliberately offensive to derail the arguments and bog everyone down in accusations that they are "SJWs". Ad-hominems and obvious logical fallacies seem to be the norm.
How do you plan to avoid this happening? So far no-one seems to have found a way.
Atwood: We have a few tricks up our sleeve at Discourse. We try to teach communities not just how the software works, but how human beings should work, with stuff like our Universal Rules of Civilized Discourse which is prominently featured in every install of Discourse and of course Creative Commons licensed.
I believe in the “Just in Time" theory of human behavior where we try to reach you at the exact moment you start typing your first post with the TL;DR version of those rules. And the most important rule of all for empathy is a simple one: hey, there's another person on the other side of that screen. Not just an abstract name, an avatar, a collection of pixels, but a real live human being, just like you.
I don't know if we can weaponize empathy but I'd sure like to try. Not every space has to be open to everyone, unless you work for Facebook or Twitter. Sometimes the point of having your own community is being able to close the door on people who demonstrate that they can't behave themselves in your house. Live with wolves, and you learn to howl.
Stackoverflow in hindsight
by jez9999
In hindsight, would you have reduced the scope of on-topic questions for Stackoverflow to where it's at today when you started the site knowing what you do now, and do you think it would've made the site less popular?
Atwood: Much of the strictness of Stack Overflow evolved as a side effect of the reputation system. Once you have a reputation score, you want to protect that score, and nothing devalues your own reputation more than seeing some other programmer get 300 reputation points from a humorous answer containing nothing but an XKCD comic. Anyone can post an XKCD comic; that takes no particular competence or knowledge. So the evolution in strictness -- peer reputation should come from expression of *skill*, not funny anecdotes -- was largely driven by the community, not by anyone employed at Stack Overflow.
Even knowing what I already knew, which is that putting a number next to someone's name will cause them to do whatever it takes to make that number go up -- I didn't anticipate how strong this effect would be. But ultimately I agree with it, and I think systems should trend to slightly increasing strictness over time as they grow bigger. Big cities have different problems than small cities, and they need more structure. -
Interviews: Stack Overflow Co-Founder Jeff Atwood Answers Your Questions
A few weeks ago you had a chance to ask author, entrepreneur, and software developer Jeff Atwood about founding Stack Overflow and the Stack Exchange Network, as well as his new endeavor, the Discourse open-source discussion platform. Below you will find his answers to your questions. Magic wand
by Anonymous Coward
If you had a magic wand to make one change in technology right now, what would it be?
Atwood: Users would not have to generate, remember, enter, or ever think about passwords again. Computers would automatically know who the user is through a combination of ambient biometrics plus physical possession of some kind of device. Like, say, a smartphone.
Passwords are the enemy. And the users, because we are the idiots put in charge of making up the passwords. But mostly, it's the *goddamn passwords*.
Why did you choose Microsoft Platform for SE?
by Sadsfae
I don't see many large, high profile sites running an entire Microsoft Windows stack nowadays (IIS/SQL Server, etc) but Stack Exchange is one of them.
What were the reasons behind choosing a full Microsoft stack versus any of the Open Source alternatives which seem much more prevalent, especially in start-ups and smaller businesses for web presence?
Atwood: Mostly, C# is what I knew and what I was skilled in -- and I'm a great fan of its primary architect Anders Hejsberg who also created Turbo Pascal and Delphi. Performance was a goal, too, and since C# is a compiled language it's *extremely* fast. I think you can see for yourself that Stack Overflow is absurdly fast. Having switched to Ruby with the Discourse project, I can also testify that Ruby .. is, uh ... not ... absurdly fast.
The only downside of the .NET environment is, honestly, the SQL Server licensing costs which can be quite extreme at scale. There is movement to make .NET more open source. Plus the long running mono effort.
The main weakness of .NET is that it's not great for open source projects, though that has changed a bit over the last few years. It never really made sense to open source Stack Overflow -- ask yourself, how many Stack Overflow clones have flourished? Why is that? As a closed source project, the performance, great language design, and scaling of C# worked for us.
I made different choices for Discourse which *was* designed to be an open source project, a tool that is widely applicable to many communities, from day zero.
History of StackExchange
by unencode200x
A question on the history of Stack Exchange. What was the original idea that drove you to make StackExchange and how has it evolved or added since?
Atwood: Do you remember a site called Experts-Exchange? No? That means we succeeded at our original goal.
The basic concept was to do a 100% community driven Q&A that had elements of:
- Wikipedia (all the articles are always up to date and not dead tombstones from six years ago).
- Reddit (voting up the good information and voting down the bad information).
- Blogs (ownership, curation, and responsibility for content that has your name on it).
- Videogames (the Xbox 360 Achievements system, points, and ways of encouraging and incentivizing positive community behavior that are fun).
Where everything we build together is creative commons, and belongs to all of us, since you guys and gals are the ones doing all the work in the system!
Reputation mechanisms & scientific quality
by Anonymous Coward
Jeff, have you thought about how to use reputation mechanisms to improve the quality of published scientific results? I'm asking in the context of John P. A. Ioannidis' famous paper.
It seems to me one fix for this (horrible) problem might be an online reputation mechanism where scientists could rate the reproducibility of published results. Thoughts? (thanks for inventing Stack Exchange - you've done the world a big favor).
Atwood: It certainly seems applicable. The Stack engine works best for systems of data, fact, and science -- or at least a "tome of knowledge" -- where you can actually verify an answer (or five answers) as plausibly correct. You can see which topics do best on the Stack engine in the Stack Exchange directory, with a massive, Jupiter sized Stack Overflow right at the top.
There's always more than one way to do it, of course, but when you start getting dozens or hundreds of "answers" you don't have Q&A, you have a discussion with no clear answers, just opinions.
User Reputation, Moderating, and Discourse
by T.E.D.
I think its probably inarguable that the biggest innovation StackOverflow brought to the web was the centrality of reputation and user moderation to its design. Sure, our own /. had done something similar years before, and it was hardly the first either, but no website I know of had before taken it to its logical conclusion in quite the way SO does. This effectively "crowdsourced" a lot of traditional website administrative activities, which turned out to be an incredibly powerful idea. Practically all the functionality of SO is built around the concept.
So when I saw you were tackling online message boards, I expected the same kind of thing. But browsing around a typical Discourse thread, I'm not seeing that at all. Sure, users can "heart" posts, but all that does is bump a small counter next to the heart. There is no way to tell at a glance which posts users found the best and/or worst. Higher rated posts don't sort to the top, or get bigger or anything. As a result, I don't even see that feature used much. Certainly its nothing like SO, where post voting is the central activity. It also seems like moderation on Discourse is designed to be done by administrators, not users. I don't see any facility for users getting moderation privs as they gain reputation. Compared to SO, Discourse seems kind of, well, like a big step backwards in interactivity.
I'm sure I'm missing something here. What is it? Or did you really decide SO's centering of its design around users and their opinion on posts was a mistake, or perhaps just not a good fit for a more generalized discussion board?
Atwood: Sorting a conversation by votes is a pretty effective way to destroy conversation. How can you follow the logical flow of back and forth, chronological dialog when the ground is constantly shifting underneath you as posts get voted up or down? You can't.
Stack is a system of technical Q&A, where opinions are fascinating, and all, but they are completely trumped by facts, data, and science. Stack only tolerates the minimum amount of discussion necessary to get the best questions and the best answers. The goal isn't for people to talk to each other, the goal is for people to *answer the damn question*. Ideally with the aforementioned facts, data, and science, so our peers can objectively decide if the answer is correct and works.
Discourse, on the other hand, is explicitly a system of discussion and opinion. There is no right and wrong. You can't tell me my opinion that Wolverine is the coolest X-Man is wrong. Long after people have forgotten what exactly was said, they will remember how you made them feel. That's what the like (heart) action is about, and why it is featured so prominently: empathy. Discourse is a system of empathy.
We do have user trust levels in Discourse, it's just less obvious, because we're playing a different kind of game. Compare that with Stack, where your reputation number and badge counts appear prominently next to your name every time you post. Trust me, people *do* notice when you like their post. And if they see your post got 20 likes whereas their post only got two, or none, they absolutely notice that too. Discourse is more of a collaborative game, where Stack is an explicitly competitive game, and that's why the score is so prominent. The best way to motivate a programmer is to tell them someone else did it better. Don't try to race sheep, don't try to herd race horses.
There may not be re-ordering by votes in Discourse, as there is in Stack Overflow, but there is a summary mode for topics when they reach 50 or more replies. If you'd like to see this in action, visit a longer topic and press the "Summarize Topic" button at the top near the estimated read time, or as I like to call it, the TL;DR button. Then you'll see only the "best" 10 percent of that long topic. That factors in a lot of data from each post such as likes, incoming and outgoing links to the post, the number of times it has been read, total read time (we track actual on-screen read time for all posts in Discourse), number of times it has been bookmarked, number of replies, and so on. You can also expand context above (in reply to) and below (replies) for each post as needed. Or you can expand the collapsed gaps as needed. Try it, you just need a long topic with over 50 replies to see it in action.
Cargo cult programming and Stack Overflow
by Anonymous Coward
I don't mean to minimize StackOverflow's contribution to the online knowledge base, because it's a great tool when used properly. I'm a systems guy and Server Fault is often more useful than vendor support for looking up strange error messages and possible troubleshooting routes. But, there are a lot of low skill programmers and sysadmins out there who lean on these tools way too much. How do you feel about these properties contributing to the crappy cargo cult programming and sysadmin work we see in our field?
Atwood: Stack is a system of peer education at its core. The key insight is realizing that crappy programmers hurt all of us, and it's our job to learn from each other so that we have less terrible code and terrible coders to deal with in the future. Even if that terrible coder is us!
The best way to learn a topic is to teach it to someone else. That is the skill at the heart of the Stack engine. It works at three levels:
1. Selfish. I need the answer to this question or I may get fired. Give me the answer. This is ideally handled through a good search result. They get what they need.
2. Self Improvement. I want to get reputation and prove to my peers that I know what I am doing. The more I learn, the better I am at my job, the more skilled I am, and the more job satisfaction / money / prestige I can gain.
3. Advancement of our craft. Programming, physics, and math will be here long after we are all dead. It's an honor to help move science forward together as much as we can together in our lifetime, so that future programmers, physicists, and mathematicians can stand on our shoulders and do amazing, incredible things for the future of humanity.
It's fine for people to play the game at level one, because they are also helping others learn and work their way up the skill ladder. If someone is learning, and someone is teaching, we all win.
Rampant closure of questions
by WaffleMonster
From time to time I search stackoverflow for easy answers and I would say about 20% of the time the question has been closed even though it is the reason I went to stackoverflow in the first place. In most of these instances a useful answer was also provided before closure. So my question to you is simply what gives.
The most common reason for closure I run into is that the people closing it don't have any domain clue what is being asked and appear to assume if they don't understand nobody else does either.
Another common reason for closure is the "duplicate" question meme in which nuance is overlooked and questions are marked as duplicates because the people doing the marking failed to understand or appreciate the difference. This is very annoying.
Less common but equally annoying issues are closure due to chatter about domain specific algorithms not being "programming questions" or even more amusing someone posting a question that is more specifically addressed by one of a hundred different stack exchanges even though it is still on topic.
Atwood: Remember that Stack is for questions that can be explicitly answered, *not* discussion. It's not a place for "what's the best way to.." opinion sinkholes. Humans love this kind of stuff because they are social animals, and there's nothing wrong with wanting to have a discussion -- you just need to have that discussion elsewhere, because you can't have it on Stack Overflow.
We're strict about this because we've seen what happens when systems are not explicit about their goals. This way lies madness. This way lies Yahoo Answers. In Stack's case the goal is *learning*. And I do not mean accidental, random, meandering, oh-hey-check-out-this-crazy-thing-I-saw-on-Reddit learning, but highly efficient, directed learning where you are a classroom, not a social club.
Duplicates are a hard problem, for sure. That's the one place I felt we didn't make a ton of progress in my four years there, unfortunately. Human beings have the incredibly annoying habit of asking the same questions using completely and utterly different words. They're really good at it. And it is true that over time there are more and more questions and answers on Stack Overflow, so the minefield of "is this a duplicate of...?" is only getting bigger over time. It is a super hard problem. If you have specific ideas of how to handle duplicates better, don't hesitate to ask or search some of the existing topics there.
Remember, Stack Overflow is governed by programmers just like you, you are a citizen of its community just like me, and you get a say in what happens there. You could even be elected a moderator by participating in the yearly elections. So if you don't like the way things work, it's like any other democracy -- make your voice heard, vote, campaign, or run for office.
Relevance of old answers
by Scottingham
As SO ages, some of the offered solutions are no longer valid. Are there currently plans to automate some way of validating old answers automatically? This problem seems to be a larger problem with forums in general. Do you have any musings regarding aging forums?
Atwood: Anyone, even anonymous users, can suggest an edit to any question or answer on any Stack Exchange site. It is like Wikipedia in that regard. Once two other users with sufficient reputation approve the edit it goes through. Alternately, if you earn enough reputation, you can make direct edits yourself.
If you see information that's out of date, edit it to make it more up to date! Be the change you want to see, and all that.
Signal To Noise: Trolls
by Anonymous Coward
In reading your work for years and seeing your various contributions, it seems like you are fascinated with filtering out the most useful information. In many of your blog posts the insight is not yours but rather a conglomeration of chosen useful quotes and sources. I very much appreciate this. My question for you is how do you handle critical feedback vs trolls when dealing with communities. For example, the down button is often a disagree button rather than a negative point. How do you deal with mixed opinions?
To use a real life personal example, TEF noted how he felt you were suggesting that people shouldn't play around to learn. Yet, the way he said it was clearly inflammatory. How do you separate the legitimate concern and critical feedback from the troll who doesn't want to listen to your response?
Atwood: There is a reason we don't have a "dislike" or "downvote" in Discourse. How can an opinion be wrong? It can be rude, offensive, misinformed, misguided, or just plumb crazy -- but it can't be objectively *wrong*. Often the way you judge posts in Discourse is by their *lack* of likes. If nobody feels strongly enough about your reply to push the heart button on it, and 'co-sign' it with their name in public, that says something.
As for separating legitimate criticism from trolling, I don't know that actual trolls, by the strict definition of the word troll, are that common. I think bad faith makes itself quite clear in the tone and delivery of the criticism. Are you saying this in the hope that we can both learn something from the interaction, or are you saying it because you want to hurt or shame or denigrate or discredit me? Truth alone, as it turns out, isn't the whole truth. How you say something matters.
Bad faith is especially visible to the audience, who has no stake in the argument, and can be surprisingly objective in judging authenticity. One of the most striking things about the early days of Stack Overflow was seeing how people would not upvote cruelty. They wouldn't necessarily downvote it, mind you, but overt cruelty and meanness in an answer was never an effective way to get upvotes and reputation even if the technical information was sound. The best way to win an argument isn't to convince the other person, necessarily -- good luck with that -- but to convince everyone who is watching. And you will never convince an audience watching you be cruel to another person.
In life, being cruel to others may achieve some short term goals, but it is *never* a winning long term strategy. And I think that is exactly how it should be.
How do you have a good debate online?
by AmiMoJo
It seems like the internet is mostly a terrible place to have debates. Many forums quickly become echo chambers for people who want to be as offensive as possible just to prove that they can exercise their free speech rights. Other times debates are derailed by cheap tactics like being deliberately offensive to derail the arguments and bog everyone down in accusations that they are "SJWs". Ad-hominems and obvious logical fallacies seem to be the norm.
How do you plan to avoid this happening? So far no-one seems to have found a way.
Atwood: We have a few tricks up our sleeve at Discourse. We try to teach communities not just how the software works, but how human beings should work, with stuff like our Universal Rules of Civilized Discourse which is prominently featured in every install of Discourse and of course Creative Commons licensed.
I believe in the “Just in Time" theory of human behavior where we try to reach you at the exact moment you start typing your first post with the TL;DR version of those rules. And the most important rule of all for empathy is a simple one: hey, there's another person on the other side of that screen. Not just an abstract name, an avatar, a collection of pixels, but a real live human being, just like you.
I don't know if we can weaponize empathy but I'd sure like to try. Not every space has to be open to everyone, unless you work for Facebook or Twitter. Sometimes the point of having your own community is being able to close the door on people who demonstrate that they can't behave themselves in your house. Live with wolves, and you learn to howl.
Stackoverflow in hindsight
by jez9999
In hindsight, would you have reduced the scope of on-topic questions for Stackoverflow to where it's at today when you started the site knowing what you do now, and do you think it would've made the site less popular?
Atwood: Much of the strictness of Stack Overflow evolved as a side effect of the reputation system. Once you have a reputation score, you want to protect that score, and nothing devalues your own reputation more than seeing some other programmer get 300 reputation points from a humorous answer containing nothing but an XKCD comic. Anyone can post an XKCD comic; that takes no particular competence or knowledge. So the evolution in strictness -- peer reputation should come from expression of *skill*, not funny anecdotes -- was largely driven by the community, not by anyone employed at Stack Overflow.
Even knowing what I already knew, which is that putting a number next to someone's name will cause them to do whatever it takes to make that number go up -- I didn't anticipate how strong this effect would be. But ultimately I agree with it, and I think systems should trend to slightly increasing strictness over time as they grow bigger. Big cities have different problems than small cities, and they need more structure. -
Interviews: Stack Overflow Co-Founder Jeff Atwood Answers Your Questions
A few weeks ago you had a chance to ask author, entrepreneur, and software developer Jeff Atwood about founding Stack Overflow and the Stack Exchange Network, as well as his new endeavor, the Discourse open-source discussion platform. Below you will find his answers to your questions. Magic wand
by Anonymous Coward
If you had a magic wand to make one change in technology right now, what would it be?
Atwood: Users would not have to generate, remember, enter, or ever think about passwords again. Computers would automatically know who the user is through a combination of ambient biometrics plus physical possession of some kind of device. Like, say, a smartphone.
Passwords are the enemy. And the users, because we are the idiots put in charge of making up the passwords. But mostly, it's the *goddamn passwords*.
Why did you choose Microsoft Platform for SE?
by Sadsfae
I don't see many large, high profile sites running an entire Microsoft Windows stack nowadays (IIS/SQL Server, etc) but Stack Exchange is one of them.
What were the reasons behind choosing a full Microsoft stack versus any of the Open Source alternatives which seem much more prevalent, especially in start-ups and smaller businesses for web presence?
Atwood: Mostly, C# is what I knew and what I was skilled in -- and I'm a great fan of its primary architect Anders Hejsberg who also created Turbo Pascal and Delphi. Performance was a goal, too, and since C# is a compiled language it's *extremely* fast. I think you can see for yourself that Stack Overflow is absurdly fast. Having switched to Ruby with the Discourse project, I can also testify that Ruby .. is, uh ... not ... absurdly fast.
The only downside of the .NET environment is, honestly, the SQL Server licensing costs which can be quite extreme at scale. There is movement to make .NET more open source. Plus the long running mono effort.
The main weakness of .NET is that it's not great for open source projects, though that has changed a bit over the last few years. It never really made sense to open source Stack Overflow -- ask yourself, how many Stack Overflow clones have flourished? Why is that? As a closed source project, the performance, great language design, and scaling of C# worked for us.
I made different choices for Discourse which *was* designed to be an open source project, a tool that is widely applicable to many communities, from day zero.
History of StackExchange
by unencode200x
A question on the history of Stack Exchange. What was the original idea that drove you to make StackExchange and how has it evolved or added since?
Atwood: Do you remember a site called Experts-Exchange? No? That means we succeeded at our original goal.
The basic concept was to do a 100% community driven Q&A that had elements of:
- Wikipedia (all the articles are always up to date and not dead tombstones from six years ago).
- Reddit (voting up the good information and voting down the bad information).
- Blogs (ownership, curation, and responsibility for content that has your name on it).
- Videogames (the Xbox 360 Achievements system, points, and ways of encouraging and incentivizing positive community behavior that are fun).
Where everything we build together is creative commons, and belongs to all of us, since you guys and gals are the ones doing all the work in the system!
Reputation mechanisms & scientific quality
by Anonymous Coward
Jeff, have you thought about how to use reputation mechanisms to improve the quality of published scientific results? I'm asking in the context of John P. A. Ioannidis' famous paper.
It seems to me one fix for this (horrible) problem might be an online reputation mechanism where scientists could rate the reproducibility of published results. Thoughts? (thanks for inventing Stack Exchange - you've done the world a big favor).
Atwood: It certainly seems applicable. The Stack engine works best for systems of data, fact, and science -- or at least a "tome of knowledge" -- where you can actually verify an answer (or five answers) as plausibly correct. You can see which topics do best on the Stack engine in the Stack Exchange directory, with a massive, Jupiter sized Stack Overflow right at the top.
There's always more than one way to do it, of course, but when you start getting dozens or hundreds of "answers" you don't have Q&A, you have a discussion with no clear answers, just opinions.
User Reputation, Moderating, and Discourse
by T.E.D.
I think its probably inarguable that the biggest innovation StackOverflow brought to the web was the centrality of reputation and user moderation to its design. Sure, our own /. had done something similar years before, and it was hardly the first either, but no website I know of had before taken it to its logical conclusion in quite the way SO does. This effectively "crowdsourced" a lot of traditional website administrative activities, which turned out to be an incredibly powerful idea. Practically all the functionality of SO is built around the concept.
So when I saw you were tackling online message boards, I expected the same kind of thing. But browsing around a typical Discourse thread, I'm not seeing that at all. Sure, users can "heart" posts, but all that does is bump a small counter next to the heart. There is no way to tell at a glance which posts users found the best and/or worst. Higher rated posts don't sort to the top, or get bigger or anything. As a result, I don't even see that feature used much. Certainly its nothing like SO, where post voting is the central activity. It also seems like moderation on Discourse is designed to be done by administrators, not users. I don't see any facility for users getting moderation privs as they gain reputation. Compared to SO, Discourse seems kind of, well, like a big step backwards in interactivity.
I'm sure I'm missing something here. What is it? Or did you really decide SO's centering of its design around users and their opinion on posts was a mistake, or perhaps just not a good fit for a more generalized discussion board?
Atwood: Sorting a conversation by votes is a pretty effective way to destroy conversation. How can you follow the logical flow of back and forth, chronological dialog when the ground is constantly shifting underneath you as posts get voted up or down? You can't.
Stack is a system of technical Q&A, where opinions are fascinating, and all, but they are completely trumped by facts, data, and science. Stack only tolerates the minimum amount of discussion necessary to get the best questions and the best answers. The goal isn't for people to talk to each other, the goal is for people to *answer the damn question*. Ideally with the aforementioned facts, data, and science, so our peers can objectively decide if the answer is correct and works.
Discourse, on the other hand, is explicitly a system of discussion and opinion. There is no right and wrong. You can't tell me my opinion that Wolverine is the coolest X-Man is wrong. Long after people have forgotten what exactly was said, they will remember how you made them feel. That's what the like (heart) action is about, and why it is featured so prominently: empathy. Discourse is a system of empathy.
We do have user trust levels in Discourse, it's just less obvious, because we're playing a different kind of game. Compare that with Stack, where your reputation number and badge counts appear prominently next to your name every time you post. Trust me, people *do* notice when you like their post. And if they see your post got 20 likes whereas their post only got two, or none, they absolutely notice that too. Discourse is more of a collaborative game, where Stack is an explicitly competitive game, and that's why the score is so prominent. The best way to motivate a programmer is to tell them someone else did it better. Don't try to race sheep, don't try to herd race horses.
There may not be re-ordering by votes in Discourse, as there is in Stack Overflow, but there is a summary mode for topics when they reach 50 or more replies. If you'd like to see this in action, visit a longer topic and press the "Summarize Topic" button at the top near the estimated read time, or as I like to call it, the TL;DR button. Then you'll see only the "best" 10 percent of that long topic. That factors in a lot of data from each post such as likes, incoming and outgoing links to the post, the number of times it has been read, total read time (we track actual on-screen read time for all posts in Discourse), number of times it has been bookmarked, number of replies, and so on. You can also expand context above (in reply to) and below (replies) for each post as needed. Or you can expand the collapsed gaps as needed. Try it, you just need a long topic with over 50 replies to see it in action.
Cargo cult programming and Stack Overflow
by Anonymous Coward
I don't mean to minimize StackOverflow's contribution to the online knowledge base, because it's a great tool when used properly. I'm a systems guy and Server Fault is often more useful than vendor support for looking up strange error messages and possible troubleshooting routes. But, there are a lot of low skill programmers and sysadmins out there who lean on these tools way too much. How do you feel about these properties contributing to the crappy cargo cult programming and sysadmin work we see in our field?
Atwood: Stack is a system of peer education at its core. The key insight is realizing that crappy programmers hurt all of us, and it's our job to learn from each other so that we have less terrible code and terrible coders to deal with in the future. Even if that terrible coder is us!
The best way to learn a topic is to teach it to someone else. That is the skill at the heart of the Stack engine. It works at three levels:
1. Selfish. I need the answer to this question or I may get fired. Give me the answer. This is ideally handled through a good search result. They get what they need.
2. Self Improvement. I want to get reputation and prove to my peers that I know what I am doing. The more I learn, the better I am at my job, the more skilled I am, and the more job satisfaction / money / prestige I can gain.
3. Advancement of our craft. Programming, physics, and math will be here long after we are all dead. It's an honor to help move science forward together as much as we can together in our lifetime, so that future programmers, physicists, and mathematicians can stand on our shoulders and do amazing, incredible things for the future of humanity.
It's fine for people to play the game at level one, because they are also helping others learn and work their way up the skill ladder. If someone is learning, and someone is teaching, we all win.
Rampant closure of questions
by WaffleMonster
From time to time I search stackoverflow for easy answers and I would say about 20% of the time the question has been closed even though it is the reason I went to stackoverflow in the first place. In most of these instances a useful answer was also provided before closure. So my question to you is simply what gives.
The most common reason for closure I run into is that the people closing it don't have any domain clue what is being asked and appear to assume if they don't understand nobody else does either.
Another common reason for closure is the "duplicate" question meme in which nuance is overlooked and questions are marked as duplicates because the people doing the marking failed to understand or appreciate the difference. This is very annoying.
Less common but equally annoying issues are closure due to chatter about domain specific algorithms not being "programming questions" or even more amusing someone posting a question that is more specifically addressed by one of a hundred different stack exchanges even though it is still on topic.
Atwood: Remember that Stack is for questions that can be explicitly answered, *not* discussion. It's not a place for "what's the best way to.." opinion sinkholes. Humans love this kind of stuff because they are social animals, and there's nothing wrong with wanting to have a discussion -- you just need to have that discussion elsewhere, because you can't have it on Stack Overflow.
We're strict about this because we've seen what happens when systems are not explicit about their goals. This way lies madness. This way lies Yahoo Answers. In Stack's case the goal is *learning*. And I do not mean accidental, random, meandering, oh-hey-check-out-this-crazy-thing-I-saw-on-Reddit learning, but highly efficient, directed learning where you are a classroom, not a social club.
Duplicates are a hard problem, for sure. That's the one place I felt we didn't make a ton of progress in my four years there, unfortunately. Human beings have the incredibly annoying habit of asking the same questions using completely and utterly different words. They're really good at it. And it is true that over time there are more and more questions and answers on Stack Overflow, so the minefield of "is this a duplicate of...?" is only getting bigger over time. It is a super hard problem. If you have specific ideas of how to handle duplicates better, don't hesitate to ask or search some of the existing topics there.
Remember, Stack Overflow is governed by programmers just like you, you are a citizen of its community just like me, and you get a say in what happens there. You could even be elected a moderator by participating in the yearly elections. So if you don't like the way things work, it's like any other democracy -- make your voice heard, vote, campaign, or run for office.
Relevance of old answers
by Scottingham
As SO ages, some of the offered solutions are no longer valid. Are there currently plans to automate some way of validating old answers automatically? This problem seems to be a larger problem with forums in general. Do you have any musings regarding aging forums?
Atwood: Anyone, even anonymous users, can suggest an edit to any question or answer on any Stack Exchange site. It is like Wikipedia in that regard. Once two other users with sufficient reputation approve the edit it goes through. Alternately, if you earn enough reputation, you can make direct edits yourself.
If you see information that's out of date, edit it to make it more up to date! Be the change you want to see, and all that.
Signal To Noise: Trolls
by Anonymous Coward
In reading your work for years and seeing your various contributions, it seems like you are fascinated with filtering out the most useful information. In many of your blog posts the insight is not yours but rather a conglomeration of chosen useful quotes and sources. I very much appreciate this. My question for you is how do you handle critical feedback vs trolls when dealing with communities. For example, the down button is often a disagree button rather than a negative point. How do you deal with mixed opinions?
To use a real life personal example, TEF noted how he felt you were suggesting that people shouldn't play around to learn. Yet, the way he said it was clearly inflammatory. How do you separate the legitimate concern and critical feedback from the troll who doesn't want to listen to your response?
Atwood: There is a reason we don't have a "dislike" or "downvote" in Discourse. How can an opinion be wrong? It can be rude, offensive, misinformed, misguided, or just plumb crazy -- but it can't be objectively *wrong*. Often the way you judge posts in Discourse is by their *lack* of likes. If nobody feels strongly enough about your reply to push the heart button on it, and 'co-sign' it with their name in public, that says something.
As for separating legitimate criticism from trolling, I don't know that actual trolls, by the strict definition of the word troll, are that common. I think bad faith makes itself quite clear in the tone and delivery of the criticism. Are you saying this in the hope that we can both learn something from the interaction, or are you saying it because you want to hurt or shame or denigrate or discredit me? Truth alone, as it turns out, isn't the whole truth. How you say something matters.
Bad faith is especially visible to the audience, who has no stake in the argument, and can be surprisingly objective in judging authenticity. One of the most striking things about the early days of Stack Overflow was seeing how people would not upvote cruelty. They wouldn't necessarily downvote it, mind you, but overt cruelty and meanness in an answer was never an effective way to get upvotes and reputation even if the technical information was sound. The best way to win an argument isn't to convince the other person, necessarily -- good luck with that -- but to convince everyone who is watching. And you will never convince an audience watching you be cruel to another person.
In life, being cruel to others may achieve some short term goals, but it is *never* a winning long term strategy. And I think that is exactly how it should be.
How do you have a good debate online?
by AmiMoJo
It seems like the internet is mostly a terrible place to have debates. Many forums quickly become echo chambers for people who want to be as offensive as possible just to prove that they can exercise their free speech rights. Other times debates are derailed by cheap tactics like being deliberately offensive to derail the arguments and bog everyone down in accusations that they are "SJWs". Ad-hominems and obvious logical fallacies seem to be the norm.
How do you plan to avoid this happening? So far no-one seems to have found a way.
Atwood: We have a few tricks up our sleeve at Discourse. We try to teach communities not just how the software works, but how human beings should work, with stuff like our Universal Rules of Civilized Discourse which is prominently featured in every install of Discourse and of course Creative Commons licensed.
I believe in the “Just in Time" theory of human behavior where we try to reach you at the exact moment you start typing your first post with the TL;DR version of those rules. And the most important rule of all for empathy is a simple one: hey, there's another person on the other side of that screen. Not just an abstract name, an avatar, a collection of pixels, but a real live human being, just like you.
I don't know if we can weaponize empathy but I'd sure like to try. Not every space has to be open to everyone, unless you work for Facebook or Twitter. Sometimes the point of having your own community is being able to close the door on people who demonstrate that they can't behave themselves in your house. Live with wolves, and you learn to howl.
Stackoverflow in hindsight
by jez9999
In hindsight, would you have reduced the scope of on-topic questions for Stackoverflow to where it's at today when you started the site knowing what you do now, and do you think it would've made the site less popular?
Atwood: Much of the strictness of Stack Overflow evolved as a side effect of the reputation system. Once you have a reputation score, you want to protect that score, and nothing devalues your own reputation more than seeing some other programmer get 300 reputation points from a humorous answer containing nothing but an XKCD comic. Anyone can post an XKCD comic; that takes no particular competence or knowledge. So the evolution in strictness -- peer reputation should come from expression of *skill*, not funny anecdotes -- was largely driven by the community, not by anyone employed at Stack Overflow.
Even knowing what I already knew, which is that putting a number next to someone's name will cause them to do whatever it takes to make that number go up -- I didn't anticipate how strong this effect would be. But ultimately I agree with it, and I think systems should trend to slightly increasing strictness over time as they grow bigger. Big cities have different problems than small cities, and they need more structure. -
Interviews: Stack Overflow Co-Founder Jeff Atwood Answers Your Questions
A few weeks ago you had a chance to ask author, entrepreneur, and software developer Jeff Atwood about founding Stack Overflow and the Stack Exchange Network, as well as his new endeavor, the Discourse open-source discussion platform. Below you will find his answers to your questions. Magic wand
by Anonymous Coward
If you had a magic wand to make one change in technology right now, what would it be?
Atwood: Users would not have to generate, remember, enter, or ever think about passwords again. Computers would automatically know who the user is through a combination of ambient biometrics plus physical possession of some kind of device. Like, say, a smartphone.
Passwords are the enemy. And the users, because we are the idiots put in charge of making up the passwords. But mostly, it's the *goddamn passwords*.
Why did you choose Microsoft Platform for SE?
by Sadsfae
I don't see many large, high profile sites running an entire Microsoft Windows stack nowadays (IIS/SQL Server, etc) but Stack Exchange is one of them.
What were the reasons behind choosing a full Microsoft stack versus any of the Open Source alternatives which seem much more prevalent, especially in start-ups and smaller businesses for web presence?
Atwood: Mostly, C# is what I knew and what I was skilled in -- and I'm a great fan of its primary architect Anders Hejsberg who also created Turbo Pascal and Delphi. Performance was a goal, too, and since C# is a compiled language it's *extremely* fast. I think you can see for yourself that Stack Overflow is absurdly fast. Having switched to Ruby with the Discourse project, I can also testify that Ruby .. is, uh ... not ... absurdly fast.
The only downside of the .NET environment is, honestly, the SQL Server licensing costs which can be quite extreme at scale. There is movement to make .NET more open source. Plus the long running mono effort.
The main weakness of .NET is that it's not great for open source projects, though that has changed a bit over the last few years. It never really made sense to open source Stack Overflow -- ask yourself, how many Stack Overflow clones have flourished? Why is that? As a closed source project, the performance, great language design, and scaling of C# worked for us.
I made different choices for Discourse which *was* designed to be an open source project, a tool that is widely applicable to many communities, from day zero.
History of StackExchange
by unencode200x
A question on the history of Stack Exchange. What was the original idea that drove you to make StackExchange and how has it evolved or added since?
Atwood: Do you remember a site called Experts-Exchange? No? That means we succeeded at our original goal.
The basic concept was to do a 100% community driven Q&A that had elements of:
- Wikipedia (all the articles are always up to date and not dead tombstones from six years ago).
- Reddit (voting up the good information and voting down the bad information).
- Blogs (ownership, curation, and responsibility for content that has your name on it).
- Videogames (the Xbox 360 Achievements system, points, and ways of encouraging and incentivizing positive community behavior that are fun).
Where everything we build together is creative commons, and belongs to all of us, since you guys and gals are the ones doing all the work in the system!
Reputation mechanisms & scientific quality
by Anonymous Coward
Jeff, have you thought about how to use reputation mechanisms to improve the quality of published scientific results? I'm asking in the context of John P. A. Ioannidis' famous paper.
It seems to me one fix for this (horrible) problem might be an online reputation mechanism where scientists could rate the reproducibility of published results. Thoughts? (thanks for inventing Stack Exchange - you've done the world a big favor).
Atwood: It certainly seems applicable. The Stack engine works best for systems of data, fact, and science -- or at least a "tome of knowledge" -- where you can actually verify an answer (or five answers) as plausibly correct. You can see which topics do best on the Stack engine in the Stack Exchange directory, with a massive, Jupiter sized Stack Overflow right at the top.
There's always more than one way to do it, of course, but when you start getting dozens or hundreds of "answers" you don't have Q&A, you have a discussion with no clear answers, just opinions.
User Reputation, Moderating, and Discourse
by T.E.D.
I think its probably inarguable that the biggest innovation StackOverflow brought to the web was the centrality of reputation and user moderation to its design. Sure, our own /. had done something similar years before, and it was hardly the first either, but no website I know of had before taken it to its logical conclusion in quite the way SO does. This effectively "crowdsourced" a lot of traditional website administrative activities, which turned out to be an incredibly powerful idea. Practically all the functionality of SO is built around the concept.
So when I saw you were tackling online message boards, I expected the same kind of thing. But browsing around a typical Discourse thread, I'm not seeing that at all. Sure, users can "heart" posts, but all that does is bump a small counter next to the heart. There is no way to tell at a glance which posts users found the best and/or worst. Higher rated posts don't sort to the top, or get bigger or anything. As a result, I don't even see that feature used much. Certainly its nothing like SO, where post voting is the central activity. It also seems like moderation on Discourse is designed to be done by administrators, not users. I don't see any facility for users getting moderation privs as they gain reputation. Compared to SO, Discourse seems kind of, well, like a big step backwards in interactivity.
I'm sure I'm missing something here. What is it? Or did you really decide SO's centering of its design around users and their opinion on posts was a mistake, or perhaps just not a good fit for a more generalized discussion board?
Atwood: Sorting a conversation by votes is a pretty effective way to destroy conversation. How can you follow the logical flow of back and forth, chronological dialog when the ground is constantly shifting underneath you as posts get voted up or down? You can't.
Stack is a system of technical Q&A, where opinions are fascinating, and all, but they are completely trumped by facts, data, and science. Stack only tolerates the minimum amount of discussion necessary to get the best questions and the best answers. The goal isn't for people to talk to each other, the goal is for people to *answer the damn question*. Ideally with the aforementioned facts, data, and science, so our peers can objectively decide if the answer is correct and works.
Discourse, on the other hand, is explicitly a system of discussion and opinion. There is no right and wrong. You can't tell me my opinion that Wolverine is the coolest X-Man is wrong. Long after people have forgotten what exactly was said, they will remember how you made them feel. That's what the like (heart) action is about, and why it is featured so prominently: empathy. Discourse is a system of empathy.
We do have user trust levels in Discourse, it's just less obvious, because we're playing a different kind of game. Compare that with Stack, where your reputation number and badge counts appear prominently next to your name every time you post. Trust me, people *do* notice when you like their post. And if they see your post got 20 likes whereas their post only got two, or none, they absolutely notice that too. Discourse is more of a collaborative game, where Stack is an explicitly competitive game, and that's why the score is so prominent. The best way to motivate a programmer is to tell them someone else did it better. Don't try to race sheep, don't try to herd race horses.
There may not be re-ordering by votes in Discourse, as there is in Stack Overflow, but there is a summary mode for topics when they reach 50 or more replies. If you'd like to see this in action, visit a longer topic and press the "Summarize Topic" button at the top near the estimated read time, or as I like to call it, the TL;DR button. Then you'll see only the "best" 10 percent of that long topic. That factors in a lot of data from each post such as likes, incoming and outgoing links to the post, the number of times it has been read, total read time (we track actual on-screen read time for all posts in Discourse), number of times it has been bookmarked, number of replies, and so on. You can also expand context above (in reply to) and below (replies) for each post as needed. Or you can expand the collapsed gaps as needed. Try it, you just need a long topic with over 50 replies to see it in action.
Cargo cult programming and Stack Overflow
by Anonymous Coward
I don't mean to minimize StackOverflow's contribution to the online knowledge base, because it's a great tool when used properly. I'm a systems guy and Server Fault is often more useful than vendor support for looking up strange error messages and possible troubleshooting routes. But, there are a lot of low skill programmers and sysadmins out there who lean on these tools way too much. How do you feel about these properties contributing to the crappy cargo cult programming and sysadmin work we see in our field?
Atwood: Stack is a system of peer education at its core. The key insight is realizing that crappy programmers hurt all of us, and it's our job to learn from each other so that we have less terrible code and terrible coders to deal with in the future. Even if that terrible coder is us!
The best way to learn a topic is to teach it to someone else. That is the skill at the heart of the Stack engine. It works at three levels:
1. Selfish. I need the answer to this question or I may get fired. Give me the answer. This is ideally handled through a good search result. They get what they need.
2. Self Improvement. I want to get reputation and prove to my peers that I know what I am doing. The more I learn, the better I am at my job, the more skilled I am, and the more job satisfaction / money / prestige I can gain.
3. Advancement of our craft. Programming, physics, and math will be here long after we are all dead. It's an honor to help move science forward together as much as we can together in our lifetime, so that future programmers, physicists, and mathematicians can stand on our shoulders and do amazing, incredible things for the future of humanity.
It's fine for people to play the game at level one, because they are also helping others learn and work their way up the skill ladder. If someone is learning, and someone is teaching, we all win.
Rampant closure of questions
by WaffleMonster
From time to time I search stackoverflow for easy answers and I would say about 20% of the time the question has been closed even though it is the reason I went to stackoverflow in the first place. In most of these instances a useful answer was also provided before closure. So my question to you is simply what gives.
The most common reason for closure I run into is that the people closing it don't have any domain clue what is being asked and appear to assume if they don't understand nobody else does either.
Another common reason for closure is the "duplicate" question meme in which nuance is overlooked and questions are marked as duplicates because the people doing the marking failed to understand or appreciate the difference. This is very annoying.
Less common but equally annoying issues are closure due to chatter about domain specific algorithms not being "programming questions" or even more amusing someone posting a question that is more specifically addressed by one of a hundred different stack exchanges even though it is still on topic.
Atwood: Remember that Stack is for questions that can be explicitly answered, *not* discussion. It's not a place for "what's the best way to.." opinion sinkholes. Humans love this kind of stuff because they are social animals, and there's nothing wrong with wanting to have a discussion -- you just need to have that discussion elsewhere, because you can't have it on Stack Overflow.
We're strict about this because we've seen what happens when systems are not explicit about their goals. This way lies madness. This way lies Yahoo Answers. In Stack's case the goal is *learning*. And I do not mean accidental, random, meandering, oh-hey-check-out-this-crazy-thing-I-saw-on-Reddit learning, but highly efficient, directed learning where you are a classroom, not a social club.
Duplicates are a hard problem, for sure. That's the one place I felt we didn't make a ton of progress in my four years there, unfortunately. Human beings have the incredibly annoying habit of asking the same questions using completely and utterly different words. They're really good at it. And it is true that over time there are more and more questions and answers on Stack Overflow, so the minefield of "is this a duplicate of...?" is only getting bigger over time. It is a super hard problem. If you have specific ideas of how to handle duplicates better, don't hesitate to ask or search some of the existing topics there.
Remember, Stack Overflow is governed by programmers just like you, you are a citizen of its community just like me, and you get a say in what happens there. You could even be elected a moderator by participating in the yearly elections. So if you don't like the way things work, it's like any other democracy -- make your voice heard, vote, campaign, or run for office.
Relevance of old answers
by Scottingham
As SO ages, some of the offered solutions are no longer valid. Are there currently plans to automate some way of validating old answers automatically? This problem seems to be a larger problem with forums in general. Do you have any musings regarding aging forums?
Atwood: Anyone, even anonymous users, can suggest an edit to any question or answer on any Stack Exchange site. It is like Wikipedia in that regard. Once two other users with sufficient reputation approve the edit it goes through. Alternately, if you earn enough reputation, you can make direct edits yourself.
If you see information that's out of date, edit it to make it more up to date! Be the change you want to see, and all that.
Signal To Noise: Trolls
by Anonymous Coward
In reading your work for years and seeing your various contributions, it seems like you are fascinated with filtering out the most useful information. In many of your blog posts the insight is not yours but rather a conglomeration of chosen useful quotes and sources. I very much appreciate this. My question for you is how do you handle critical feedback vs trolls when dealing with communities. For example, the down button is often a disagree button rather than a negative point. How do you deal with mixed opinions?
To use a real life personal example, TEF noted how he felt you were suggesting that people shouldn't play around to learn. Yet, the way he said it was clearly inflammatory. How do you separate the legitimate concern and critical feedback from the troll who doesn't want to listen to your response?
Atwood: There is a reason we don't have a "dislike" or "downvote" in Discourse. How can an opinion be wrong? It can be rude, offensive, misinformed, misguided, or just plumb crazy -- but it can't be objectively *wrong*. Often the way you judge posts in Discourse is by their *lack* of likes. If nobody feels strongly enough about your reply to push the heart button on it, and 'co-sign' it with their name in public, that says something.
As for separating legitimate criticism from trolling, I don't know that actual trolls, by the strict definition of the word troll, are that common. I think bad faith makes itself quite clear in the tone and delivery of the criticism. Are you saying this in the hope that we can both learn something from the interaction, or are you saying it because you want to hurt or shame or denigrate or discredit me? Truth alone, as it turns out, isn't the whole truth. How you say something matters.
Bad faith is especially visible to the audience, who has no stake in the argument, and can be surprisingly objective in judging authenticity. One of the most striking things about the early days of Stack Overflow was seeing how people would not upvote cruelty. They wouldn't necessarily downvote it, mind you, but overt cruelty and meanness in an answer was never an effective way to get upvotes and reputation even if the technical information was sound. The best way to win an argument isn't to convince the other person, necessarily -- good luck with that -- but to convince everyone who is watching. And you will never convince an audience watching you be cruel to another person.
In life, being cruel to others may achieve some short term goals, but it is *never* a winning long term strategy. And I think that is exactly how it should be.
How do you have a good debate online?
by AmiMoJo
It seems like the internet is mostly a terrible place to have debates. Many forums quickly become echo chambers for people who want to be as offensive as possible just to prove that they can exercise their free speech rights. Other times debates are derailed by cheap tactics like being deliberately offensive to derail the arguments and bog everyone down in accusations that they are "SJWs". Ad-hominems and obvious logical fallacies seem to be the norm.
How do you plan to avoid this happening? So far no-one seems to have found a way.
Atwood: We have a few tricks up our sleeve at Discourse. We try to teach communities not just how the software works, but how human beings should work, with stuff like our Universal Rules of Civilized Discourse which is prominently featured in every install of Discourse and of course Creative Commons licensed.
I believe in the “Just in Time" theory of human behavior where we try to reach you at the exact moment you start typing your first post with the TL;DR version of those rules. And the most important rule of all for empathy is a simple one: hey, there's another person on the other side of that screen. Not just an abstract name, an avatar, a collection of pixels, but a real live human being, just like you.
I don't know if we can weaponize empathy but I'd sure like to try. Not every space has to be open to everyone, unless you work for Facebook or Twitter. Sometimes the point of having your own community is being able to close the door on people who demonstrate that they can't behave themselves in your house. Live with wolves, and you learn to howl.
Stackoverflow in hindsight
by jez9999
In hindsight, would you have reduced the scope of on-topic questions for Stackoverflow to where it's at today when you started the site knowing what you do now, and do you think it would've made the site less popular?
Atwood: Much of the strictness of Stack Overflow evolved as a side effect of the reputation system. Once you have a reputation score, you want to protect that score, and nothing devalues your own reputation more than seeing some other programmer get 300 reputation points from a humorous answer containing nothing but an XKCD comic. Anyone can post an XKCD comic; that takes no particular competence or knowledge. So the evolution in strictness -- peer reputation should come from expression of *skill*, not funny anecdotes -- was largely driven by the community, not by anyone employed at Stack Overflow.
Even knowing what I already knew, which is that putting a number next to someone's name will cause them to do whatever it takes to make that number go up -- I didn't anticipate how strong this effect would be. But ultimately I agree with it, and I think systems should trend to slightly increasing strictness over time as they grow bigger. Big cities have different problems than small cities, and they need more structure. -
Interviews: Ask Stack Overflow Co-Founder Jeff Atwood a Question
Jeff Atwood is an author, entrepreneur, and software developer. He runs the popular programming blog Coding Horror and is the co-founder of Stack Overflow and the Stack Exchange Network. In early 2012 he decided to leave Stack Exchange so he could spend more time with his family. A year later he announced his new company the Civilized Discourse Construction Kit, Inc. and the Discourse open-source discussion platform which aims to improve conversations on the internet. Jeff has agreed to give some of his time to answer any questions you may have. As usual, ask as many as you'd like, but please, one question per post. -
Interviews: Ask Stack Overflow Co-Founder Jeff Atwood a Question
Jeff Atwood is an author, entrepreneur, and software developer. He runs the popular programming blog Coding Horror and is the co-founder of Stack Overflow and the Stack Exchange Network. In early 2012 he decided to leave Stack Exchange so he could spend more time with his family. A year later he announced his new company the Civilized Discourse Construction Kit, Inc. and the Discourse open-source discussion platform which aims to improve conversations on the internet. Jeff has agreed to give some of his time to answer any questions you may have. As usual, ask as many as you'd like, but please, one question per post. -
Compromised CCTV and NAS Devices Found Participating In DDoS Attacks (incapsula.com)
chicksdaddy writes: The parade of horribles continues on the Internet of Things, with a report from the security firm Incapsula that its researchers discovered compromised closed circuit cameras as well as home network attached storage (NAS) devices participating in denial of service attacks. The compromised machines included a CCTV at a local mall, just a couple minutes from the Incapsula headquarters.
According to the report, Incapsula discovered the infections as part of an investigation into a distributed denial of service attack on what it described as a "rarely-used asset" at a "large cloud service." The attack used a network of 900 compromised cameras to create a flood of HTTP GET requests, at a rate of around 20,000 requests per second, to try to disable the cloud-based server. The cameras were running the same operating system: embedded Linux with BusyBox, which is a collection of Unix utilities designed for resource-constrained endpoints.
The malware in question was a variant of a self-replicating program known as Lightaidra, which targets systems running BusyBox and exploits vulnerable Telnet/SSH services using so-called "brute force dictionary attacks" (aka "password guessing"). Given that many Internet connected devices simply use the default administrator credentials when deployed, calling it a "brute force" attack is probably a stretch. -
Jeff Atwood NY Daily News Op-Ed: Learning To Code Is Overrated
theodp writes: Responding to New York City's much-ballyhooed $81 million initiative to require all of the city's public schools to offer CS to all students, Coding Horror's Jeff Atwood has penned a guest column for the NY Daily News which cautions that learning to code isn't all it's cracked up to be. Atwood begins, "Mayor de Blasio is winning widespread praise for his recent promise that, within 10 years, all of New York City's public schoolchildren will take computer science classes. But as a career programmer who founded two successful software startups, I am deeply skeptical about teaching all kids to code." Why? "If someone tells you 'coding is the new literacy' because 'computers are everywhere today,' ask them how fuel injection works. By teaching low-level coding, I worry that we are effectively teaching our children the art of automobile repair. A valuable skill — but if automobile manufacturers and engineers are doing their jobs correctly, one that shouldn't be much concern for average people, who happily use their cars as tools to get things done without ever needing to worry about rebuilding the transmission or even change the oil." Atwood adds, "There's nothing wrong with basic exposure to computer science. But it should not come at the expense of fundamental skills such as reading, writing and mathematics...I've known so many programmers who would have been much more successful in their careers if they had only been better writers, better critical thinkers, better back-of-the-envelope estimators, better communicators. And aside from success in careers, we have to ask the broader question: What kinds of people do we want children to grow up to be?" -
The Internet of Compromised Things
An anonymous reader writes: Jeff Atwood has a post about a security threat that's becoming more prevalent every day: spreading malware through a compromised router. "Router malware is the ultimate man-in-the-middle attack. For all meaningful traffic sent through a compromised router that isn't HTTPS encrypted, it is 100% game over." He links to a thorough technical analysis of how even HTTPS encrypted traffic can be subverted. Atwood provides a list of suggestions for keeping your router safe that probably won't be any surprise to people reading this site, and he further recommends only browsing on an unknown router if encryption is available. What I'm curious about are the long-term implications — is there a way forward to re-establish trust in our router infrastructure? What can the open source community do to speed this along? -
Are Bug Bounties the Right Solution For Improving Security?
saccade.com writes Coding Horror's Jeff Atwood is questioning if the current practice of paying researchers bounties for the software vulnerabilities they find is really improving over-all security. He notes how the Heartbleed bug serves as a counter example to "Linus's Law" that "Given enough eyeballs, all bugs are shallow." "...If you want to find bugs in your code, in your website, in your app, you do it the old fashioned way: by paying for them. You buy the eyeballs. While I applaud any effort to make things more secure, and I completely agree that security is a battle we should be fighting on multiple fronts, both commercial and non-commercial, I am uneasy about some aspects of paying for bugs becoming the new normal. What are we incentivizing, exactly? -
Are Bug Bounties the Right Solution For Improving Security?
saccade.com writes Coding Horror's Jeff Atwood is questioning if the current practice of paying researchers bounties for the software vulnerabilities they find is really improving over-all security. He notes how the Heartbleed bug serves as a counter example to "Linus's Law" that "Given enough eyeballs, all bugs are shallow." "...If you want to find bugs in your code, in your website, in your app, you do it the old fashioned way: by paying for them. You buy the eyeballs. While I applaud any effort to make things more secure, and I completely agree that security is a battle we should be fighting on multiple fronts, both commercial and non-commercial, I am uneasy about some aspects of paying for bugs becoming the new normal. What are we incentivizing, exactly? -
Understanding an AI's Timescale
An anonymous reader writes "It's a common trope in sci-fi that when AIs become complex enough to have some form of consciousness, humans will be able to communicate with them through speech. But the rate at which we transmit and analyze data is infinitesimal compared to how fast a computer can do it. Would they even want to bother? Jeff Atwood takes a look at how a computer's timescale breaks down, and relates it to human timeframes. It's interesting to note the huge variance in latency. If we consider one CPU cycle to take 1 second, then a sending a ping across the U.S. would take the equivalent of 4 years. A simple conversation could take the equivalent of thousands of years. Would any consciousness be able to deal with such a relative delay?" -
Born To RUN: Dartmouth Throwing BASIC a 50th B-Day Party
theodp writes: "Still hanging on to a dog-eared copy of BASIC Computer Games? Back issues of Creative Computing? Well then, Bunky, mark your calendar for April 30th, because Dartmouth College is throwing BASIC a 50th birthday party that you won't want to miss! From the 'invite' to BASIC at 50: 'At 4 a.m. on May 1, 1964, in the basement of College Hall, Professor John Kemeny and a student programmer simultaneously typed RUN on neighboring terminals. When they both got back correct answers to their simple programs, time-sharing and BASIC were born. Kemeny, who later became Dartmouth's 13th president, Professor Tom Kurtz, and a number of undergraduate students worked together to revolutionize computing with the introduction of time-sharing and the BASIC programming language. Their innovations made computing accessible to all Dartmouth students and faculty, and soon after, to people across the nation and the world [video — young Bill Gates cameo @2:18]. This year, Dartmouth is celebrating 50 years of BASIC with a day of events on Wednesday, April 30. Please join us as we recognize the enduring impact of BASIC, showcase innovation in computing at Dartmouth today, and imagine what the next 50 years may hold.' Be sure to check out the vintage photos on Flickr to see what real cloud computing looks like, kids!" -
How Mobile Apps Are Reinventing the Worst of the Software Industry
An anonymous reader writes "Jeff Atwood, co-founder of Stack Overflow, says the mobile app ecosystem is getting out of hand. 'Your platform now has a million apps? Amazing! Wonderful! What they don't tell you is that 99% of them are awful junk that nobody would ever want.' Atwood says most companies trying to figure out how to get users to install their app should instead be figuring out just why they need a mobile app in the first place. Fragmentation is another issue, as mobile devices continue to speciate and proliferate. 'Unless you're careful to build equivalent apps in all those places, it's like having multiple parallel Internets. "No, sorry, it's not available on that Internet, only the iOS phone Internet." Or even worse, only on the United States iOS phone Internet.' Monetization has turned into a race to the bottom, and it's led to worries about just what an app will do with the permissions it's asking for. Atwood concludes, 'The tablet and phone app ecosystem is slowly, painstakingly reinventing everything I hated about the computer software industry before the web blew it all up.'" -
The Road To VR
An anonymous reader writes "Stack Overflow co-founder Jeff Atwood has posted about how much progress we've made toward commercially viable virtual reality gaming — and how far we have to go. The Oculus Rift headset is technologically brilliant compared to anything we'd have before, but Atwood says there are still a number of problems to solve. Quoting: 'It's a big commitment to strap a giant, heavy device on your face with 3+ cables to your PC. You don't just casually fire up a VR experience. ... Demos are great, but there aren't many games in the Steam Store that support VR today, and the ones that do support VR can feel like artificially tacked on novelty experiences. I did try Surgeon Simulator 2013 which was satisfyingly hilarious. ... VR is a surprisingly anti-social hobby, even by gamer standards, which are, uh low. Let me tell you, nothing is quite as boring as watching another person sit down, strap on a headset, and have an extended VR "experience". I'm stifling a yawn just thinking about it. ... Wearing a good VR headset makes you suddenly realize how many other systems you need to add to the mix to get a truly great VR experience: headphones and awesome positional audio, some way of tracking your hand positions, perhaps an omnidirectional treadmill, and as we see with the Crystal Cove prototype, an external Kinect style camera to track your head position at absolute minimum.' Atwood also links to Michael Abrash's VR blog, which is satisfyingly technical for those interested in the hardware and software problems of VR." -
Why Does Windows Have Terrible Battery Life?
An anonymous reader writes "Jeff Atwood at Coding Horror is trying to figure out why the battery life for devices running Windows is so much worse than similar (or identical) devices running other operating systems. For example, the Surface Pro 2 made great strides over the original Surface Pro, increasing web-browsing battery life by 42%, but it still lags far behind Android and iOS tablets. The deficit doesn't get any better when Windows is run on Apple hardware. Atwood says, 'Microsoft positions Windows 8 as an operating system that's great for tablets, which are designed for casual web browsing and light app use – but how can that possibly be true when Windows idle power management is so much worse than the competition's desktop operating system in OS X – much less their tablet and phone operating system, iOS?' Anand Lal Shimpi is perplexed, too. Atwood is now reaching out to the community for answers: 'None of the PC vendors he spoke to could justify it, or produce a Windows box that managed similar battery life to OS X. And that battery life gap is worse today – even when using Microsoft's own hardware, designed in Microsoft's labs, running Microsoft's latest operating system released this week. Microsoft can no longer hand wave this vast difference away based on vague references to "poorly optimized third party drivers." ... I just wish somebody could explain to me and Anand why Windows is so awful at managing idle power.'" -
Discourse: Next-Generation Discussion/Web Forum Software
An anonymous reader writes "Jeff Atwood has a post on his Coding Horror weblog about his latest project, Discourse, 'a next-generation, 100% open source discussion platform built for the next decade of the Internet.' Along with Coding Horror, Jeff is most well-known for his work on Stack Exchange and its family of related sites. In the same way that he tried to improve Q&A sites, he hopes to make forum/discussion software better with a team of folks he's pulled together for the task. They're using the 'Wordpress model' of offering both open source software and commercial offerings. The software interface is an in-browser app via Ember.js, with a Ruby on Rails and Postgres backend. I wonder if it will ever have an NNTP gateway." -
Steve Jobs Was Wrong About Touchscreen Laptops
theodp writes "Don't believe everything Steve Jobs and Tim Cook tell you, advises The Verge's Sean Hollister. Gunshy of touchscreen laptops after hearing the two Apple CEOs dismiss the technology (Jobs: 'Touch surfaces don't want to be vertical.' Cook: 'You can converge a toaster and a refrigerator, but those things are probably not gonna be pleasing to the user.'), Hollister was surprised to discover that Windows 8 touchscreen laptops actually don't suck and that the dreaded 'Gorilla Arm Syndrome' did not materialize. 'The more I've used Windows 8, despite its faults, the more I've become convinced that touchscreens are the future — even vertical ones,' writes Hollister. 'We've been looking at this all wrong. A touchscreen isn't a replacement for a keyboard or mouse, it's a complement.' Echoing a prediction from Coding Horror's Jeff Atwood that 'it is only a matter of time before all laptops must be touch laptops,' Hollister wouldn't be surprised at all if Apple eventually embraces-and-extends the tech: 'Microsoft might have validated the idea, but now Apple has another chance to swoop in, perfecting and popularizing the very interface that it strategically ridiculed just two years ago. It wouldn't be the first time. After all, how many iPad minis come with sandpaper for filing fingers down?'" -
Chaos Monkey Released Into the Wild
Quince alPillan writes "Netflix revealed today that they've released Chaos Monkey, an open source Amazon Web Service testing tool that will randomly turn off instances in Auto Scaling Groups. 'We have found that the best defense against major unexpected failures is to fail often. By frequently causing failures, we force our services to be built in a way that is more resilient. We are excited to make a long-awaited announcement today that will help others who embrace this approach. ...source code for the founding member of the Simian Army, Chaos Monkey, is available to the community.'" -
The PHP Singularity
An anonymous reader writes "Jeff Atwood at Coding Horror has a post about the awfulness of PHP — or, rather, a post about posts about the awfulness of PHP. He points out that PHP has been the whipping boy for the developer community for years, and while everybody seems happy to complain about it, nobody seems willing to do anything about it. He writes, 'From my perspective, the point of all these "PHP is broken" rants is not just to complain, but to help educate and potentially warn off new coders starting new codebases. Some fine, even historic work has been done in PHP despite the madness, unquestionably. But now we need to work together to fix what is broken. The best way to fix the PHP problem at this point is to make the alternatives so outstanding that the choice of the better hammer becomes obvious.'" -
The PHP Singularity
An anonymous reader writes "Jeff Atwood at Coding Horror has a post about the awfulness of PHP — or, rather, a post about posts about the awfulness of PHP. He points out that PHP has been the whipping boy for the developer community for years, and while everybody seems happy to complain about it, nobody seems willing to do anything about it. He writes, 'From my perspective, the point of all these "PHP is broken" rants is not just to complain, but to help educate and potentially warn off new coders starting new codebases. Some fine, even historic work has been done in PHP despite the madness, unquestionably. But now we need to work together to fix what is broken. The best way to fix the PHP problem at this point is to make the alternatives so outstanding that the choice of the better hammer becomes obvious.'" -
Why Mac OS X Is Unsuitable For Web Development
Hugh Pickens writes "Ted Dziuba has an interesting and amusing post on how he made a big mistake when he was offered a choice for his company laptop. His options were a Lenovo Thinkpad or a MacBook Pro, and he picked the Mac, thinking it would be closer to what he was used to. So what's wrong with using the Mac as a development machine for Milo, a Python application backed by PostgreSQL and Redis? 'I've only poked around a little, but so far I've found three separate package managers for OS X: Fink, MacPorts & Homebrew,' writes Dziuba, adding that when you are older, you will understand the value of automated version dependency satisfaction. Next is that your development platform should be as close as possible to your production platform, but 'OS X and Linux have different kernels, which means different I/O & process schedulers, different file systems, and a whole host of other implementation details that you'll write off as having been abstracted away until you have your first serious encounter with "It Works On My Machine.'" Finally, he says, Textmate sucks. 'Sooner or later, you have to face facts. Man up and learn Emacs.'" -
Google Fires Back About Search Engine Spam
coondoggie writes "The folks at Google are taking issue over spam and the quality of Google searches, which some claim has gone down in recent months. Today on Google's official blog, Principal Engineer Matt Cutts said, 'January brought a spate of stories about Google’s search quality. Reading through some of these recent articles, you might ask whether our search quality has gotten worse. The short answer is that according to the evaluation metrics that we’ve refined over more than a decade, Google’s search quality is better than it has ever been in terms of relevance, freshness and comprehensiveness. Today, English-language spam in Google’s results is less than half what it was five years ago, and spam in most other languages is even lower than in English.' Cutts also explained that the company has made a few significant changes to their method of indexing." -
Does Typing Speed Really Matter For Programmers?
theodp writes "I can't take slow typists seriously as programmers,' wrote Coding Horror's Jeff Atwood last fall. 'When was the last time you saw a hunt-and-peck pianist?' Atwood's rant prompted John Cook to investigate just how important it is to be able to type quickly. 'Learning to type well is a good investment for those who are physically able to do so,' concludes Cook, 'but it's not that important. Once you reach moderate proficiency, improving your speed will not improve your productivity much. If a novelist writing 1000 words per day were able to type infinitely fast, he or she could save maybe an hour per day.' At 150 WPM, notes Cook, the world's fastest typist was still only 10x faster than Stephen Hawking." -
The Case For Lousy Passwords
itwbennett writes "Since the Gawker and McDonald's hack attacks, the web has been overrun with admonishments against using weak passwords. But weak passwords have their place too, says blogger Peter Smith. Like, for example, on Gawker, where he really doesn't care if it gets cracked. 'Life is too short to be worrying about 24 character passwords for trivial sites,' says Smith. And, to put things in perspective, your good passwords are pretty weak too. In a 2007 Coding Horror article, Jeff Atwood points out that the password "Fgpyyih804423" was cracked in 160 seconds by the Ophcrack cracker." -
Best Way To Land Entry-Level Job?
chemicaldave writes "I'm graduating this May and have been seeking a programming position for months. It seems that the biggest hurdle to landing an interview is getting past the doorman that is HR. After reading this entry from Coding Horror describing the lack of programming candidates who can actually program, I can't help but scratch my head. I can program! (See how I put that link in?) If I can't land an interview, then even a short online evaluation of my coding skills would suffice. I just want a chance to prove myself. Alas, sending resumes to companies has rarely led to anything but an auto-confirmation email of my submission. I understand that sending resumes online is not the best method to landing an interview, but I come from a small rural school so job fairs rarely offer anything more than IT support positions let alone a programming position. It seems to me that developers are always looking for talented young programmers. We're out here looking for you too. Am I missing something?" -
Programming With Proportional Fonts?
theodp writes "Betty or Veronica? Mary Ann or Ginger? Proportional or Monospaced? There's renewed interest in an old blog post by Maas-Maarten Zeeman, in which M-MZ made the case for programming with proportional fonts, citing studies that show proportional fonts can be read 14% faster than fixed-width fonts. Try it for a couple of weeks, he suggests, and you might like it too. Nowadays, Lucida Grande is M-MZ's font of choice on OS X, and he uses Lucida Sans on Windows. Helvetica, anyone?" -
The Best First Language For a Young Programmer
snydeq writes "Fatal Exception's Neil McAllister questions whether Scheme, a dialect of Lisp taught as part of many first-year CS curricula and considered by some to be the 'latin of programming,' is really the best first language for a young programmer. As he sees it, the essentially write-only Scheme requires you to bore down into the source code just to figure out what a Scheme program is trying to do — excellent for teaching programming but 'lousy for a 15-year-old trying to figure out how to make a computer do stuff on his own.' And though the 'hacker ethic' may in fact be harming today's developers, McAllister still suggests we encourage the young to 'develop the innate curiosity and love of programming that lies at the heart of any really brilliant programmer' by simply encouraging them to fool around with whatever produces the most gratifying results. After all, as Jeff Atwood puts it, 'what we do is craftmanship, not engineering,' and inventing effective software solutions takes insight, inspiration, deduction, and often a sprinkling of luck. 'If that means coding in Visual Basic, so be it. Scheme can come later.'" -
Shouldn't Every Developer Understand English?
Pickens writes "Jeff Atwood has an interesting post that begins by noting that with the Internet, whatever country you live in or language you speak, a growing percentage of the accumulated knowledge of the world can and should be available in your native language; but that the rules are different for programmers. 'So much so that I'm going to ask the unthinkable: shouldn't every software developer understand English?' Atwood argues that 'It's nothing more than great hackers collectively realizing that sticking to English for technical discussion makes it easier to get stuff done. It's a meritocracy of code, not language, and nobody (or at least nobody who is sane, anyway) localizes programming languages.' Eric Raymond in his essay 'How to be a Hacker' says that functional English is required for true hackers and notes that 'Linus Torvalds, a Finn, comments his code in English (it apparently never occurred to him to do otherwise). His fluency in English has been an important factor in his ability to recruit a worldwide community of developers for Linux. It's an example worth following.' Although it may sound like The Ugly American and be taken as a sort of cultural imperialism, 'advocating the adoption of English as the de-facto standard language of software development is simple pragmatism, the most virtuous of all hacker traits,' writes Atwood. 'If that makes me an ugly American programmer, so be it.'" -
Hardware Is Cheap, Programmers Are Expensive
Sportsqs points out a story at Coding Horror which begins: "Given the rapid advance of Moore's Law, when does it make sense to throw hardware at a programming problem? As a general rule, I'd say almost always. Consider the average programmer salary here in the US. You probably have several of these programmer guys or gals on staff. I can't speak to how much your servers may cost, or how many of them you may need. Or, maybe you don't need any — perhaps all your code executes on your users' hardware, which is an entirely different scenario. Obviously, situations vary. But even the most rudimentary math will tell you that it'd take a massive hardware outlay to equal the yearly costs of even a modest five person programming team." -
G-Archiver Harvesting Google Mail Passwords
Thwomp writes "It appears that a popular Gmail backup utility, G-Archiver, has been harvesting users' Gmail passwords. This was discovered when a developer named Dustin Brooks took a look at the code using a decompiler. He discovered a Gmail account name and password embedded in the source code. Brooks logged in and found over 1,700 emails all with user account information — with his own at the top. According to a story in Informationweek, he deleted the emails, changed the account password, and notified Google. The creator of G-Archiver has pulled the software, stating that it was debug code and was unintentionally left in the product." -
Comparing Browser JavaScript Performance
Thwomp writes "Over at Coding Horror Jeff Atwood has an interesting writeup on JavaScript performance in the big four browsers. He used WebKit's newly announced SunSpider to produce the results. If a probable anomaly in the IE7 results is overlooked, Firefox 2 is the slowest of the bunch. Atwood has also benchmarked the latest Firefox Beta, and its performance seems to be improved significantly." -
Comparing Browser JavaScript Performance
Thwomp writes "Over at Coding Horror Jeff Atwood has an interesting writeup on JavaScript performance in the big four browsers. He used WebKit's newly announced SunSpider to produce the results. If a probable anomaly in the IE7 results is overlooked, Firefox 2 is the slowest of the bunch. Atwood has also benchmarked the latest Firefox Beta, and its performance seems to be improved significantly." -
Are You Proud of Your Code?
An anonymous reader writes "I am downright embarrassed by the quality of my code. It is buggy, slow, fragile, and a nightmare to maintain. Do you feel the same way? If so, then what is holding you back from realizing your full potential? More importantly, what if anything are you planning to do about it? I enjoy programming and have from a young age (cut my teeth on BASIC on an Apple IIe). I have worked for companies large and small in a variety of languages and platforms. Sadly the one constant in my career is that I am assigned to projects that drift, seemingly aimlessly, from inception to a point where the client runs out of funding. Have any developers here successfully lobbied their company to stop or cut back on 'cowboy coding' and adopt best practices? Has anyone convinced their superiors that the customer isn't always right and saying no once in awhile is the best course of action?" -
Ophcrack Says Your Password Is Insecure
javipas writes "An insightful article at Jeff Atwood's Coding Horror reveals the power inside Ophcrack, an Open Source program that is capable of discovering virtually any password in Windows operating systems. The article explains how passwords get stored on Windows using hash functions, and how Ophcrack can generate immense tables of words and letter combinations that are compared to the password we want to obtain. The program is available in Windows, Mac OS and Linux, but be careful: the generated tables that Ophcrack uses are really big, and you should allow up to 15 Gbytes to store these tables."