What is the Stack Overflow website

Stack Overflow founder Joel Spolsky: "Documentation is a myth"

We spoke to Joel Spolsky at the Berlin conference WeAreDevelopers in early June. He is the founder of the company Glitch (originally Fog Creek Software), which among other things launched the online editor of the same name, the project management tool Trello and, above all, Stack Exchange. The latter is a network of over 170 question-and-answer websites, the first and most prominent of which is Stack Overflow, perhaps the most important website for developers.

Stack Overflow was originally created as an alternative to Experts Exchange, a site with a similar focus, but Spolsky was annoyed by its business model. Among other things, because the questions and answers could be found on Google, but usually not free of charge. When no one took care of the situation - which in Spolsky's opinion was very easy to solve - for years, he founded Stack Overflow in 2008, together with developer and blogger Jeff Atwood. Spolsky explains in detail his motivation and what other improvements in addition to the Stack Overflow business model compared to its predecessors in his blog Joel on Software.

Stack Overflow quickly became the go-to place for programmers. In the meanwhile more than 17 million questions you can find explanations for almost every problem. Many search engines incorporate suitable stack overflow answers directly into their search results, and for many programmers the website has become an indispensable part of everyday life.

c’t: Developers use Stack Overflow all the time. Does that have an impact on the code? Does this lead to a copy-paste programming style?

Joel Spolsky: Yes, there is the type of developer who copies finished code and hopes it will work. I do this a lot too, but I go through the code line by line to refactor it, or at least format it, and to make sure I understand it. Copying code is like using a library, only not linking to it. Some people get upset about it: If you use code that you don't understand, you bring security risks into your project ... Everyone has to decide for themselves. Many articles criticize certain programming styles without understanding that there are different programming worlds and requirements and that every programmer optimizes for his own situation.

c’t: So, personally, you want to fully understand the code that you are writing, but you think it's okay if someone does something different.

Spolsky: Yes. And half of the often derided copy-and-paste developers are only looking for solutions for school or university. One can easily get into quasi-religious disputes.

c’t: You cover the needs of developers with Stack Overflow quite successfully. Do you still have goals and plans?

Spolsky: Many problems developers face today are left unanswered on Stack Overflow. The reason: These questions relate to a company's codebase, which may have grown for decades. I think novice programmers or people starting new projects can find an answer for every question on Stack Overflow - and if not, someone will be there in 30 seconds. Developers who work in a large organization, on the other hand, have mastered the basics of their craft. They tend to struggle with proprietary code. For information, they are dependent on colleagues, some of whom may no longer work in the company.

In the 1990s, before Java, COM was very common in Windows programming. Many have used it, but nobody wanted to learn it because it was so complicated. Later, despite high salaries, people who could write COM code were hardly available. If there are still any today, you probably never want to see COM again ... So there is no one left who can wait for that old code. The knowledge is gone, there is no usable internal documentation - nobody wants to write or read documentation, it is often bad, not up-to-date or cannot be found. Documentation is a myth.

"The best way to improve productivity is to reduce complexity."

What works better is a question-and-answer system. In the Stack Overflow format, these questions and answers can be stored, edited and searched and the reputation of people can be found out. This is the best way to document what you really need. That's why we now have three versions of Stack Overflow that we sell for different company sizes: Teams, Business, Enterprise. Instead of commissioning standardized documentation, a company only has to ensure that the flow of knowledge runs through these proprietary platforms.

c’t: Last year you said in an interview that almost every programming language is represented on Stack Overflow except COBOL - because that means that there is only proprietary code?

Spolsky: Yes, it could be. COBOL is interesting because it goes so far back in time. There is a trend towards only learning what is needed at the moment. The opposite of this is that you learn everything beforehand, go through a long training course and have no questions because you have everything in your head. When IBM introduced COBOL, the developers went on months of training. That was engineering in the 1960s: you learn for years before you can touch anything.

c’t: So not only have the tools and the type of projects changed, but the attitude of the developers has also changed in the direction of learning by doing?

