← Back to list
Lex Fridman PodcastPodcast29 Nov 2018Source: lexfridman.comHost: Lex Fridman

Jeff Atwood: Stack Overflow and Coding Horror

In plain words

This interview is about programmer Jeff Atwood sharing his experience building Stack Overflow and Discourse. He believes programming is about 'brute force'—writing a program to run billions of times and looking at data, like testing a shuffle algorithm by checking if the distribution is even. He's bullish on Discourse, a forum tool he created, saying it helps communities own their data instead of relying on Facebook's 'company town' model. Key mentions: Stack Overflow (he co-founded, driven by peer recognition, not money), Discourse (his current project, aims to be the default for discussions), and Facebook (risk warning—it collects data via free VPNs).

AI SummaryAI-generated · may contain errors · verify against the original

Jeff Atwood, co-founder of Stack Overflow and Stack Exchange, discussed the core driving force behind programmers on the Lex Fridman podcast. He argues that programming motivation primarily stems from the joy of "solving puzzles"—the challenge of independently cracking difficult problems—rather than

~11 min full read · 8 sections
Deep Analysis

At a Glance

Jeff Atwood (co-founder of Stack Overflow and Stack Exchange, author of the Coding Horror blog, and founder of Discourse) discussed programmer motivation, community building, and leadership philosophy on the Lex Fridman podcast. Core thesis: The essence of programming is "brute force"—leveraging the high-speed computation of computers to repeatedly experiment, overcoming cognitive biases through data analysis, rather than relying on intuition or genius-level algorithmic deduction.


Theme 1: Programming Motivation — Puzzle Solving and Brute Force

Jeff Atwood argues that the core driver for programmers is the joy of solving puzzles, not fame or wealth. Programming essentially leverages the high-speed computing power of computers to find answers through repeated trial and error (brute force). He cites two classic examples:

  • The Shuffling Problem: Most programmers' naive shuffling algorithms contain significant flaws. The verification method is not mathematical derivation, but rather "run your shuffling program a billion times and look at the data distribution — you should get a uniform distribution of all cards." If the data buckets show unevenness, the algorithm is wrong.
  • The Monty Hall Problem (Three Doors Problem): Intuitively, "not switching doors" seems reasonable, but "write a program to simulate the game, execute 'never switch doors' and 'always switch doors' separately, then compare the results — you will immediately see that the correct answer is to switch doors."

Key Insight: You don't need to be "smart" enough to derive the answer; you can "brute force it with data" — run the program a billion times, observe the data buckets, and the answer naturally emerges. Data analysis is the core tool for overcoming cognitive biases and discovering the truth.


Theme 2: The Evolution of Stack Overflow — From "Frankenstein" to a Rigorous System

Stack Overflow was not originally conceived as a clear-cut Q&A system, but rather cobbled together like a "Frankenstein" from multiple successful models. Atwood reviewed its design origins:

Source Borrowed Element
Digg / Reddit Voting mechanism, reordering answers by vote count
Wikipedia Editability (not only editing one's own posts, but also editing others' posts to keep them updated)
Blogs Ownership attribution — "This is what I said, the reputation belongs to me"

Key insight: Programmers are driven by "peer recognition," not money or bosses. The reputation system was Stack Overflow's critical realization — "Recognition from peers is what gets things done."

Reasons the system became rigorous:

1. Preventing "accidental learning": Early on, questions like "your favorite programming joke" were allowed, but it was found they were not "real problems you face at work" — "No one would say, 'I don't know the best joke, so I can't compile code today.'"

2. Fairness of the reputation system: If someone gets 500 votes for reposting a joke, while another gets only 50 votes for solving a complex regex problem, programmers would perceive it as unfair.

3. Rigor yields better results: Atwood used a programming language analogy — "Loose typing vs. strict typing; now TypeScript proves that strict typing can catch 50 potential bugs. Rigor is not the goal, but rigor produces better results."

On "rigor vs. harshness": Atwood distinguished between "rigor" and "harshness" — "Rigor is correct, but it does not mean being harsh, angry, or malicious." He proposed an interesting theory: Programmers, after long-term interaction with computers, unconsciously "become like computers" — computers are "the biggest jerks in the world," where a single semicolon can crash a space mission. Programmers internalize this rigor, becoming "intolerant, terse, and direct" — this is an occupational hazard, not intentional.


Theme 3: Leadership – Leading by Example, Passion, and the Feedback Loop

Atwood believes the core of leadership lies in "leading by example" and "genuine passion for the problem." He proposes two key principles:

1. Leading by Example: "The hardest person to see is yourself. Your view of yourself is extremely biased, often harsher than how others see you." A leader's actions (including what they choose not to do) all send signals.

2. Passion for the Problem, Not the Solution: Taking Discourse as an example, the problem he truly cares about is "how to keep group communication from devolving into howling" — how to deal with online trolls, how to get people to use complete sentences, and how to prevent people from hurting each other.

On Decision-Making and Feedback:

  • Avoid Autocracy: "A system where one leader has absolute legal authority is very dangerous. That person will have a bad day, or something will happen." He advocates for a model of multi-leader leadership with mutual feedback.
  • Transparent Decision-Making: Don't just say "this is the final decision," but rather "show the process by which I reached this conclusion" — "Here is our thought process, here is the data we saw, here is why we chose this option." Even if others disagree, they can understand your starting point.
  • The 90-10 Rule: 90% of community feedback is not actionable (bad, crazy, or cannot be implemented immediately), but 10% is "gold and diamonds" — of which 5% are brilliant ideas you never thought of.

