Несомненно. Как и любое изучение чего либо. А уж как начнёшь применять программирование, так уж точно хорошую нагрузку на мозг наложишь.
Разрабатывали как-то программу для обработки данных в реальном режиме времени. Данные поступали от каротажной сейсмической станции (прибор, поднимаемый из пробуренной скважины). Сама программа писалась на языке "С", а вот самые важные моменты, ответственные за обработку, на встроенном в "С" языке "Ассемблер".
А там приходилось рассчитывать время обработки прямо по сумме исполнения всех команд по времени. Уложились впритык. Но нужно было сокращать программный блок на "Ассемблере" хоть на одну команду, чтобы иметь запас по времени. Я дня два ломал голову и упростил блок на одну команду. И это было пределом на мой взгляд. Сотрудник, с которым мы на пару разрабатывали эту программу тоже думал над этой проблемой. И вот как-то утром он приходит на работу сам не свой, взъерошенный, не выспавшийся, но довольный. Что такое случилось, спрашиваю? А он говорит, что вечера осенило его, как ещё на одну команду можно сократить. Стал разбираться, но нет, не выходит. Почти до утра просидел над задачей, уже светать начало и тут - ура, удача. Он действительно сократил блок ещё на одну команду "Ассемблера", чего я уже считал практически невозможным. Так хитро перелопатил алгоритм, что, действительно выгадал целую команду.
Увы, нынешним программистам, пишущим готовыми блоками, этого не понять, что такое есть - сократить программу на одну ассемблерную команду. А тогда мы это делали.