Question: I seem to be repeatedly stuck in a situation where release dates are set not based on anything technical, but because someone in Sales has committed to a customer by then. Based on discussions with friends in development at other companies, the same thing seems to happen.

"Here is the committed feature set and here is the committed release date", and it's difficult to argue because at this point there is money riding on it, and that trumps everything. 

**In general, is there a way to push back on this?** If not for this release, what about in future? The problem I have is that the only way I see one way of doing so, and that's by doing the best I can, but release the software 'as is', so to speak.

I don't want to release bug-ridden software since it's my name attached, but doing 80 hour weeks for months at a time just vindicates the arbitrarily set release date.

edit: for the record, I'm not doing 80 hour weeks now, just that comes to mind as what would be required to cover the expected feature set by the release date.

Answer: 
I've worked both sides of the house. Remember without sales people there would be no downstream jobs or projects.

**How to battle sales over-commitment**: Estimate, then take at least a 130% multiple (always plan a minimum 30% contingency). Provide and document said estimate. Realize that your effort estimates will be reduced in the sales process. That's OK, just have management **carve out** of the license/sales/commission agreement any reduction of those hours. If you're a public company this gets tricky with [VSOE](http://en.wikipedia.org/wiki/Vendor_Specific_Objective_Evidence), but until you hit the sales folks with contract accountability *up-front* during their sales process, it will become *your* accountability later.
Spec the job after they give it to you and let them know how long it will take. Then when they crow about it tell them.

"I'm sorry you made that commitment but given the resources at my disposal It will take X hours to complete" 

Do this every time...it worked for me. 

Basically tell them they can have it Fast, Cheap and Good, pick two.