I've always felt that engineering can best be described as "the art of compromise." The more you understand and embody this the more success your engineering projects will have.
This is very easy to achieve in "physical" engineering disciplines. It's remained an elusive idea in software engineering for whatever reasons.