12
Programming as Archaeology
illustrationLong before neural networks learned to write code, I programmed in a way that many programmers still find irritating. I rarely started from an empty file. If a piece of a working system already existed somewhere that solved at least half of my problem, I was far more interested in figuring out how to adapt it than in proving to myself that I could write the same thing from scratch. Sometimes I dug into its insides, sometimes not, and usually as deep as was needed to get the next layer of the system working.
For a long time I regarded this as something like a bad habit best hidden from serious engineers. Then language models appeared, and this habit turned out to be perhaps the most useful skill for working with them.
In 1911 the English mathematician and philosopher Alfred North Whitehead wrote in an introductory book on mathematics a sentence I consider one of the most accurate ever said about technology: civilisation advances by extending the number of important operations which we can perform without thinking about them. He added that operations of thought are like cavalry charges in a battle: they are strictly limited in number, they require fresh horses, and must only be made at decisive moments.
Each of us lives most of our life this way. You drive a car without knowing at what moment the spark fires in the cylinder. You pay by card without imagining how many banks and processing centres your purchase of a coffee passes through in the two seconds the terminal is thinking. You open a website, and not a single cell of your brain is occupied with how the protocol works by which the page makes its way to your phone. Programmers in this respect live like everyone else: no normal developer reads the source code of network protocols before writing a program that sends data over the network. He knows what the protocol promises, and that is enough as long as the promise is kept.
archiveI probably got used to this way of working back in the early 2000s, at the St Petersburg company Nienschanz, where I worked on systems integration. We assembled large computing systems for clients out of other people’s components. One of those components was Oracle RAC, a database that can spread itself across several servers so that to the programs talking to it, it looks like one. Another job I remember was a computing cluster built on Intel Itanium processors for AvtoVAZ, the Russian carmaker, on which the LS-DYNA package was to run.
Tras entrar
El resto del libro es para quien ha entrado
Entra con INITE o crea una cuenta. Lleva un minuto, y el libro se abre aquí mismo.