Another aspect is reinventing one's own wheels.
in reply to "Rites of Passage" wheel reinventing
I often write scripts that allow my customers to do something on the web with as little knowledge as possible of things like HTML, CSS, etc.
When those tools finally start being used by the real customers, my to-do-list is constantly growing. Sometimes when I look at the project and the suggested updates, I decide it's after all easier and a cleaner solution to start the whole thing new instead of patching around. So then I restart from scratch, pasting some useful pieces of the old code if possible.