I may be an unusual bird among programmers when it comes to this issue, but I don't find writing specs too bad an idea.

When I'm designing a project, it is all layed out in my head, first like a mingled puzzle, slowly becoming more and more organized until I can finally see the "full picture". Writing a spec helps me reach the full picture stage quicker.

Specs don't always have to be full-blown requirements documents, with numbered requirements for each small detail. Specs can start as a 10-line description of what the project actually does. Later, this description can be iteratively refined to include more details. I don't really think that covering every small little detail in a spec is necessary - nor is it possible, but a spec is a great way to help with a program's design. Besides, users usually aren't sure what they really want, so a spec helps settle that by creating a common ground for users and implementors. And not to mention the documentational value...

Maybe it's because I don't hate writing documents (unlike most people), maybe it's because I had too much bad past with spec-less projects which turned into "big balls of mud", maybe it's because I have good experience with projects for which I wrote the spec, which later helped me understand what my project actually did, but I really *do* think that specs are a good idea.