The problem of writing requirements up front is that one often can't know all the important aspects of the problem until one gets well into trying to solve it. Same with quoting a project - early on, you can't quote with precision unless the job is very similar to others you have done. But a contractor has to know what it's bidding on in good detail, so you can't just leave lots of details until later.