ну знаешь, отличие хорошего программиста от так себе, что для так себе есть socket(), send() и recv(), а остальное - магия и работает все идеально.
Как только мы говорим о высоких нагрузках и отказоустойчивости - программист обязан понимать как оно работает и ломается. Чем больше понимает, тем лучше выйдет продукт на выходе и тем меньше боли.
В истории дофига примеров когда очень прикладное отношение вызывало много боли когда оказывалось что в сети пакеты теряются, происходит реордеринг иногда и ваще сеточка моргает. Aphyr в своем блоге раньше много писал про то как авторы баз на этом ломали гарантии.
наоборот. хороший программист пользуется хорошими абстракциями. ему не важно знать, как внутри сеть работает. Ему важно знать, отправлено сообщение или нет.
Если программист в коде упоминает низкоуровневые интерфейсы, то два варианта: или он тупой и не знает, что пишет, или он пишет низкоуровневый сетевой интерфейс. Но я не видел новых интерфейсов уже лет 10