Программирование или программная инженерия.

Сегодня столкнулся с вопросом. Чем программирование отличается от программой инженерии ? Умные учебники уверяют, что программирование является некоторой абстрактной деятельностью и может происходить во многих различных контекстах. Например программировать можно для удовольствия. А можно заниматься промышленным программированием.  Это обычно происходит в команде, и совершенно точно – для заказчика, который обычно платит за эту работу деньги. При этом процессе получить удовольствие получить не так просто. При этом необходимо точно понимать, что нужно заказчику, выполнить работу в заранее оговоренные сроки и результат должен быть нужного именно такого качества, которое удовлетворит заказчика. Чтобы удовлетворить этим таким требованиям, обычное программирование «обрастает» различными дополнительными видами деятельности: разработкой требований, планированием, тестированием, конфигурационным управлением, проектным менеджментом, созданием различной документации. Все эти виды деятельности нужны в данном случае по большому счету для того, что бы в случае неудачи проекта сказать: «Мы все делали по науке, но получилось, как всегда, а мы в этом не виноваты.»