Когда новички интересуются, с чего начать изучать программирование, им часто советуют именно вузы — там настоящий computer science, фундаментальные знания и вообще дорога в нормальную жизнь. Не то что надергать в интернете знаний и бежать программировать с умным видом, чтобы потом набивать шишки и позориться перед людьми с «настоящими знаниями».

Я может и не собирался писать код для передовых проектов NASA, но мне хотелось чтобы вуз помог мне научиться вникать в проблемы, которые изо дня в день решают профессиональные программисты. Нужно ли говорить, какую связь с реальностью я увидел в своем вузе? Думаю, все-таки нужно.

Изучать программирование я начал еще в школе, мне это было интересно и вопрос выбора профессии уже тогда не стоял — выбрать надо было только вуз. Сначала я собирался поступать в КПИ или КНУ Шевченка — в общем, в топ по стране, но потом прикинул, что переезжать в Киев, а значит жить в общаге или снимать квартиру, я не очень хочу, поэтому решил поступать у себя в городе, да и потом наслушался про то, как и где учат, так что не жалею что не переехал. Другой вопрос, что я в итоге получил.

Для многих моих сокурсников программирование изначально было чем-то очень абстрактным, что в будущем вроде как сможет помочь устроиться на нормальную работу. Большинство моих одногруппников вообще ничего не понимали из программы, учились по принципу «лишь бы сдать» и в целом с большим трудом, многие путали квадратный корень и квадрат числа, не могли своими словами сказать, что такое логарифм. Но в том, как было построено обучение, я не увидел даже попыток это исправить.

Одно дело лекции, там преподаватель все же сидит перед студентами и может понять, что до кого доходит и как-то объяснить непонятные моменты — но когда дело доходит до лабораторных работ, оказывается, что в лекциях вообще речь шла о другом, и в итоге решить задачи может только тот, кто сам учил нужный материал. Откуда и как он этот материал взял — загадка.

Кому мог я конечно помогал, потому что странно и несправедливо ничему толком не учить, но при этом требовать от студентов. Стоит ли говорить, что читать что-то дополнительно — не самое популярное занятие среди наших студентов.

Я пишу это не свысока, я до сих пор не закрепился в профессии и даже прикладывая, на мой взгляд, много усилий, ощущаю себя прогером-самозванцем. Но в том, что я три года учился не пойми чему, точно есть виновные.

Вот, взгляните хотя бы на программу курса


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

Это никого не волновало — кроме того, чтобы нарисовать таблицу со значениями переменной на каждом шаге алгоритма, достойных решения проблем видимо не было. Код для тех же задач надо вместе с «анализом» (просто текстовое описание алгоритма) напечатать за свои деньги и сдать преподу на проверку. Это, чтобы вы понимали, все происходило в компьютерном классе, вот только компы все это время просто стояли включенными. Собирается ли этот напечатанный на бумаге код, вообще никого не интересовало.

Первые лабы на функции — только во втором семестре. Там же первое упоминание указателей. Причем задача на указатели ровно одна — написать сложение двух чисел, используя указатели. То есть вместо того, чтобы хоть как-то использовать реальные преимущества указателей, показали как не надо писать код под видом чего-то полезного. Можно было хотя бы задать написать через указатели swap — не идеальный пример, ведь есть ссылки, но сложение?

В итоге за весь второй семестр из концепций добавились функции, указатели и структуры — структуры тоже, как вы понимаете, на уровне посчитать что-то там для списка студентов. Зато вот что стали требовать на втором курсе, следите за руками.

Предмет «Дискретные структуры». Лекция про множества. Лектор рассказывает, что это такое, показывает простейшие операции (объединение, пересечение, дополнение), рассказывает про парадокс Рассела, про множество подмножеств и дает утверждение «Мощность множества меньше мощности множества его подмножеств», без доказательства.

Что просят в лабе? Программу, которая выводит множество подмножеств. Я, тот самый человек, который еще недавно скучал над блок-схемами, справился с этой лабой только благодаря знакомому, который меня немного прокачал на олимпиадных задачах и вообще многим штукам научил еще в школе. У многих ли есть такой знакомый? Или может лектору стоило напрячься чуть сильнее и не ограничиваться инфой вида 2 + 2, только про множества.

