"I should point out that as professionals not only do we have the option of saying no to bad requests, I think we also have the obligation to do so."
Indeed. I watched three people say "no" to a significant, new piece of very important software that replaced completely our legacy data storage/fetching/processing methods. They said "no" for the reasons you'd expect; not properly specified, unreasonable expectations of basically magic on the part of management, very improbable timescale.
In one meeting, when a very skilled programmer (who goes to the C++ committee meetings and that sort of thing) said "no", the response was "Well then I'll find someone who can." What they got, of course, was someone who didn't say "no" (and of course, there's an element of self-selection here; given that some skilled, competent software engineers said no, the person who said yes was, harsh as it may sound, an adequate programmer but an incompetent software engineer). What we got was a total car crash of software, six months late, that's massively unsuitable, doesn't do what's needed, undocumented, untested, everything bad that you'd expect. A great deal of the 40 "release candidates" were desperate fixes to this car crash, that our recently appointed new software architect is planning to take outside and execute in the car park as soon as we get a "release". So that was a great use of a year.
Where this is going is that saying "no" didn't actually stop them finding someone who wouldn't say "no". On the plus side, the person who delivered this truly atrocious software to us is now actively looking for another job. Not that he was fired, no no, but he's now got zero credibility and nobody wants to work on anything he ever touched.
Christ, I wish I'd just gone into mathematics.