I think a huge problem with this is trying to frame everything through D&D as well as our perspective. Fuck modern D&D and its desire to control the entire dialogue. Wizards of the Coast aside, there’s also a fantasy component here. I personally dislike requiring all races to act exactly like humans with human motives. From a specific perspective, we view the wanton murder and sacrifice of wood elves by the drow as a terribly evil thing. From the drow perspective, why can’t the opposite be true? I’m not talking about Salvatore’s one-sided writing that makes it clear the whole thing is a massive con. D&D is very biased toward human motive and perspective. Why can’t both be true? Drow are evil to us and we are evil to them? That’s a much more interesting story and completely changes the narrative around someone like Drizzt.
This is a really nuanced take on speculative fiction in general. I also strongly feel that, the way WotC writes things, removing racial alignment is very important. There is no nuance in their universe. Even when we see other races, we always evaluate their action through a human lens rather than being presented a cogent paradigm contrary to ours.
I feel like it’s wrong to idolize anything in the same way that it’s wrong to throw out many things (there are some clear exceptions usually in the realm of intolerance but that’s unrelated to this). Clean Code, like every other pattern in software development, has some good things and some bad things. As introduction to the uninitiated, it has many good things that can be built on later. But, like Gang of Four, it is not the only pattern we apply in our craft and, like Agile, blind devotion, turning a pattern into a prescription, to Clean Code is going to lead to a lot of shit code.
Cognitive load helps us understand this problem a lot better. As a junior with no clue how to write production code, is Clean Code going to provide with a decent framework I can quickly learn to start learning my craft, should I throw it out completely because parts are bad, or should I read both Clean Code and all its criticism before I write a single line? The latter two options increase a junior’s extraneous cognitive load, further reducing the already slim amount of power they can devote to germane cognitive load because their levels of intrinsic are very high by the definition of being a junior.
Put a little bit differently, perfection (alternatively scalable, maintainable, shipped code) comes from learning a lot of flawed things and adapting those patterns to meet the needs. I am going to give my juniors flawed resources to learn from to then pick and choose when I improve those flaws. A junior has to understand the limitations of Clean Code and its failures to really understand why the author is correct here. That’s more cognitive science; we learn best when we are forming new connections with information we already know (eg failing regularly). We learn worse when someone just shows us something and we follow it blindly (having someone solve your problem instead of failing the problem a few times before getting help).
I’m gonna be super hand-wavy with citations here because this a soapbox for me. The Programmer’s Brain by Felienne Hermans does a good job of pulling together lots of relevant work (part 2 IIRC). I was first introduced to cognitive load with Team Topologies and have since gone off reading of bunch of different things in pedagogy and learning theory.