I've worked as both a hardware & software engineer. I've generally found that people who make statements like the above, don't really have proficiency across all the layers from silicon to code. Heck, there are probably a few layers that they aren't even aware exist. And yet, despite this "gaping" hole in their knowledge, it barely hinders their productivity at all.
Software, and life in general, is an exercise in abstraction. How do you effectively use abstractions that others have used, without knowing how they really work. How do you figure out which sub-abstractions and intricacies you can safely overlook, because they aren't relevant to your current priorities. And how do you shortlist the ones that you do have to care about, because they have a big impact on your project's success. These are the key skills that effective engineers possess. Trying to avoid the above problems by brute-force learning everything, is going to get you stuck in a quagmire.