I don't understand the TCP analogy. TCP is incredibly straightforward and scales from a knowledge-required level of almost nothing to very advanced usage like paying attention to ECN markings. Most of the layers above TCP have, over the last 20+ years, had many many problems that related directly to people not wanting to understand TCP, from RMI and similar RPC schemes to things like BEEP/BXXP where the head-of-line blocking problem somehow surprised people.
In the end people working with technologies do need to understand their semantics. I don't mean you should be able to write a competent TCP implementation from scratch, but you do need to understand how the protocol layer makes itself an issue in every layer above it in practice.
In the end people working with technologies do need to understand their semantics. I don't mean you should be able to write a competent TCP implementation from scratch, but you do need to understand how the protocol layer makes itself an issue in every layer above it in practice.