Today’s bit from Douglas Hofstadter relates to realizing you made a mistake back at the beginning:
…suppose you had written [a program for deriving theorems in number theory] but had forgotten to include TNT’s Axiom 1 in the list of axioms. After the program had done many thousands of derivations, you realized your oversight, and inserted the new axiom. The fact that you can do so in a trice shows that the system’s implicit knowledge is modular: but the new axiom’s contribution to the explicit knowledge of the system will only be reflected after a long time — after its effects have “diffused” outwards, as the odor of perfume slowly diffuses in a room when the bottle is broken. … Furthermore, if you wanted to go back and replace Axiom 1 by its negation, you could not just do that by itself; you would have to delete all theorems which had involved Axiom 1 in their derivations. Clearly the system’s explicit knowledge is not nearly so modular as its implicit knowledge.
A fundamental system in your game is broken or inadequate. You know it, the developers know it, everyone can see the proud nail sticking up. Why do they keep making tweaks to make the game work around it rather than just fixing it? Because fixing something upon which a lot depends is difficult, time-consuming, and risky. Adding something new is relatively easy.
When baking a cake, you accidentally mixed in two cups of flour instead of one. Un-mixing cake batter is theoretically possible but not something you can sanely do at home. Your options are to throw it all away or double everything else in the recipe. Adding is easy, and starting over is easier than un-breaking it.
Some part of your game’s accuracy system does not work properly, you just discovered two years after going live. Axe-wielders were not just whining; something is odd about how the code handles two-handed slashing weapons against non-moving targets in medium armor. There is no single value to change, any more than you can point to the part of the cake where the chocolate is. Which is less likely to break your game: adding an accuracy bonus to two-handed slashing weapons or re-writing 3% of your combat code? You could re-write that code, but your entire combat system interacts with it, so you would need to re-test literally everything to make sure the new code does not break something else. Try every weapon against every armor, make sure that it does not break monster AI, and then spend months discovering how many places someone hard-coded things that depended on some detail of the original code. Why couldn’t Carl have documented that the roc-hound’s attack sequence depended on how piercing weapons interacted with the movement speed of mounted targets?
Fixing the fundamental only gets worse once you already have a dozen band-aids on the wound. You must tear them all off and throw them away. But at least you get to do all those things you wanted to do if you had it to do over again.