I am Jeff Atwood (@codinghorror), co-founder of Stack Overflow and Discourse. Ask me anything! 4/8 @ Noon PST

Yes definitely. One I have been apprehensive about is the full-on chat plugins for Discourse. I view Discourse as a system of paragraphs, and at least sentences, and chat is anathema to that. So bolting chat on to Discourse makes me very, very nervous.

To be fair we have evolved a few more chat-like features over time such as forms of presence (you can see if someone is currently replying to a topic if you’re idling at the bottom of a topic), native browser pop-up notifications (these even work on mobile for Android), and so on.

The other one that comes to mind is the invitation system (aka getting users to actually visit your Discourse), there was so much interest in sending invites that we ended up enhancing that system considerably over where it was at launch.



This is a tough one, because honestly (and perhaps controversially…) I believe you can ultimately accomplish more without coding, if you are guiding many other coders towards a collective goal.

I do know many lifelong coders, for example Bill Budge (who I met in person, what an honor) who currently writes lots of gnarly code for Google. So it is a valid path! I’d say keep honing those communication skills as you go, there’s nothing more fundamental. Let me quote my pal Joel Spolsky:

The difference between a tolerable programmer and a great programmer is not how many programming languages they know, and it’s not whether they prefer Python or Java. It’s whether they can communicate their ideas. By persuading other people, they get leverage. By writing clear comments and technical specs, they let other programmers understand their code, which means other programmers can use and work with their code instead of rewriting it. Absent this, their code is worthless. By writing clear technical documentation for end users, they allow people to figure out what their code is supposed to do, which is the only way those users can see the value in their code. There’s a lot of wonderful, useful code buried on sourceforge somewhere that nobody uses because it was created by programmers who don’t write very well (or don’t write at all), and so nobody knows what they’ve done and their brilliant code languishes.


At Discourse we focus on making the moderator tools as easy and convenient as possible to use – and involve the community in moderation through our trust system. The longer and more frequently you participate the more we trust you, and you earn tools that help you organize and beautify the site you spend so much time on.

If there’s a trash can on every street corner, you do end up with a cleaner city! :wastebasket:


My main and biggest piece of advice is that it is critical to have a sense of humor at all times. :wink:

Have you read this epic Miguel de Icaza piece? I love it, and it gets better every time I re-read it:


The Recurse Center also has excellent essential “social rules”:


Oh gosh so many ways. A few key ones that I remember:

  • we instituted daily caps on reputation to encourage people to take a break from SO, and prevent “rich get richer” syndrome

  • we reduced the rep value of questions versus answers

  • we instituted the bounty system so you could slice off small bits of your rep and put them on questions or answers to encourage others

All this is documented on old Stack Overflow blog entries as well if you’re curious for the full history :wink:


I’m a big fan of the 10 commandments of egoless programming which is from a book as old as I am, and I’m pushing 50!

  1. Understand and accept that you will make mistakes. The point is to find them early, before they make it into production. Fortunately, except for the few of us developing rocket guidance software at JPL, mistakes are rarely fatal in our industry, so we can, and should, learn, laugh, and move on.

  2. You are not your code. Remember that the entire point of a review is to find problems, and problems will be found. Don’t take it personally when one is uncovered.

  3. No matter how much “karate” you know, someone else will always know more. Such an individual can teach you some new moves if you ask. Seek and accept input from others, especially when you think it’s not needed.

  4. Don’t rewrite code without consultation. There’s a fine line between “fixing code” and “rewriting code.” Know the difference, and pursue stylistic changes within the framework of a code review, not as a lone enforcer.

  5. Treat people who know less than you with respect, deference, and patience. Nontechnical people who deal with developers on a regular basis almost universally hold the opinion that we are prima donnas at best and crybabies at worst. Don’t reinforce this stereotype with anger and impatience.

  6. The only constant in the world is change. Be open to it and accept it with a smile. Look at each change to your requirements, platform, or tool as a new challenge, not as some serious inconvenience to be fought.

  7. The only true authority stems from knowledge, not from position. Knowledge engenders authority, and authority engenders respect – so if you want respect in an egoless environment, cultivate knowledge.

  8. Fight for what you believe, but gracefully accept defeat. Understand that sometimes your ideas will be overruled. Even if you do turn out to be right, don’t take revenge or say, “I told you so” more than a few times at most, and don’t make your dearly departed idea a martyr or rallying cry.

  9. Don’t be “the guy in the room.” Don’t be the guy coding in the dark office emerging only to buy cola. The guy in the room is out of touch, out of sight, and out of control and has no place in an open, collaborative environment.

  10. Critique code instead of people – be kind to the coder, not to the code. As much as possible, make all of your comments positive and oriented to improving the code. Relate comments to local standards, program specs, increased performance, etc.


OK! I think that’s a good place to end things.

Excellent questions everyone, give yourself a round of applause …


… because you deserve it! Thanks for this opportunity to answer your questions. I hope my answers were useful. :bowing_man:

p.s. If you liked Discourse, consider installing it yourself in 30 minutes or hacking on it with us!