Engineering is about weighing trade-offs of different options and determining a course of action afterwards. It's very common in problem-solving, but the challenging part lies in where to draw the line for solutions to be considered reasonably good.
I have always been working in product teams with a keen interest to learn about how things work behind the scenes. It serves me well to form a more solid understanding of how components connect to each other, as well as exposing me to many more "broken window" experiences.
Some coworkers suggested that I learn to live with things as they are in a job. Aside from genuine appreciation for the advice, I'd like to point out the other side of the spectrum — don't confuse compromise with indifference.
Let me share an example.
The login flow, which was shared among different teams, had been broken for years and became an elephant in the room in some meetings because of its tangible negative impact on team productivity.
I complained about it and attempted to raise concerns. Not surprisingly, all I got back was "learn to live with it." There were no questions about what was broken or how much I was affected by it. My opinion was simply ignored rather than challenged. It wasn't until I saw senior members of the team start to teach new members to set up projects with workarounds as the "de facto" standard that I decided to fix it myself.
It worked, although I came up with a compromised solution. Yet, it caught the attention of the infrastructure team, and we worked out an improved solution together. The problem was solved without much compromise in the end.
All of this happened silently, so no one in my team really cared about it, except that their de facto standard way of doing things needed an update. Yet, this time, it was my turn to be indifferent since the problem was already gone.