Off the top of my head, a good software engineer is not just a coder. They develop solutions to problems that provide value. They do so under constraints of time and resources. Beyond that, you then can get a feeling of the level of the engineer depending on the following:
- code: maintainability, instrumentation, extensibility, readability, testability, performance, handles tradeoffs in complexity, and the time to create the code.
- projects: can work independently or in a team, can work with individuals across teams and disciplines, can influence project direction, can architect solutions and choose designs and supporting tooling based on tradeoffs, can deliver on a reasonable time scale.
- people: can mentor and be menteed, can collaborate well, can lead or follow, and can inspire best practices.
I'm sure there is much more, but that is off the top of my head shortly after waking up.
- code: maintainability, instrumentation, extensibility, readability, testability, performance, handles tradeoffs in complexity, and the time to create the code.
- projects: can work independently or in a team, can work with individuals across teams and disciplines, can influence project direction, can architect solutions and choose designs and supporting tooling based on tradeoffs, can deliver on a reasonable time scale.
- people: can mentor and be menteed, can collaborate well, can lead or follow, and can inspire best practices.
I'm sure there is much more, but that is off the top of my head shortly after waking up.