I was fishing through some old posts on Joel Spolsky's blog and came across a series he did titled Painless Functional Specs. There are 4 parts to the series, but it is worth the read.
I like to to think of spec writing as... THINK FIRST DEVELOPMENT, or TFD. You heard it first here!
He has a great quote in the first post... "failing to write a spec is the single biggest unnecessary risk you take in a software project. It's as stupid as setting off to cross the Mojave desert with just the clothes on your back, hoping to "wing it."
This was a great blog series, and I am glad that I came across it. Not having specs means that every person on the project is working on the assumption that they all have the same understanding in their heads about how a system should or should not operate. But of course the reality of that happening is very unlikely.
Spec writing lays out out the project needs and requirements in a written document, which can be referenced in the future by all parties involved.
I do agree with Joel that specs are likely to be left out because "nobody reads them". But he makes the point that specs often don't get read because they just are not written in a easy-to-read fashion. He suggests writing specs in a conversational tone and adding humor. Basically, it takes good writing skills, and not many people are good at or enjoy writing.
Part of the reason I write these blog posts is for the sheer practice of writing. I want to be a good writer. Maybe someday I'll be funny, too.