It's the fundamental debate of "are you training to be a software engineer or a computer scientist?"
SWE's can get away without understanding many underlying concepts if they are going to be writing "business code", that is, handling strings, ints and interacting with databases and APIs.
Computer Scientists and those programming on embedded systems or designing systems/OS/theory themselves, need to delve into the math, algebra, and lower understandings of computers.
I think it's the other way around - computer scientists can get away without understanding the underlying hardware, and do their research based on a basic/abstract machine. Because they are doing research on computer science - how different algorithms can be improved or new data structures (or ML techniques etc).
Software engineers are more likely to need to know the underlying machine and write code suitable for such - because they need to write working/production ready code. It's like applied science, vs pure research science.
SWE's can get away without understanding many underlying concepts if they are going to be writing "business code", that is, handling strings, ints and interacting with databases and APIs.
Computer Scientists and those programming on embedded systems or designing systems/OS/theory themselves, need to delve into the math, algebra, and lower understandings of computers.