Many things are much easier said than done, "create good architecture", "eliminate technical debt" etc. You can't just schedule X hours and then be done after X hours, and often the time you spent just made things worse. People have to realize that writing good code is an artform and not something you can just decide to do.
That, e.g., doing the same thing over wastes time is obvious. I don't need a taxonomy to tell me that. In my experience the cause of those things "happening" is that most people don't put much thought in what they are doing and why they are doing it. Programmers feel an "itch" to start coding when its not even clear what should be done. A gamble on one's intuition rather than a structured working procedure.