I'm not sure how useful this distinction is, as every job I've held had highly ambiguous requirements and a lot of trade-offs involved in building a working system from them. It kinda makes me wonder though - a colleague who'd been a PM at both Google and Microsoft said the difference was "Microsoft expects PMs to produce a spec that's thrown over the wall to engineers, who throw it back if there's any ambiguity. Google expects their engineers to have opinions about the product and to resolve most of the details themselves, only consulting the PM if there's something big where they need additional data." I wonder if Microsoft hires programmers and Google hires software engineers?