I think the issue is many engineers value things like tests, short functions, interfaces, dependency injection, pure functions, comments, DRY, etc. To them, these things are qualities of "good code", and they spend all their time on this stuff instead of the bigger picture objectives. When you get out of that mindset, then I think "good code" can be equal to "good software".