Personal Dynamic Media08/23/2022, 11:18 PM
Kartik Agaram08/23/2022, 11:25 PM
Personal Dynamic Media08/23/2022, 11:50 PM
Kartik Agaram08/24/2022, 12:14 AM
facility. We also have at least one counter-example of a program that does uncommonly well at preserving its theory over generations of contributors: with thanks to @Konrad Hinsen, `emacs`.  http://akkartik.name/archives/foc/thinking-together/1650464577.515109.html#1650702843.175699  https://merveilles.town/@akkartik/108796658699867329 I think the key reason lack of theory is still a pain point is social: lack of incentives. If a program breaks users complain. If a program's theory breaks, nobody complains immediately. So it can rot quite badly before anyone notices, badly enough that the tech debt is impossible to repay.
Personal Dynamic Media08/24/2022, 12:16 AM
Kartik Agaram08/24/2022, 12:21 AM
Jimmy Miller08/24/2022, 3:07 AM
Personal Dynamic Media08/24/2022, 3:46 AM
Jimmy Miller08/24/2022, 4:27 AM
Konrad Hinsen08/24/2022, 4:41 AM
Kartik Agaram08/24/2022, 5:49 AM
Jack Rusher08/24/2022, 8:22 AM
I'm totally willing to grant that there are aspects of muscle memory in juggling or bicycling that you can't learn just from reading books. But I wouldn't put programming in the same category.I would put it in the same category, very much as @Personal Dynamic Media said above, re: training/teaching rather than explaining. Much of what makes for good programming in the large (architecture, decisions about API shape, knowing what/how much to build when) is a matter of intuition that can't be reduced to a few rules of thumb I could write down. The best way I've found to transmit that stuff is by sitting together with someone who is doing the work.
Kartik Agaram08/24/2022, 12:28 PM
? I think much of the possibility of reading materials still lies untapped. They can be conveyor belts for accelerated change (http://akkartik.name/post/silfen-paths) I'd claim you in particular could make awesome interactive things for people to load up into Emacs, that reward intense study. But it's a heck of a lot of work and often doesn't seem worthwhile.
s/reading books/following books with exercises
Jimmy Miller08/24/2022, 1:41 PM
Kartik Agaram08/24/2022, 2:16 PM
The theory in the case of chess playing isn't contained in that book. What is contained is a series of steps, that, coupled with our innate human abilities, can cause someone to gain a theory.I don't disagree there. Perhaps we're saying the same thing. My claim is that it is possible for the original authors to make it possible for future readers to build up a theory of a codebase in their heads.
Naur's point is that since theory is a know-how, and know-how's rely on our skills and history, you won't have the same theory as the author.I don't particularly care that it's exactly the same. Is it close enough to make the same choices as the original authors? Codebases are tolerant of some amount of error. (http://akkartik.name/post/modularity) There's a spectrum here. Simple changes I make to my codebase will happen the same way whether I do them today or tomorrow. There's "one right way" to go with the grain of what's been built so far. More complex changes are more fragile, and I might do things one way today and another way if I'd attempted them yesterday. We all change, and the codebase isn't always right. Putting all these nuances together, my claim is: it is possible for a codebase to convey knowledge about itself to the extent that a diligent follower makes the same modifications as the original author in situations where the original author's actions would be relatively stable over a period of time.
Jack Rusher08/24/2022, 2:47 PM
Kartik Agaram08/24/2022, 3:16 PM
Jimmy Miller08/24/2022, 3:42 PM
I don’t particularly care that it’s exactly the same. Is it close enough to make the same choices as the original authors?In many cases, yes. It is good enough. But being off by just a bit adds up over time. This is what Naur claims is the basis of decay in software. We also, have to realize the lossyness of passing on this information down the generations. The first person may get it approximately right enough, the next less so and less so all the way. That’s how we end up with massive legacy codebases for which no one has a theory.
More complex changes are more fragile, and I might do things one way today and another way if I’d attempted them yesterday. We all change, and the codebase isn’t always right.Yeah exactly. The codebase doesn’t contain the theory. We do. And we build and grow that theory over time. What is and isn’t a small change is relative to the theory we have. What is and isn’t a good change is relative to the theory we have, the purpose of this code, how it relates to the world around us. We are building that theory by programming.
Putting all these nuances together, my claim is: it is possible for a codebase to convey knowledge about itself to the extent that a diligent follower makes the same modifications as the original author in situations where the original author’s actions would be relatively stable over a period of time.Yeah. I think Naur would agree. The point is that the theory isn’t what is in the codebase. It is what is in the people. We can teach people, even via written documentation and they can form a theory that is good enough for many purposes. But the theory is in them, not on the paper.
jamii08/24/2022, 4:06 PM
Kartik Agaram08/24/2022, 4:08 PM
Jason Morris08/25/2022, 3:53 AM
Konrad Hinsen08/25/2022, 6:59 AM
Jimmy Miller08/25/2022, 1:22 PM
wtaysom08/26/2022, 8:57 AM
curious_reader08/28/2022, 4:34 AM
Konrad Hinsen08/28/2022, 5:49 AM
wtaysom08/28/2022, 7:43 AM
Kartik Agaram08/29/2022, 5:26 AM
Jason Morris08/29/2022, 3:25 PM
Jimmy Miller08/29/2022, 3:38 PM
Jason Morris08/29/2022, 4:13 PM
Riley Stewart08/31/2022, 1:17 AM