Я считаю что важными являются, как и умение писать ТЗ, так и навыки написания хорошего кода, а главное умение приметь математические или другие знания для написания действительно классных программ. В университетской программе основной задачей стоит научить правильно формализовать задачу, научиться аналитическому мышлению, получить общие знания в основ сферах и направлениях для данной специальности. Не ставится задача научить студентов какому-то определенному языку программирования или же заточить под какие-то определенные технологии, потому что это вещи которые можно очень быстро освоить при хороших базовых знаниях.
Хотя если лабы по программирования, то все таки, я думаю, что было бы неплохо делать малейшее review кода для выявления ошибок и избежания их появления в дальнейшем (как ни крути, но предмет все-таки называется программирование).
И теперь отвечу на твой конкретный вопрос, что если не хочешь всю жизнь проработать обычным "быдлокодером", то ты должен уметь писать ТЗ, но и кроме этого уметь применять математические методы и алгоритмы на практике.
Cпасибо за внимание и успехов в учебе!