It is quite funny. The code of my JNR-Project works fine (at least at the moment there is no major bug). But currently I had to change a few elementary parts of it. Well, I would today do many parts of the program in a different way I think. But actually, for some parts of it, I dont even know what they do anymore. Or, even worse, I cannot remember ever having written them.
Thats no surprise. According to „wc -l *.lisp“, my code has 2363 lines (though some lines are redundant or comments, and the line number of lisp-sources doesnt really give a proper comparism of sizes). And some parts of it should be 2 years old, and since that, I have never read or refactored them, but just used them and continue using them.
Thats the true spirit of programming: Use stuff that works, without knowing how or why it works, or if it will continue working. If something doesnt work or isnt sufficient for your purposes anymore, then first try to find a workaround, and only if this fails, rewrite the shrubs from your past.
That is why commercial software and software in general developes in thrusts, stagnating at a state without real innovations for long periods of time, and then blowing off the common habits with a new version.
Compare this to mathematics, and you will see the main difference between it and computer science: In mathematics, you dont have to care about the shrubs so much – as soon as they work, they mostly will continue to work, at least for a much longer time.