Интересный вопрос, и я сам хотел бы знать на него интересный ответ.
Неспециалисту кажется, что задача программиста — написать программу для компьютера. На самом деле есть другая сторона медали, где задача программиста — описать на языке программирования точно и без серьёзных ошибок (мы же практики) решение поставленной задачи.
С одной стороны, решение должно быть максимально детальным и понятным, что его может проинтерпретировать лишённый воображения компьютер и при этом интерпретировать с приемлемыми затратами вычислительных ресурсов: памяти, времени выполнения и других.
С другой стороны, решение должно быть понятным и читабельным. Программисты обычно работают в коллективе, поэтому код, написанный одним из них, должен быть понятен всем остальным. Но, даже если программист работает в одиночку, ясность кода тоже важна. Все детали большой задачи в голове удержать невозможно — можно помнить только общий план и детально небольшой кусочек. Поэтому если программист будет пренебрегать хорошим стилем, то сам же будет смотреть на свой код и тратить время на вникание в то, что же он делает.
Отсюда вытекают такие понятия, как стиль кодирования, выразительность языка программирования, чистый/грязный код и т.д.
«Код, который писал миддл, может понять только другой миддл. Код, который писал сеньор, может понять даже джуниор» (Миддл — программист средней квалификации, сеньор — высокой квалификации, джуниор — начинающий программист, стажёр.)
Так что программирование — это лингвистическая деятельность на столько же, на сколько и инженерная.
Вообще, я выделяю три уровня владения программированием:
Perl . write-only language
Ага, первый уровень постижения программирования (см. мой ответ). У Вас впереди ещё два. Всё впереди, дерзайте!