Приличные программы устроены так, что интерфейсы (к пользователю, к сети, к системе хранения данных) отделены от алгоритмов обработки данных. Это чтобы программу было легче портировать туда, где интерфейсы иные.
Мелкие программы - пишет один человек; там разделение интерфейсов-и-алгоритмов часто нарушают.
Крупные программы - пишут много людей; и разделение интерфейсов-и-алгоритмов нужно в т.ч. для разделения труда. И вот тут м.б. востребованы программисты, которые хорошо знают алгоритмы, но плохо владеют вёрсткой.
Я достаточно внятно выразил свои мысли?