Не так давно, программисты, в большей степени могли полагаться только на свои навыки и опыт в оптимизации кода. Категорически мало инструментов по упрощению и автоматизации процессов было доступно, еще меньше были по настоящему эффективны.
В настоящее время количество опыта и накопленной информации позволяет создавать инструменты (автоматизированного контроля, прогноза, проверки гипотез, элементы искусственного интеллекта) для максимального упрощения рутинных процессов.
Однако у профессиональных программистов обязательно должно присутствовать понимание процессов. И чем больше знаний как функционирует конкретный маленький участок кода, тем больше понимание картины в целом, что необходимо для внесения коррективов. Немаловажно применять определенные законы, принципы и использовать их как часть стратегии (лично мое мнение, что знание принципов ООП должно быть у каждого программиста).