Disagreements at workplace are difficult to resolve. I’ve discovered several rules to solve that fit my working style.
When there’s a deadline or a need of urgence for a decision, in the situation a leader needs to take charge. It doesn’t matter if the leader is someone from the C-level position or an engineer on the team — the only requirement is that this person is somewhat competent and that they will be responsible for the outcome. The leader in charge needs to listen to the arguments of the disagreeing side. The leader needs to make a decision which path to follow. It’s very important to be honest and explicit about the reasons why certain suggestions weren’t accepted. By the way, discarding and ignoring are different things, and team’s leaders need to spread the culture of not being offended when one’s idea or opinion are reasonably rejected (again, not ignored).
When there’s no deadline, but it’s a discussion of potential work, I suggest still identifying a leader for this work. Then I will try to convince the leader at maximum two times, with all of the politeness, kindly presenting succinct arguments. If after two times my ideas don’t get traction, I let it go.
What I noticed over my last few working years, is that rarely decisions that appear to be very important are being followed in their original shape later on. Facts are easily forgotten within organizations (unfortunately). So if there’s a strong opposition, I’d rather continue working with people who are still my friends, than win an argument which will be likely overridden in a few months. Decisions are often temporary, markets change, yet reputation and friendships are hard to gain.
As always, nothing is an absolute except a few things in life, so use your best judgement.