Discover more from Register Spill
Learning from Bellard
What if software was like science in the early 20th century?
For the past few weeks I’ve been reading Richard Rhodes’ The Making of the Atomic Bomb. Yes, weeks. It’s a 1000 plus pages, don’t judge me.
The book is fantastic. Just really, really good. I highly recommend you read it and I’m going to stop there, because every description I could write would not match the brilliance of the book.
So instead let me share something from the book that I’ve been holding up in my head next to thoughts about programming and software development.
Early in the book, Rhodes describes the world of science in Europe in the early 20th century (again: just fantastic) and what stuck with to me were the descriptions of how people became scientists. Rhodes writes:
Physics students at that time wandered Europe in search of exceptional masters much as their forebears in scholarship and craft had done since medieval days.
Which meant in practice:
If someone whose specialty you wished to learn taught at Munich, you went to Munich; if at Göttingen, you went to Göttingen. Science grew out of the craft tradition in any case;
Scholarship and craft. Rhodes putting it in historical context:
in the first third of the twentieth century it retained – and to some extent still retains – an informal system of mastery and apprenticeship over which was laid the more recent system of the European graduate school.
Then, later in the book, he writes:
To become a scientist, Polanyi thought, required “a full initiation.” Such an initiation came from “close personal association with the intimate views and practice of a distinguished master.” The practice of science was not itself a science; it was an art, to be passed from master to apprentice as the art of painting is passed or as the skills and traditions of the law or of medicine are passed.
In the roughly 400 pages that follow (which is as far as I’ve read), there are many descriptions of different physicists and chemists traveling around the world to work for another scientist. Bohr moving to England to work with Rutherford. Other people moving to Denmark to work with Bohr and so on.
All of that made me wonder: what if we had that in software?
We already have something like a global community, right? Through open source, conferences, blogs, social media, forums, podcasts, newsletters and, I guess, the internet in general, we know what other programmers on the other side of the world are working on. We sometimes know their tools, how they write code, how they test, and so. I mean, I flew from Frankfurt, Germany to St. Louis, USA last week, visited a conference, and someone walked up to me to say that they are reading this newsletter (Hi!) — if that doesn’t have at least a streak of global community to it, I don’t know.
But then I wonder: what if we had the apprenticeship part? What if someone could, for example, say “I want to work for Fabrice Bellard” and then work for Bellard? What if they then train another programmer and could say things like “I learned this from Bellard”?
In some sense, I guess, we already have this: you can learn from Bellard by reading his code. You can learn from John Carmack by listening to 3 hour podcasts with him. You can learn from a lot of programmers by reading their blog.
But is it the same? What if you could sit next to them in an office, work with them on projects, have them guide you through a project?
Or, while we’re at it, what if you could do “learning sabbaticals” at other companies? Just like a Niels Bohr would go to England for 2 semesters to work with Rutherford, what if you could, say, work for the compiler team at Apple and then go back to your job after 6 months?
By now you know how this newsletter works: I won’t have answers here. But it’s nice stuff to think about, isn’t it?
Thanks for reading. I have a plane to catch. But you go ahead and subscribe: