Про проблему превалирования теории или практики в обучении программистов очень хорошо написал Ларри Константин, книга "Человеческий фактор в программировании". Сейчас ее под рукой нет, процитировать не могу, но суть такова, что узкая специализация дает эффект сразу же, люди могут прямо после института влиться в активную работу. Теоретическая подготовка, напротив, предусматривает некий период, в котором производительность не очень высока, зато потом теоретики стабильно обходят практиков.
Когда я учился, мне казалось (и продолжает казаться до сих пор), что полезно совмещать изучение теоретических вопросов с изучением современных технологий с упором на первое, потому что второе более основательно изучат на практике - на работе. Однако часто теорию преподают пожилые преподаватели, которые не знают современных технологий. В то же время молодые преподаватели часто игнорируют теоретические вопросы - оттого и результат вроде описанного про СУБД.
Работодатели, нанимая программистов, указывают перечень языков/технологий, которыми должен владеть претендент. Студенты, подумывая о будущей работе, хотят соответствовать требованиям работодателей (в их, студентов, представлении слова "соответствовать"), поэтому очень обижаются на вузы, где вместо модных Java или ASP.NET от них требуют осваивать Turbo Pascal. У студентов создаётся сильное ощущение того, что учат ненужному, что учат неправильно. И если человеку в школе нравилось программирование, он шёл учиться, шёл за знаниями, с "горящими глазами", для такого человека наступает глубокое разочарование. У нас в вузе оно называется "кризис 3-го курса". До 3-го курса студенты терпят разную математику, структуры и алгоритмы обработки данных, гуманитарные дисциплины, надеются, что "потом" их ещё обучат тому, что перечисляется в требованиях работодателей. А к 3-му курсу надежды рушатся, терпение лопается, и начинается реакция. Поскольку я работаю как раз с проблемным курсом, для их психологической разгрузки в заключении курса я провожу вместо лекции беседу по душам "о жизни", где они всё выговаривают, что думают, а я рассказываю о разных фирмах, компаниях, предприятиях (благо, уже повидал всякого) и объясняю, чем работа отличается от учёбы, и что на самом деле стоит за требованиями работодателей. Также объясняю, чем получение высшего образования отличается от обучения на курсах каким-нибудь технологиям.
Любопытно то, что, поработав, бывшие студенты начинают отличать зёрна от плевел и обнаруживают, что в вузе несмотря на всё их неприятие и их обиды их всё же подготовили как инженеров, что они привыкли самостоятельно решать задачи, что теория программирования инвариантна всем модным технологиям, и знание теории позволяет без особых проблем осваивать входящие в моду технологии, потому что после забывания мелочей в памяти остаётся главное - систематизированное знание. И таких знаний нет у тех, кто вместо вуза заканчивал спецкурсы, на которых натаскивали на конкретной технологии методом зубёржки и отработкой до автоматизма выполнения различных операций.
Преподователи специальностей должны быть не только чистыми преподователями, но так же учавствовать в каких-либо научно-технических работах. Это даст возможность преподователю привлекать к таким работам студентов.
Эта идея витает давно и потихоньку реализуется по мере развития экономики. По крайней мере я выступаю не только как преподаватель, но и как представитель работодателя - студенты учатся охотнее, зная, что мои требования не "с потолка" взяты. Постоянно разные фирмы привлекают студентов в проекты на некритические для проектов позиции. Одно но: выбирают с потока лишь около десятка студентов. Другое но: обычно в потоках кроме десятка студентов остальные ничего не хотят и профессию выбрали случайно или в силу моды, или с целью избежать армии (автор статьи прав относительно КПД не ведущих вузов, равному лишь нескольким толковым специалистам с каждого потока из нескольких групп).