Relevant to this article is Peter Naur's paper on Programming as Theory building: https://pages.cs.wisc.edu/~remzi/Naur.pdf
He argues that the biggest determinant on whether maintainers on a system they did not build will succeed is whether they will have access to the original developers: "The conclusion seems inescapable that at least with certain kinds of large programs, the continued adaptation, modification, and correction of errors in them, is essentially dependent on a certain kind of knowledge possessed by a certain group of programmers who are closely and continuously connected with them."
See also Bill Thurston's commentary on the nature of mathematical knowledge:
"mathematical understanding does not expand in a monotone direction. Our understanding frequently deteriorates as well. There are several obvious mechanisms of decay. The experts in a subject retire and die, or simply move on to other subjects and forget. Mathematics is commonly explained and recorded in symbolic and concrete forms that are easy to communicate, rather than in conceptual forms that are easy to understand once communicated. Translation in the direction conceptual -> concrete and symbolic is much easier than translation in the reverse direction, and symbolic forms often replaces the conceptual forms of understanding. And mathematical conventions and taken-for-granted knowledge change, so older texts may become hard to understand.
In short, mathematics only exists in a living community of mathematicians that spreads understanding and breaths life into ideas both old and new."
https://mathoverflow.net/questions/43690/whats-a-mathematici...
I don't really buy that.
Mathematics is by far the biggest and longest running open source project on this planet and we are absolutely able to traverse it by centuries or millenia. This works across languages and cultures.
Mathematics is built on a small set of axioms and everything else is defined on top of it and proved.
Your comment makes it sound like there is some magic knowledge linked to arcane symbols, when mathematicians are the least interested in symbols and labels, they care about definitions.
As with any field if you get in highly specific topics then obviously you are going to lack enough literature and tradition on these topics and something may get lost, but if everyone forgot all they knew about math today we would be easily able to get back to where we are in a just by reading.
> if everyone forgot all they knew about math today we would be easily able to get back to where we are in a just by reading
If your definition of "easily" is the amount of work required to become a mathematician, then sure.
We started from the assertion that if a software project loses all of its devs it will not be maintainable anymore by new hires.
Not only this is far from a general truth, we all maintained codebases we knew nothing about I guess, but it applies even less to mathematics, which is a language based on definitions built on few concepts rather than vague and buggy business requirements.
> We started from the assertion that if a software project loses all of its devs it will not be maintainable anymore by new hires.
I recognize that this is due to my imperfect summary/introduction of the paper, but it doesn't make that assertion. I highly recommend reading it; it's not that difficult or technical.
I've maintained systems where I could talk to the original developers, and I've maintained systems where I couldn't. I know there's a difference in outcomes between the two cases, but I wouldn't say the latter is "not maintainable". Certainly buggier and slower to develop against, though.
But it is way less work than it took to build the knowledgebase we have today. Imagine if we could give all our math literature to the Romans 2000 years ago in a translated form, do you really think it would have no effect? Calculus was invented just a few hundred years ago, it took humanity millennia to get where we are today.
I work in the field of cryptography and I agree with GP, papers and research goes in all sorts of direction, but very little actually ends up forming a solid branch of knowledge. Sometimes if people aggregate into such a branch, there’ll be SoK papers (systemization of knowledge) that will start popping to make the tip of that branch understandable, and at some point people will create all sorts of resources including university courses and textbooks. But that’s rare, and it demands a lot of hypes, and sometimes tips of branches just go overlooked for a long time. If the author dies or move on, it’s possible that nobody can really take over the work easily, because there’s no proof, or nobody understands it, etc.
Afterall, this is what happened to a lot of famous mathematicians. Their texts were forgotten, and then rediscovered a very long time later, and sometimes proofs could not be recovered for a long time (cf Fermat)
Agreed that the amount of knowledge that gets systematized into papers, textbooks, and courses is a small subset of the total knowledge in a field, which is largely contained in brains. Although regarding your specific example: I believe the current most popular hypothesis about Fermat's Last Theorem is that he did not actually have a proof; it's very likely the proof he thought he had contained errors.
> Mathematics is by far the biggest and longest running open source project on this planet and we are absolutely able to traverse it by centuries or millenia. This works across languages and cultures.
This goes against what I understand about mathematics. I've tried to break it into a few sections.
Open source:
Things in mathematics once defined, tend not to change, even when changing would be beneficial.
Open source software tends to be a bit more malleable, but even long running things that can't change for fear of breaking things like POSIX or the X Window System end up getting alternatives that the industry slowly turns towards.
But mathematics just stays stuck. Multiple subfields will end up using the same glyph to mean two different things and when those subfields intersect it gets very bad very fast.
Even small quality-of-life fixes never end up getting accepted into use.
Here's a great example by 3Blue1Brown: https://www.youtube.com/watch?v=sULa9Lc4pck
Another example (if you're interested in going down a bit of a rabbit hole) is the history of vector algebra vs quarternions. We ended up going with vector algebra, then learned that quarternions were actually better, but we continued to teach / and be taught vector algebra.
> we are absolutely able to traverse it by centuries or millenia
Well, this seems easy to disprove since knowledge does get lost and things keep getting rediscovered.
For example, Calculus was rediscovered multiple times: - Archimedes (at least part of it with his method of exhaustion) - Leibnitz / Newton (separately) - and recently: medical doctors rediscovering integration and publishing papers on it in the 90s.
Other famouse examples would be Fast Fourier Transform, and perhaps Fermat's Last Theorem
> We ended up going with vector algebra, then learned that quarternions were actually better
Wait, what?
I'm still mostly familiar with assessments like "Quaternions... have been an unmixed evil to those who have touched them in any way" and "quaternions appear to exude an air of nineteenth century decay" (but not actually familiar with quaternions beyond a vague understanding of them as kind of 4d version of complex numbers).
> Things in mathematics once defined, tend not to change, even when changing would be beneficial.
Can you provide an example?
Mathematics definitely change as soon as someone provides a proof that something isn't correct.
This is not about correctness but about ergonomics and clarity.
Consider the 'standard' definition of the complex numbers, whilst we know there are more intuitive options.
Consider tau vs pi. And how hard it is for anyone to write mathematics based on tau.
Consider the rather lacking notation for probability with conditionals.
Mathematicians die but their papers lives on. Newton discovered variational calculus, but at the time nobody else in the world understood his work so it was forgotten for a century when he died. But it was later picked up again. It might take a while, but it isn't the same thing as the knowledge not existing.
That paper is amazing. Completely changed my view on programming. For those who find it a bit inaccessible (as I did on my first read), I wrote an article about it a while back, explaining it further and giving real-life examples:
https://hiringengineersbook.com/post/autonomy/
Nice article, I enjoyed reading it.
Thanks! :-)
>The main value of a software company is the mapping of source code and problem space in the developer’s heads [In linked article]
That is a profound conclusion to reach. For the most part, I think it's true.
Without someone who wrote/fully understands source code, for example in abandoned software, the source code is a treasure map, the as-built plan of a building. It takes a lot of time and effort to orient yourself with things and make reasonable guesses as to what is going on. This aligns well with the original post.
Well that was a great read; thanks for sharing!
Text version of that article: https://gist.github.com/onlurking/fc5c81d18cfce9ff81bc968a7f...
A former colleague sent me an receipt that had an error from a system we worked on years ago (2 and 3 companies ago respectively). I bet we could tell the current devs where to find the bug pretty easily as we wrote a lot of that code.
We see something similar with our customers. When our customers have some new projects or change their ERP or whatever, we almost always know better than they do how their systems and procedures work.
Like, if they come with a change request we might ask what about X, they'll get all surprised saying no we don't do X, but after a bit of prodding sure enough, they discover they have a worker that's handling X every day.
This is simply because we've been around, while they've had multiple new persons cycle through their departments. When they change the ERP system, we've still got the guy who coded the integrations with their previous system.