I've written succesful applications without any spec, just talking with users, writting things down myself, showing them prototypes, repeating. In some cases users are not able to produce a spec and even if the do they don't always really "know what they want", that's why prototyping is so important.