Немножечко повеяло DDD, в связи с этим могу предположить, что знать науку программисту не всегда обязательно. Ты приводишь пример из сотовой связи, но влияние местности на связь вообще физики должны изучать. К слову сказать, по-моему такие вещи вовсе трудно поддаются расчетам, так что катается автобусик, производит замеры.
Но я тоже с тобой могу согласиться в том плане, что теория очень важна и в ряде случаев гораздо важнее любой практики. Скажем, физика, с точки зрения программирования, ничто иное, как теория в чистейшем виде. Как убежденный теоретик выступаю за познание наук, в том числе и смежных. В этом смысле, если абстрагироваться, да, знания первичны. =) Но только software engineering тоже наука, и какая из них первична в частности, вопрос остается открытым. С одной стороны для запуска, якобы, качественого продукта первичны алгоритмы (прикладная наука). С другой стороны, поддержка плохого кода может вызвать настолько много глюков и багов, что самая лучшая идея будет запорота в глазах потребителя. Им не объяснишь откуда идут глюки от плохого алгоритма или архитектуры, которую невозможно эффективно поддерживать. Намекаю на сильно связанный код, например, делаешь одно - ломается другое и хрен за этим уследишь.
Так что как можно говорить о том что первично, когда и то и другое составляет единое целое, мне не очень понятно. Только баланс, и никак иначе. И вообще твина плохо понимаю, то он спорит про наукоёмкие подходы, а то вдруг - раз - оказывается имелись ввиду банальнейшие вещи. Оказывается программисту нужно быть программистом!