Yes, I'm stupid, just ask my wife!
Now that we've gotten that out of the way...
My whole point is that strong, formal documentation is usually not needed. Programmers hate doing it because it's generally useless. Nobody reads it, and nobody abides by it when they write new code. There's a reason for this. Writing software is more like art than science. Painters don't write detailed specs describing what they are painting, they make the painting such that it can be perceived and appreciated without such documentation.
Yes, there certainly is a type of software that needs solid documentation. One example is an API. But for a lot of software, "robust" documentation is something pushed by purists, but is rarely actually used in practice.