Compromise is stuff like what I'm going through, right now. The user needs to know that a set of locations on a map, can also be displayed as a sortable list, but the affordances for that access are not working with the overall design. It's extremely easy to add a button, but it messes with the screen layout.
We'll figure it out, but we can't ignore it. It's too important to our users, so we may have to make a graphical compromise. It's really tempting to think that "stupid users should know better," but that's a fairly destructive mindset.
"How can I maximize my widgets-produced-in-six-months output given that I'm constrained by having $x budget?" - constraint that could give you a different solution than higher or lower budget.
"How can I maximize my widgets-produced-in-six months output AND my customer satisfaction given that I'm constrained by having $x budget" - now you have to compromise one or the other.
Here I'm talking about the physical design of how the widget is made as it's the first super-concrete example that popped to mind, but almost any sort of design operates in a similar multiple-goals world.