Во многом это действительно так. Можно сколько угодно смотреть на красивые "академические" работы по компиляторам, но потом выясняется что в реальности программы:
1. Пишутся не по стандарту, но должны работать
2. Содержат ошибки (много ошибок), но должны работать
3. Написаны самым тупым и непредсказуемым образом, но должны работать и быстро
4. Время компиляции и потребляемая память оказываются конечными
5. Ошибки в алгоритмах оптимизаций могут всплывать через 10-15 лет, и их надо как-то исправлять, не ломая совместимость и производительность
Кажется, что на разных стадиях жизни проекта есть потребность в разработчиках разного характера. В самом начале, когда необходимо продумать общую идею, архитектуру, заложить точки роста и проч., "академисты" более уместны. А вот дальше начинается "проза жизни" и в дело вступают навыки из совершенно неакадемических областей :)