То же самое с булевыми функциями — лекция про И, ИЛИ, НЕ и стрелку Пирса, зато лаба — написать калькулятор булевых выражений. Конечно, все это можно изучить самому и потом хоть обписаться этих калькуляторов, но зачем в такой ситуации препод нужен? Чтобы рассказать таблицу умножения, а на дом задать считать интегралы? И там, и там ведь цифры. Или чтобы просто напугать одним своим видом и заставить что-то там быстро учить «как взрослый человек»? Простите, но студенты, даже первокурсники — не равно идиоты. И все это в какой-то момент стали требовать писать только на C++, который все ненавидели — язык все же достаточно сложный. Почему нельзя было все то же делать на других языках, я так и не понял — из-за того, что в плюсах есть указатели, наверное.

Но мой топ возглавляет предмет ООП и конкретно препод по нему — опаздывал каждый раз минут на тридцать, а потом задвигал, два варианта, либо натурально школьную программу на уровне что-такое-информация-или-алгоритм, либо пускался в пространные рассуждения про важность ассемблера и «прощупывание низкого уровня». Причем про ассемблер судя по всему просто для красного словца, потому что дальше путаных рассказов про функцию call дело не шло. И это на предмете про ООП!

В лабах опять оценивали блок-схемы, а не код. Причем кода конкретно этот препод явно панически боялся, и когда его просили показать примеры, отговаривался в стиле «да зачем вам примеры, главное концепции». Ну и в целом весь семестр задача по программированию — это написать программу на 20 строк, а к ней блок-схему, UML-схему, еще 50 схем, а еще не забудьте ввернуть где-нибудь наследование, потому что ООП-подход.

Не буду рассказывать, чему учили потом — так или иначе все вертится вокруг схем, диаграмм и преподов, которые боятся кода. Тем более, что под конец третьего курса меня технично выпилили из вуза по причинам, которые я даже обсуждать не хочу, потому что уже убедился, что это к лучшему.

Любой разговор про проблемы IT-образования начинается с того, что IT — быстро меняющаяся индустрия, за которой никак не поспеть, и что вузы в любом случае будут мезозоем по сравнению с реальностью, в которой должны действовать программисты, которые хотят быть полезными и получать за это деньги. Но вот быстро ли меняются базовые алгоритмы и структуры данных? Сильно ли изменились за последнее время базовые принципы ООП? Или SQL? Фундамент для айтишника — это не пустые слова, ему можно и нужно учить. Важно ли на каком языке? По мне, так лишь бы препод его знал, а новизна или даже популярность — дело второе.

Другой популярный заход — что вуз это сплошная теория вместо практики. Но я думаю, из вышесказанного вы могли понять, что понимается в среднем вузе под теорией. Самая настоящая иллюзия науки для тех, кто вообще не хочет ни о чем задумываться и учится в вузе по каким-то одним им понятным причинам.

В 16 лет выпуститься из школы и сразу критически осмыслить свое будущее могут немногие, но это проблема высшего образования в целом, и я не хотел бы в нее углубляться. Программирование — это не магия, это базовая вещь в современном мире — иначе как объяснить немалое количество действующих профессионалов, у которых нет профильного образования? Вряд ли всем им с неба упало понимание основных принципов.

При этом даже если предположить, что все они — невероятные спецы по самообразованию, то откуда тогда такая популярность этого самого самообразования. Книг, курсов, тренингов — реально тысячи, и единственная проблема в том, что там тоже не все гладко и часто приходится методом тыка искать хороший контент. Но можно ли методом тыка перебирать вузы?

Если, опять же, не брать топ, то все это напоминает лотерею, в которой можно выиграть нормальное образование с парой увлеченных преподавателей по основным предметам, а можно просто словить ха-ха на пять лет в вузах типа моего. Вдобавок ко всему многим действительно необходима система, чтобы делать хоть что-то в области, где, в общем-то, в основном нужно сосредоточенно сидеть перед компом и собирать достаточно сложные конструкции.

Но как эта система работает на примере вроде того, что я описал? Распределяет деньги по каким-то странным людям, которые, я уверен, предпочли бы забыть про программирование, но почему-то его преподают. А люди, которые в другой ситуации может и раскрыли бы свой потенциал, оказываются погружены в массовый гипноз на 5 лет, а потом в полуслучайном порядке разлетаются кто куда.



На правах рекламы


VDSina предлагает VDS с посуточной оплатой, возможностью установить любую операционную систему, каждый сервер подключён к интернет-каналу в 500 Мегабит и бесплатно защищён от DDoS-атак!

Комментарии (88)