I've only realized recently that I am one of those annoying people who does not document consistently. I had originally skipped this step because, "I was in a rush". My job requires me to perpetually extinguish fires, many of them created by others, and I thought that "If I put all my time into coding, eventually I can go back... I just need to get this done right now." I've abandoned that philosophy for a couple of reasons.
First, I find that as I document, I have a much clearer idea what the functions are supposed to do and this often makes the code much more intuitive in the end. Ironically, writing documentation makes the code more self-documenting.
Second, by the very act of documenting, I know my own code even better and therefore can keep more of it in my head at the same time. When trying to keep track of dozens of functions, and potentially hundreds of objects, anything which can serve as a memory aid is useful. Thus, my speed actually increases when debugging.
Finally (and far from least), if I document, I can relegate the work to the people who would otherwise be unable to help fix stupid problems. More importantly, their questions on projects which were done months or years ago will be answered by documentation, and not by the ambiguous medium of, "oral tradition".
As an example - there is a project which I worked on briefly after the original programmer quit. He did not document (at all), and I unfortunately followed suit. Now, I find that the person who has taken over this project (as I was taken to act as a fireman again) needs to ask me quite a few questions on how things work. What was originally done to save time has now hurt me severely.