Spolsky: I think so. I don't think that's just a trend, because that's how it works in other areas too, for example music. Nobody thinks of reading books about playing the piano for a year before they start: You press a few keys and practice. Only in engineering was it first tried differently.

Even today there is usually a manual for household appliances that suggests: Once you have read this, you can operate the device. The iPhone only came with a page of instructions, even though it was the most versatile tool of mankind at the time. There was never any assumption that you could learn how to use it beforehand. My father used to have an expensive HP-35 calculator with trigonometric and logarithmic functions. The manual had 150 pages; five of them alone explained how to compute a logarithm. I remember trying to read this manual as a kid to do magical things with this calculator ...

c’t: Some people miss this type of manual - older or less tech-savvy.

Spolsky: If someone needs a manual before they start using a device, that is also a user-guidance problem. I still remember that it started with a button on the iPhone. Everything was clear and simple. Then there was something new every year: screenshots, sleep mode, copy and paste, swipe gestures, face recognition ... Smartphones are so dominant that a lot of people have learned these things one after the other. If you were to send today's iPhone ten years back in time, it would be too complicated.

c’t: Is it also a problem for developers that tools and languages ​​are becoming more and more complex over time?

Spolsky: When I look back on forty years as a programmer (or something like that), all I can say is: the best way to improve productivity is to reduce complexity. You start with a simple language, then you find a library with which you can save a few lines of code or implement a new feature. But this has increased the number of things the programmer has to keep in mind by one - and the number of interactions by N or N2.

I recently tried to read a GPS device that returned a string. Today you use a library for parsing. I downloaded a library and found it buggy. After all, I wrote the code myself - the result fits in a few lines, runs very quickly, and I understand the code. This gain in knowledge makes you efficient as a programmer, instead of wasting your time understanding all possible libraries and worrying about dependencies and updates.

c’t: In an interview with a colleague last year, however, you said that developers now start at a higher level and thus solve some problems very quickly.

Spolsky: Of course, a lot is possible with the right tools. I think everyone at this conference could write, for example, a tool that uses speech recognition to transcribe a YouTube video within a day with ready-made libraries and web services. If you do it like me and move pointers back and forth in C, it's going to be a ten-year project that is unlikely to end well.

c’t: So it's a tightrope walk: on the one hand, don't reinvent the wheel, on the other hand, don't become too dependent on other projects.

Spolsky: That's why I only build simple Arduino projects where I light up LEDs depending on GPS data ... But that's the reason why Stack Overflow has become so important: You work in an ecosystem that you can't really understand. You program based on other people's code.

c’t: With Stack Overflow you pay with one point of your own reputation if you downvote a post. Why is that like that?

Spolsky: Jeff Atwood - my co-founder - was annoyed by the frequent honking in New York at the time. I said the horn is necessary for safety reasons. But most of the time people only use the horn to vent their anger. Jeff suggested that you should pay five dollars every time you horn the horn: if you need it to prevent an accident, you will still use it, if you are just annoyed, you probably won't. We built this idea into Stack Overflow. I think it worked out as we planned.

“Stack Overflow is not Reddit or Rate My Cat. There is right and wrong. "

The bigger question is: why do we have downvotes? Many mimosas say: why are you so mean, we should be nice to each other! I understand both sides. You want to be welcomed in a community. On the other hand, Stack Overflow isn't Reddit or Rate My Cat. There is right and wrong; Code can be bad or unsafe. Downvoting is important for Stack Overflow because otherwise it is not clear whether a low-rated post has not been seen often or whether it is simply bad. With a certain reputation, the user can also see how many upvotes and downvotes a score is made up of.

But it shouldn't get political, according to the motto: Here is my answer, I will downvote everyone else. Downvoting is important, but should be used infrequently. I posted a pretty political answer once - I think it was about inversion of control - and every day the score was either +200 or -200. I think I was right, but it doesn't matter: the lesson from this was that Stack Overflow is not the place to be for your opinions.

c’t: Do you still write answers?

Spolsky: Occasionally. Mostly when it's a question I'm working on myself. Most users do it that way, but there are also some who just want to help others. (syt)

This post comes from c't 17/2019