6 ms·
Relevant to this article is Peter Naur's paper on Programming as Theory building: https://pages.cs.wisc.edu/~remzi/Naur.pdf https://pages.cs.wisc.edu/~remzi/Nau
by bcbrown 5y ago
Relevant to this article is Peter Naur's paper on Programming as Theory building: https://pages.cs.wisc.edu/~remzi/Naur.pdf 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."
- wwweston 5y agoSee 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-mathematician-to-do/44213#44213 https://mathoverflow.net/questions/43690/whats-a-mathematici...
- epolanski 5y agoI 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.
- fantod 5y ago> 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.
- epolanski 5y agoWe 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.
- bcbrown 5y ago> 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.
- Jensson 5y agoBut 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.
- baby 5y agoI 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)
- Jensson 5y agoMathematicians 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.
- MattGaiser 5y agoA 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.
- cloogshicer 5y agoThat 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/ https://hiringengineersbook.com/post/autonomy/
- mehphp 5y agoWell that was a great read; thanks for sharing!
- ilovecaching 5y agoNice article, I enjoyed reading it.
- cloogshicer 5y agoThanks! :-)
- mikewarot 5y ago>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.
- magicalhippo 5y agoWe 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.
- amatecha 5y agoText version of that article: https://gist.github.com/onlurking/fc5c81d18cfce9ff81bc968a7f342fb1 https://gist.github.com/onlurking/fc5c81d18cfce9ff81bc968a7f...