The Program Managers here at Microsoft get work from three main buckets. There are things that we have that are broken (bugs), things that we have that people want more/different/other features in (enhancements), and new features (Improvements). As with just about every other technical professional on the planet, there are far fewer resources and time available to get everything done that is in those three buckets. Those of you who have worked in the software creation industry will know what I’m talking about – now take what you’ve seen in the past and multiply it by the number of customers Microsoft has – oh, and include the 80,000 or so Microsoft employees who also use our own software, who are of course some of the most vocal about it.
So you can see (and you've possibly experienced) that no matter which set of N objects you choose to work on, someone isn't going to be happy. For bugs, we make a "sieve" of the most hit and the most hurt. We try to do those for sure. For example, an issue where something is not working beats out a misplaced period in the title bar.
The enhancements is where it gets a little more tricky. Enhancements can include everything from wanting an entirely new way to see data in a grid to a connection string addition. No matter which one you choose to work on, the other contributor will be angry. And IT folk are not often known for being gentle with their criticism, so thick skin is the order of the day.
If you're not careful, the other two pressures of work will prevent you from ever innovating something new. You can get so caught up in the "tyrrany of the now" that you don't think about the future. But try explaining that to someone who wants you to fix their bug - yikes!
At any rate, it's an interesting process. And one we deal with each day.