Photo: Getty Images

Let’s say you’re relatively new to coding. Maybe you’re studying it in college, or you’ve just started at an entry-level position after attending a five-week coding boot camp. You’re writing a function in C or Python or Javascript or whatever language you prefer. For some reason, the code isn’t compiling or it hits a snag at line 281 and the terminal outputs some arcane gibberish like “AttributeError: ‘foo’ object has no attribute ‘bar’.”

So what do you do next? You could double-check and see if you missed adding a semicolon at the end of a line. You could perform the classic occult coding ritual of running the script a few more times and hoping that it’ll just work. You could give up entirely and pour yourself a drink.

Or maybe you do what is now the standard troubleshooting method across the profession: You paste the error message into Google and search for it, crossing your fingers in hopes that a website called “Stack Overflow” will come up in the results.

Named for a common computing error (in which memory used in a section of the computer’s storage known as the “call stack” exceeds its allocated capacity) (no need to thank me for explaining), Stack Overflow is a Q&A forum aimed primarily at coders. That means most of its threads are devoted to someone saying “I’m encountering error such and such” or “Can anyone figure out the best way to perform such-and-such function?”

“I taught myself to code in the pre-boot-camp era,” Steve Harms, the head of curriculum at Dev Bootcamp, told me, “and the way I would get around getting stuck, is that’d I’d post to these horrible PHP forums … The answers were neither good, nor were they correct, nor were they kindly presented.” Stack Overflow ostensibly fixes this problem by turning coder advice into a Reddit-like thread, with up-votes, down-votes, and helpful snippets. No more lengthy arguments without a clear winner; thanks to Stack Overflow, the “best” solution to a given problem is — or should be — voted to the top.

In much the same way that Googling any proper noun will bring up its Wikipedia page as one of the first few links, or searching for a product will immediately bring up Amazon, searching for code will lead you to Stack Overflow. Given the amount of code currently being produced — not to mention the libraries of it undergirding essential and nonessential functions of daily life — Stack Overflow is, quietly, one of the most important websites on the planet. Not to mention one of the most popular: Launched in 2008, the site now has an Alexa traffic ranking of 52, making it one of the top 100 sites on the web.

That means that in the semi-collaborative tech industry — where everyone is directly or indirectly building off of the ideas and innovations of each other — whole swaths of coders are being driven, by Google, to the same handful resources for whatever problem they’re trying to crack. Of the 36,932 developers who responded to the site’s annual survey question about site usage, less than one percent said that they had never heard of or used Stack Overflow as a resource (more than 64,000 took the survey in total). Furthermore, 90 percent of devs “find solutions that solve their coding problems here multiple times a month, and half of them find code snippets they can incorporate directly into their own work.” In other words, Stack Overflow powers the programs that power… everything else.

But because most of that code exists on the backend that users never see, you might not realize how likely it is that the app or website you’re using is built on code ganked from Stack Overflow. Unless the developers slip up: Last year, the NissanConnect EV mobile app for iOS displayed this description text in its settings menu: “The spirit of stack overflow is coders helping coders.” Whoever developed it forgot to change the placeholder text that they grabbed from Stack Overflow.

A screenshot from the latest version of the Nissan ConnectEV app... pic.twitter.com/Tseyvwyg3R — Scott Helme (@Scott_Helme) May 4, 2016

Copying and pasting snippets of code from Stack Overflow has become not just an open secret but a top method of troubleshooting among developers. Which raises some funny philosophical (if not legal) questions: Code is protected as intellectual property, subject to copyright and patent laws, and so copying and pasting could put coders on tricky ethical ground. But it is also a means to an end, a method of processing some bit of data and getting a desired end result. By this argument, refusing to copy code is like creating a completely different kind of tool just to hammer a nail. Is it really necessary to structure one’s code differently in order to get the same result?

More practically, if you can just copy and paste what you find on Stack Overflow whenever you encounter a problem, how are you ever going to learn to code? “At Dev Bootcamp, we’re very much looking at how to change a person’s employment profile, how to get them the job that they want,” Harms explained. “Undoubtedly, part of that tool kit is going to be leveraging answer sites. There’s no doubt about that.”

Critics of the site’s dominance are not too hard to find. In a 2015 blog post, Christian Heileman outlined the appeal of, and aimed a critical eye, at Stack Overflow’s forums. It’s a great tool for experts to discuss solutions with each other, but it’s not necessarily the right place to learn how to code. The joke you hear occasionally is that rather than being a full-stack developer, you become a full-stack-overflow developer.

Over the phone, he explained that the site is great for experts talking to each other, but its Reddit-like gamification has hazards. “When you try to learn something and these are the first results that you find,” he explained, “you get two impressions. First of all, that there’s one way of doing it. You don’t even need to think about it you just copy and paste the thing and put it live.” The second impression a user gets is simply one of unfriendliness. “‘If you do this you’re not a professional developer’ is a very common answer in that one. That can be very discouraging for someone who is just starting.”

But there are obvious downsides to relying on the internet to do your work for you, even if it offers up solutions voluntarily and with glee. Heileman — who has spent decades working at companies including Yahoo, Mozilla, and now Microsoft — believes that for novice developers, cutting corners hurts them in the long run. It’s important that they understand the code they write at a high level, rather than just relying on all-in-one solutions and packages to do the heavy lifting. This is an ongoing discussion within the developer community, most recently after an incident last year when a developer removed a simple 11-line function from a system called npm, breaking every other solution that relied on it.

“I think it’s beautiful that we have those resources nowadays,” Heileman said, “but there is a danger of students just copying and pasting to get the homework out of the way rather than understanding it.”

The philosophy among development-course instructors was pretty consistent, with all that I spoke to agreeing that the site is useful, but that it’s also possible for it to become a crutch. “If you just copy and paste the first thing you see, that’s very often not going to help you,” Charlie Drews, an Android development instructor at General Assembly, said. “It might make your program worse and it’s certainly not going to teach you anything.” Newer coding sites, like CodePen, Glitch, and repl.it, have leaned on that collaborative, iterative spirit to help iron out kinks.

And while copying code is not directly akin to plagiarism, it is similarly easy for experienced developers to spot. Drew Mahrt, another GA instructor, said, “You can see that there’s like a stark difference [in the code] and suddenly they have these really long descriptive variable names or they’re using things that are way beyond the level that they were at previously.”

Similarly perilous is the fact that code changes very quickly. Android development practices, as an example, have changed drastically over the last few years, but the popular Stack Overflow solutions are still from 2013, meaning that budding developers might be learning through outdated solutions.

“The question you’re asking is one that educators have wrestled with since the Hellenic Age,” Harms noted at the beginning of our discussion. In the Phaedrus, Plato, writing as Socrates, complains of students that use the written word: “Their trust in writing, produced by external characters which are no part of themselves, will discourage the use of their own memory within them. You have invented an elixir not of memory, but of reminding; and you offer your pupils the appearance of wisdom, not true wisdom.” Plato, once you explained electricity, the computer, the internet, coding, and the modern economy to him, would not like Stack Overflow, which joins a long lineage of existentially perilous new innovations, beginning with writing and then, more recently, Google and Wikipedia. For coders, the site is best as a means to an end, not a catchall solution. But when you’re on deadline for a major product, and you just can’t get your code to work, there’s no better means to an end.