I'm an Analyst/Engineer turned PM. Back when I started coding, I often found that only about 30% of my effort would actually be used-the rest was wasted because of vague requirements or miscommunication. So I started creating light prototypes to make sure my "customers" (internal parties) and I were thinking of the same thing, and got that up to about 70%.
Now as a PM, I try to use specs as a way to iterate faster. If you're working on a prototype of a completely experimental product, then at the beginning the important part is to make sure everyone just has an understanding of what the overall product will be-which is already quite difficult! Sometimes the best document here is literally just an annotated flow-chart.
On the other hand, when you're adding user-based features to an existing product, it helps to have stories, mockups, and in general include a lot more detail.
There's never going to be a perfect spec, but well-written (and iterated!) specs can make the development process much faster.