All episodes
Episode 89 · Jun 27, 2023 · Talk

Jeff Atwood on Empowering Programmers and Digital Communities

Featuring Jeff Atwood, Stack Overflow and Discourse co-founder
Apple Podcasts Google Podcasts Spotify Youtube

Founded on knowledge-sharing and learning opportunities, digital communities are invaluable assets in many trades, including software engineering. Likewise, the quality of these communities will correlate with the quality of their information, which depends on the possibilities for user participation. In this episode, Stack Overflow and Discourse co-founder Jeff Atwood reveals his thoughts on the platforms that have left an indelible mark on the programming community. We delve into his achievements, reflections, and perspectives on communities, the role of AI, and the future of programming.

Edited transcription

In 2008, long-term programmer Jeff Atwood founded Stack Overflow alongside Joel Spolsky. Conceived as a way to leverage the audience of Coding Horror, Jeff’s blog on software development, Stack Overflow became the go-to Q&A site for professional programmers to exchange information and obtain assistance.

Jeff left Stack Overflow in 2012 and a couple of years after launched Discourse, an open-source communication and knowledge-sharing platform. Discourse is a continuation of Jeff’s efforts in building communities. However, while he describes Stack Overflow as a sort of classroom where programmers “go to learn stuff”, Discourse promotes looser conversations and it is centered around providing communities with the tooling for customization, sharing, and communication.

Lessons learned from Stack Overflow: Building a better community

During his time as head of Stack Overflow, Jeff’s primary job was dealing with community feedback, which he asserts as the hardest part of leading a community and one of the things the team behind the platform got right while building and improving it. In his role, he often had to endure the backslash from unpopular decisions or features, recognizing his mistakes when the community was right and remaining firm on his position when he believed it was the best course of action. Still, instead of turning a blind eye to user requests, Jeff learned to discern between the vast majority of criticism and ideas that are not actionable and those that he could work on and use to create a better product. 

In turn, reflecting on what Stack Overflow lacked, Jeff believes it missed offering proper guidance to beginners. Even though Stack Overflow is explicitly designed for expert programmers, it produced a lot of friction between programmers and non-programmers, which, to Jeff’s belief, could have been avoided by having him do better at explaining the nature of the site to users. In this way, he admits that now, to address the whole community, he would create a second site aside from Stack Overflow where people looking to become programmers could learn and pair with someone else in an interactive real-time environment, as in the case of Replit.

AI assistants: The role of code and attribution

Jeff views programmers’ use of Large Language Models such as ChatGPT as another form of copy-pasting code. From this perspective, he understands that copy-pasteable code becomes redundant due to its lack of novelty. Moreover, Jeff believes “there’s just too much repetitive activity in coding”, as programmers can potentially be obligated to write the same code repeatedly.

And while AI assistants can free developers from writing repetitive code, Jeff says that the best code a developer can come up with is no code, or rather, understanding to what extent “every line of code is code that has to be debugged, troubleshot, maintained, [and] source controlled.” For this reason, he understands that “code is the enemy, it is not your friend,” and should not be a metric for success or skill. Hence, a good developer writes the least code for doing his job. For this reason, Jeff advises developers to aim at only writing high-level code and not machine-level code.

Also, given its redundancy, the solution provided by AI “is not useful code”, but “repetitive, dumb code that we need to eliminate from the world.” To Jeff, new, valuable, interesting code cannot be created that way because it is “specific to your problem and maybe a new approach that no one has tried before.” As an analogy, repetitive code is but “part of a standard library that we all use, just a built-in function that we call a built into the operating system, built into the browser, built into your phone.”

What’s more, the idea of relativizing code also relativizes developers. “There should be less programmers, not more,” says Jeff; what matters, he says, is building things.

For beginners, though, Jeff believes there needs to be a balance. Beginners using AI will not understand how the code works and will be unable to fix any bugs. Since starters need to learn the principles, they ought to write this repetitive code —however, never machine-level code, he emphasizes. Every developer should understand the fundamentals of computer science, including ”some of the low-level concepts.”

Language models have also become a front end of the internet and are on the way to redefining how we use it, just as Google did back in the day. In this regard, Jeff is concerned about the licensing and attribution of the information they manage. If Stack Overflow, in particular, feeds any of these models, he understands that it is for the greater good of helping the community. 

Still, Jeff adds that Stack Overflow respects its users’ contribution and believes these models should respect Stack Overflow’s Creative Commons license, which demands attribution to the authors: “Without Stack Overflow, you would have nothing. You would not have this tool if not for Stack Overflow and all the people that contribute all this effort and work.” Attribution also can help track down the information that the language model took, see if the source is valid, and help the user find more about it or have more faith in it depending on the source. To keep up with this new paradigm of information sourcing, Jeff believes a new Creative Commons license is necessary.

Democracy and digital communities

The transition from analog to digital is happening “way faster than I thought it would,” says Jeff, who thinks this transition requires translating the basis of our democratic society into the internet and, most of all, into the communities we build in it. As a starting point, he believes users should consider where it is advisable to establish communities. Jeff distinguishes between platforms following a dictator model, where site owners make the decisions while users have no say in the direction it takes, and more democratic alternatives where users can influence the quality of the site.

While reaching a consensus between parties is demanding, Jeff is confident that democratic platforms empower communities, as in the case of Stack Overflow, where the site even holds democratic elections for moderators. However, the decision to democratize is not exclusively in the hands of the users. Even in democratic communities, those in power also have to learn to give up on it. As Jeff stepped down as CEO of Stack Overflow and later Discourse, he recognized that he had to leave room for other people to take the lead, empowering them in the process.

The bottom line

You can follow Jeff on Infosec.Exchange and Twitter. You can also visit Coding Horror to read his latest pieces. If you are already familiar with Stack Overflow, check out Discourse.

Leave a Reply

Your email address will not be published. Required fields are marked *

Meet the host

Darko Fabijan

Darko, co-founder of Semaphore, enjoys breaking new ground and exploring tools and ideas that improve developer lives. He enjoys finding the best technical solutions with his engineering team at Semaphore. In his spare time, you’ll find him cooking, hiking and gardening indoors.