We developers are inherently precious about things. Our tools. Our technologies. But we can't afford to be precious about those things too much. In fact, working in cross-functional teams and with other teams means that we sometimes need to compromise.
I was seething.
So upset that, I have to admit, I came close to criticising someone whose opinions I really value, and who is a more skilled developer than I. This was because they said they didn't like the way I was leveraging the CSS cascade: "It makes components leaky and not well encapsulated".
I love the cascade, and have been using it to pass down colours to components instead of re-declaring colours on each paragraph, heading and link inside nested components. I thought this was an approach that everyone should take: use the cascade to our advantage.
I nearly voiced some critical opinions to my colleage. Then our designer spoke up. "We need to stop discussing this between just two people. Involve all of the other developers working on this set of components. Then you can reach consensus and all be in alignment."
He was right. Everyone has an opinion, and whether one is correct or another is isn't up for debate. What truly matters is what the consensus is.
Compromise is a strength, not a weakness. And on any project that involves more than one person (which is, like, all of them), it's the only way of moving forwards.
"The Art of compromise has been our greatest strength" — Clannad