I think the best engineers are those that can properly balance:
Speed of development
Demands of the short term, and the long term
Understand how code complexity can increase/decrease problems
Complex code may be good for the short term, terrible for the long term
Doesn't over engineer, doesn't under engineer
Understand the necessity of technical debt, and when to clean it
Understand what fires to let burn, and which ones to put out
Have developed a philosophy of engineering with answers that goes "it depends"
Know when to implement hacks and exceptions, and when to architect larger solutions
Good software engineers are able to deconstruct programs. Building is easy. Deconstructing/reconstructing/refactor programs are harder.
They have some product sense
They realize that all code will be refactored eventually, so you need to write code that delivers a product ASAP but with just enough abstractions that allow it to be easily refactored in the future.
This is only learned through experience.
You need to have lived with code base for a long time to know how code evolves and the mistakes people normally make in a code base.
You want to optimize just enough, but don't want to pre-optimize too early.
Generalization: This doesn't favor people who enjoy prototyping, or building multiple apps as it doesn't give them the deep experience with how to build a product for the long term. They only know how to build a product for the short term.