Thibault Neveu
English Français
August 14, 2023 · 8 min read

The End of the Asked Question: We Give Instructions Now, and the Answer Comes Along

Every Stack Overflow metric is going down, and pretty much everyone draws the same conclusion from it. I think it is wrong, and that the subject is elsewhere.

Jan Collaert I, The Invention of Book Printing
Jan Collaert I, after Jan van der Straet · The Invention of Book Printing, from Nova Reperta · ca. 1600
The Metropolitan Museum of Art

Stack Overflow is disappearing, or at least every metric that makes it up is: visitor numbers, questions asked, new sign-ups. Similarweb measured traffic in March down 14 % year on year, and the slope has not straightened since.

Pretty much everyone draws the same conclusion from this, and I think it is wrong. The conclusion says that language models are consuming their own data. Data, for these models, is a bit what oil is to energy, and removing the source that allows them to learn does look terrifying at first glance.

Except the curve did not turn over in late 2022. Questions asked on Stack Overflow peaked around 2014, at roughly two hundred thousand a month, and have been declining ever since. Part of that decline actually comes from the platform itself, which ended up closing questions faster than it welcomed them. So what is happening this year did not reverse a trend, it accelerated a fall that had already started.

The most telling symptom is elsewhere. In May, management asked its volunteer moderators to stop removing answers generated by a model. They went on strike at the beginning of June, and their open letter had passed a thousand signatures within four days. In other words, the archive was filling up with the output of the very thing that is replacing it.

So there are two points to look at. First, why the use of a forum like this one is probably going to keep falling. Then, why that probably will not be a problem for language models, which is the less intuitive of the two.

What a model does not know how to do

It would still be naive to think models are suddenly going to answer all of our questions. I see three kinds that genuinely give them trouble.

The first is staying current. A model was trained at a given point, and from then on it is missing everything released afterwards: a library published a fortnight ago, an API whose signature changed last month, an error that did not exist at training time. It is blind to all of that, and the problem is that it is blind with confidence.

The second is the iterative side of an answer. In some cases an answer is not a paragraph you hand over, it is an investigation: you have to ask the person what they already tried, get a stack trace, form a hypothesis, watch it collapse, start again. A forum does that quite well, because it is asynchronous and several people dig in parallel.

The third is simply complexity. Some questions may be too complex to answer at all, including for a competent human, and there is an inherent limit there that has nothing to do with having read everything.

All three limits are real, and I still think all three of them close, each in its own way.

Fundamental knowledge

The first one falls once you look at how these models acquire their knowledge, rather than at how much of it they hold.

A library that has just shipped does come with its own API, its own functions, its own notions. But there is a good chance it ends up being an API fairly close to the others, and that it follows certain conventions, which themselves rest on other conventions. Someone who has been writing code for ten years opens a library they have never seen and guesses half its interface before reading the documentation, simply because they have seen enough conventions go by to guess this one.

That is what I would call fundamental knowledge, and it is really what we are trying to install in a model. It explains something that would otherwise be quite odd: the companies training these models do of course use up-to-date data, but above all they pay close attention to the quality of what goes in. Textbooks, essays, texts preselected as important for understanding reality. What matters in those texts is less the answers they contain than the fact that they let you reconstruct them.

So a model that holds the conventions does not need to have read the library. It needs the library put in front of it, and everything that follows comes out of that gap.

The model goes and fetches its context

Since June, you can describe functions to an OpenAI model and let it decide on its own to call them. It is presented as an integration convenience, and it is one, but I think it is mostly something else.

A model with functions can recognise that it does not have the answer, or at least that it was not exposed to it during training. It can then decide to go and get it: open the library’s page, navigate inside it, read the source itself, run an example, and build its own context before answering. Which closes the second limit along with the first, since iterative work mostly requires someone able to take several steps before answering, which does not necessarily mean going through a forum.

What interests me most in this sits on the side of whoever publishes the library. If models go and fetch their context, then what they find becomes a design question. You can imagine that whoever puts an SDK, a sensor or an API in the hands of other developers will want to make sure models can use it, and will stop hoping they have read it. They will design an interface for them, the way they write documentation for humans today. And they might learn something along the way, because the model receiving the questions knows what users are really looking for, and it can report that back.

Jan Collaert I, The Invention of the Compass
Jan Collaert I, after Jan van der Straet · The Invention of the Compass, from Nova Reperta · ca. 1600
The Metropolitan Museum of Art

The forum did that too, it should be said. It put the people who make the tool and the people who use it in the same room. What I am describing is the same function, with an intermediary in the middle that does not sleep and that talks to both.

From question to instruction

Stack Overflow responded three weeks ago by announcing its own generative layer, which is a fairly logical move. They will certainly be able to use their reputation to ship a product. What they have just lost, though, is a major strategic advantage: they had the database. Fifty million questions and answers accumulated over fifteen years, that nobody else owned. That database has been thoroughly ingested, it is now reachable through models anyone can call, and it serves people who have never set foot on the site. The platform did announce in the spring that it wanted to charge the companies training those models for access to its data, which is defensible, but which arrives a little late.

There is still a deeper reason not to bet on a better forum. The projects shipping right now are no longer really trying to answer questions, they are trying to execute tasks. Write me this module, fix this behaviour, migrate this project. We are moving from a paradigm where you asked questions to a paradigm where you give instructions, and where the answer arrives along the way, at the same time as the task gets done. And that is real value creation, which a generative version of a forum does not have.

A forum, really, is an institution built around one gesture: asking others, publicly, and waiting. If that gesture becomes rare, there is little chance that in ten or fifteen years we will still be building a faster version of it.

Testing instead of reading

That leaves the question we started with, the one that genuinely looks like a problem: if nobody writes answers any more, what will the next generation of models be trained on?

Here I am making forecasts, and I am flagging it. What we can see is that these models are becoming agents. They no longer just produce an output, they take an action, change their context, and decide on the next one based on what they observe. And we do know how to teach an agent that acts: reinforcement learning, with about ten years of literature behind it, from AlphaGo to AlphaStar, waiting to apply to something other than games.

You could easily imagine agents deployed in dockers, meaning virtual machines, each with a task to carry out. Install this library. Make this test suite pass. Build this project. They will make mistakes, test new hypotheses, and the system will know which of their attempts worked, because the machine does not lie about the result. Knowledge would then come from what held up at execution, rather than from what a human wrote on a page.

Jan Collaert I, The Invention of Distillation
Jan Collaert I, after Jan van der Straet · The Invention of Distillation, from Nova Reperta · ca. 1600
The Metropolitan Museum of Art

If that works, these models will not need Stack Overflow any more, and not at all as a matter of data volume: they will be able to test the answer instead of going to read it.

Something in this still bothers me, and I have no solution to offer. An archive of questions and answers had one enormous flaw, its slowness, and one quality nobody noticed while it was there: it was outside. It was dated, it was signed, you could contradict it in the comments, and someone who had asked for nothing could stumble onto it. Knowledge acquired by testing things inside a container is deposited nowhere, it sits in weights. It will potentially work very well, and we will no longer know where to go and look.

All thinking