I think that for small websites that require a custom backend and administration panel (just to make an example of the project size I'm talking about ) it's good both for the developer and, obviously, the customer. You already know most of the shit the customer will call you for ( ... password reset function, order stuff by this or that, activate/deactivate stuff, filter by... etc ), so you'd better have this list of stuff on paper and have they pay you to build it, rather than receiving a call and being asked to build it anyway, for free.
The cost would be about 1 hour more, but it's well worth in my opinion.
For larger projects I have to agree with you.
Nope. I don't agree. I have developed and managed so many website projects and each and every one is asking for either
a) custom stuff "oh, that's gonna be so easy, right? A TALENTED coder would just need a few minutes, right?"
b) A unique take on standard stuff
c) Hundreds, if not thousands of little tweaks. "Make that red, but I would like the headings to not be bold in the editor, can't we put my poodle's picture in the admin area? He is soooo cute."
c is by far the worst, this customer will nickle and dime you to death.
Old project manager saying that holds true every time:
"Walking on water and developing according to specification are easy, as long as it's frozen."
Case in point:
Freelance project I just did. Restaurant website with backend.
People can order vouchers or reserve online. No biggie, all the standards where easy to do.
Customer is happy, but....
"The email adress in the confirmation email we get can't be clicked. The old website did this."
a) How would I know what the old site did? They did not fucking tell me.
b) Change email to HTML formatting, insert mailto link.
While b is not hard to do, this is time I did not factor in and could spend on other things.
Gladly, I am a project management god and had very few of these surprises.
These surprises will come by the hundreds if you do not have a good and thorough communication with your client or your coder before the project starts.
With this client, I did a 2 hour session beforehand, I wrote a loose spec detailing the site structure and feature as well as a cost estimate and got the OK in writing, a 1 hour session showing them the design options, the go ahead in writing for the design they chose, two half hour sessions with questions and answers while developing the site.
They still managed to come up with - legitimate - requests we had not covered.
I do factor in a bit of leeway for these, but do bad planning and it will be eaten up right quick.
::emp::