An excellent article on project management:
http://www.embedded.com//showArticle.jhtml?articleID=199501117
"Chip away at project management"
It uses poker chips of various colors to represent work-units of various priorities. Also identifies various roles (often not recognized): the doer,
manager, another type of manager, and allocator.
"Good, fast, or cheap: pick two"
At my last company (made storage peripherals) we eventually hired a pair of very experienced tech managers. They stopped the marketeers from swinging by the cubes to ask for features. We made them write up what they wanted, and the engineering group reviewed it before responding with a time/resource estimate. What a concept.
At a previous company, although working on life-critical medical devices, there was more of the bullshit from the supposedly experienced managers, who were in fact just engineers who no longer did actual work. Yep, nothing like rushing a device that can kill if it misbehaves. Especially for schedules that turned out fictitious.
Of course, if a defibrillator doesn't work, the guy is already dead, and no one will know. If it works when it shouldn't, causing fibrillation, well, you just shock the guy again and all's groovy. But with storage, screwing up data (and not letting the user know) is bad. Eventually the storage company started getting serious about QA, but not after releasing some nasties that continue to bite it.
With a med device, you have to write up your test plans, based on the specs.
With the storage startup, the specs were often not stated, because they weren't thought about before they were encountered. Bad.
Most of the complexity of software is handling exceptions, errors. Very true for storage (RAID) and also true for medical devices, where handling errors and notifying humans is a big deal.
In the chip industry I worked in, you just want to make sure the chip doesn't hang, ie get into a state you can't get out of.
Fail early, fail safe.