"First, the Business can easily justify their position: they need profit, and profit comes from sales, and sales come from features, and features come from, among other people, the Programmers. Without more profit, nobody keeps a job. Clearly, the Business has this one right."
Can you explain this? As written, it seems wrong to me. Unless the business just took a bunch of external funding and is operating in the red temporarily, why do we need *more* profit just for us to *keep* our jobs? The reason business generally wants more features is because they want to *grow* into new markets, and new markets require new features. If we already have paying customers, they will continue to pay (and in my experience, get even happier!) if we do nothing other than fix bugs and improve performance and reliability.
(I've had managers try to justify feature-chasing by telling me that customers expect new features, but I've never heard of any customer leaving because of this. We've definitely had customers leave because of stupid bugs, or because we didn't fix some basic performance issues, though.)
This is the fundamental schism I've always seen between business and programmers. Programmers want to take something good(-but-sloppy) and make it great. Business wants to take something good(-but-sloppy) and get it in the hands of a lot more people. This is frustrating to programmers because nothing can ever be truly finished. Imagine the programmers asking the business people to abandon leads that are 90% of the way through the sales pipeline because they think that's good enough. Even if it weren't a financial loser, it would surely feel very professionally unfulfilling.