Theme 4: Discourse’s Vision — Countering the “Company Town” and the Interest Graph

Discourse’s mission is to give every community “self-ownership,” countering Facebook’s “company town” model. Atwood’s criticism of Facebook focuses on two points:

1. Facebook cares about Facebook, not its users: “They are very good at execution, but have almost no moral compass.”

2. The danger of the “company town”: “It is deeply unsettling that all human communication is implicitly owned by WhatsApp, Instagram, and Facebook.”

Interest Graph vs. Relationship Graph:

  • Facebook’s core is the relationship graph (colleagues, relatives, friends)
  • The core of forums/communities is the interest graph (“I like Tesla,” “I like yo-yos”)
  • Atwood believes the interest graph is more powerful: “My connection to the yo-yo community is stronger than my connection to friends I rarely see.”

Discourse’s business model: It does not rely on advertising (“Advertising barely works on Discourse — users hate it, and it doesn’t make money”). Instead, it generates revenue through hosting services, while encouraging users to adopt alternatives such as Patreon and Amazon affiliate links.


Theme 5: The Future of Programming – Higher-Level Abstraction and "Stop Writing Code"

Atwood proposes a counterintuitive view: to become a truly effective programmer, one must eventually stop writing code. This does not mean programming is unimportant, but rather that the "higher-level abstraction" of programming is natural language—solving problems by motivating others and providing direction.

Evolution of Programming Abstraction Levels:

  • Assembly language → C language (cross-architecture abstraction) → Python/Ruby (interpreted languages) → Natural language (highest level)

Key Metric: Iteration Speed ("Heartbeat"):

"If you want to know the core capability of a software company, look at how long it takes from the moment the idea 'we need to change this word to that word' arises to when it is actually deployed to users. If this heartbeat is slow, you are basically dead."

On AI and Programming: Atwood is cautious about AI—"AI is a bit overhyped. It's more about 'people are predictable'—computers have vast amounts of data and can make basic predictions, but that's not AI, that's good heuristics."


Mentioned Positions

Position Guest's Stance Key Data
Stack Overflow Left, but affirmed its design philosophy 10-year history; started with 40,000 blog subscribers; reputation system is core
Discourse Current project, strongly bullish Launched in 2013, 5-year project (later changed to 10 years); minimum server cost $5/month; uses Ruby on Rails + Postgres + Redis
Facebook Risk warning (company town model) Acquisitions of WhatsApp and Instagram were "extremely smart decisions"; collected network traffic data via free VPN
Experts Exchange Disrupted target (successfully replaced) "When people no longer remember what you set out to replace, you've completely won"
GitHub Positive assessment Microsoft's acquisition was "an extremely smart acquisition"; made source control accessible to all
Tesla Positive mention (as a case of iteration speed) Supports OTA updates; iteration cycles measured in days, contrasting with traditional automakers' "years"
WordPress Positive analogy (Discourse's goal) As the "default choice for blogs," Discourse aims to become the "default choice for discussions"

Judgments Worth Remembering

1. “Programming is essentially brute force” (Jeff Atwood): Do not try to derive answers through algorithms; write a program to run a billion times and look at the data buckets—the data will tell you the truth. The shuffling problem and the Monty Hall problem are both examples.

2. “Programmers unconsciously become computers” (Jeff Atwood): The computer is “the biggest jerk in the world”—a single semicolon can crash a space mission. After long-term interaction with computers, programmers internalize this rigor, becoming intolerant, terse, and direct. This is an occupational hazard, not intentional.

3. “Rigor produces better results” (Jeff Atwood): Take TypeScript as an example—loose typing vs. strict typing; the consensus now is that strict typing can uncover 50 potential bugs. The same applies to Stack Overflow’s strict rules—not rigor for its own sake, but for better outcomes.

4. “Iteration speed is the core health metric of a software company” (Jeff Atwood): The time from the idea of changing “Reply” to “Respond” to deployment is your heartbeat. If the heartbeat is very slow, you are essentially dead.

5. “To be an effective programmer, you must eventually stop writing code” (Jeff Atwood): The highest level of abstraction in programming is natural language—solving problems by motivating others and providing direction. This is “programming in a higher-level language.”

6. “Choose the option that scares you a little” (Jeff Atwood): When faced with a decision, pick the one that makes you nervous but not suicidal. He refused to sell his blog for $80,000–$100,000, chose the “more frightening” rejection, and that led to Stack Overflow.

7. “Interest graphs are more powerful than relationship graphs” (Jeff Atwood): Facebook revolves around relationships (colleagues, relatives, friends), while forums revolve around interests (“I like Tesla,” “I like yo-yos”). Interest communities can generate deeper connections.

8. “90% of feedback is not actionable, but 10% is gold—of which 5% is a brilliant idea you never thought of” (Jeff Atwood): The value of community feedback lies not in quantity, but in that 5% of unexpected insights. Many features of Stack Overflow came from community feedback on Meta Stack Overflow.