Think back to when you started writing code. What actually got you interested and motivated to spend all the time and effort to learn to code? Was it the quality of code, or test coverage, or some performance metric? For me at least, the answer quite obviously is no. What instead truly got me going was the idea that I was able to make the computer do something it wasn't doing before.
This feeling, these moments and these results are, in fact, the reason why developers are needed and valued.
Big Bad Business?
Business requirements often get a bad rap for not valuing quality code, for incentivising dark patterns or for being plain stupid. This, though sometimes an understandable sentiment is somewhat lacking in perspective.
What business actually wants is to create a product that solves a problem for a specific group of people (users). A problem that is annoying enough that the users are actually willing to pay more for the solution than the cost of solving the problem is for the business. This idea captures everything from market fit to revenue to profitability.
Developers Focusing on Wrong Stuff?
Developers, on the other hand, get a bad rap for not seeing the big picture. Devs might argue for improving test coverage, maintainability, or God forbid try to speak business and talk about tech debt.
What is often missed in these requests is the reason why such things matter. I do not care about the test coverage number or performance metric itself. What I want is to create a piece of software that is able to do its thing now and in the future, and that does it without incurring unnecessary strain and thus cost for our infrastructure.
Common Ground After All
It might be obvious at this point that there is plenty of common ground here to build upon. Both the business and technical requirements strive for a solution that works, that solves problems and keeps solving them without the price of doing that becoming unbearable.
And this problem solving even is the very reason I fell in love with writing code in the first place!
So Why the Juxtaposition?
I think the clashes pretty much always come down to lack of communication skills on both sides of the table. We developers have a lot to improve on when it comes to explaining why some issues and metrics are better be dealt with before they really backfire. At the same time, the business need easily gets represetend as some vanity metrics or even cold hard cash.
If you're struggling to communicate, my suggestion is simple. First, take a big breath. Second, define the problem and suggested solution. Third, define what is the highest impact to effort improvement that you can do to make the solution even bigger, better or less costly to provide. Fourth, execute.
Note that especially step #2 is extremely easy to gloss over. "We all know what we're here for we've been doing this for 15 years" is not an acceptable answer. Every individual has their own answer to these, and even though a consensus and alignment may have existed at some point, these definitions have a tendency to drift apart unless explicitly managed. This driftage needs to be undone periodically.
After aligning yourselves towards the same target, step three should be quite painless. Even though the estimates on what's important can vary quite a lot, those differences can only arise from people not having the same information available or understandable for them. At this point the competing ideas are not "dev vs biz" but a concrete initiative against another, and those can be more easily scrutinized without the us vs them mindset coming in the way.
Having such a clear goal setting and structured approach to priorization is, in my opinion, the fastest and most efficient way for getting cool shit done together, as a team. If you find step three to cause trouble, take a look at for example the ICE scoring model, which in its simplicity is quite efficient.