ИТ-индустрия сильнее всех вскрыла кризис современного высшего образования. Ей нужно очень-очень много кадров — с каждым днем все больше — и классические вузы много где не успевают за рынком, ни количеством, ни качеством.
Это порождает споры — надо ли идти на пять лет в вуз или хватит года на специальных курсах. А может и вообще изучить пару книжек самостоятельно и пройти где-нибудь стажировку забесплатно. Если выбирать вуз, то чего от него ждать — что из тебя сделают готового специалиста, или дадут базу, с которой потом самому надо думать, что делать. Преподаватели должны быть теоретиками или практиками?
Вопросов много — четких ответов нет. Порассуждать об этом мне помогли, ребята которые повидали всякое в своих вузах, и хорошенько о них подумали.
Александр batyshkaLenin (Новосибирск, учится на 4-м курсе НГТУ) и Иван Amareis (Челябинск, закончил ЮУрГУ)
Нужна база или современные технологии?
— Александр: Если взглянуть на программу университетских курсов по программированию, то там будет огромное количество всего. Вот список языков, которые были на моей специальности, и он уже ох какой немаленький: C, C++, C#, Java, JavaScript, PHP, Perl, GPSS, Racket, Prolog, Haskell, Python и скорее всего я что-то упустил. По технологиям – от компиляторостроения, до параллельного программирования, систем реального времени.
Я часто вижу, как фулстеков вроде меня критикуют за то, что они разбираются во всём, но понемногу. Мне это кажется несколько смешным, ведь корни этого – как раз в вузах.
— Иван: Про знания, которые дают в вузе, что-то хорошее редко услышишь, особенно касательно IT – мол, с его темпами развития все, что можно преподавать устаревает еще до попадания в учебники. И я готов согласиться, что технологии действительно быстро друг друга сменяют, но вот их основы неизменны.
Операционные системы, компиляторы и интерпретаторы, машинные коды и ассемблеры, структуры данных, базы данных, основы сетевых сервисов — многое ли из этого списка сильно поменялось за последние десять лет?
Может мне повезло с университетом, но про все это мне там рассказали. Плюс какое-то количество математики – и матан, Matlab, и немного динамического программирования со всякими симплекс-методами.
Всё это используется программистами. Более того — в использовании всего этого добра правильно и эффективно заключается 80% программирования.
— Александр: Да, разумеется в вузах много всего фундаментального и, по сути, любой разработчик должен в какой-то мере уметь решить любую задачу – но есть все же потребности рынка, которые можно бы было учитывать и ориентировать программу на них, а не на желании покрыть какой-то абстрактный круг запросов.
Причем я даже не говорю о глобальном рынке. В Новосибирске, например, есть компания, которой требуется куча системных программистов – писать драйвера, ОС и софт для коммутаторов, но вуз будет выпускать тех, кто изучил WinAPI.
— Иван: Все конкретные технологии наворачиваются на базу. Для фронтенда – я сейчас занимаюсь в основном им – это браузерные API, система сборки, парочка хайповых библиотек — ничего принципиально сложного, если база усвоена хорошо.
Так или иначе, я считаю, что лучший способ освоить любую технологию — это понять, как именно она работает. А понимаешь — это когда хотя бы теоретически можешь сделать сам. Если можешь написать React, не возникнет вопросов зачем нужны ключи, почему лучше не использовать коллбеки наживую и какого хрена setState асинхронный.
Очевидно, что для этого нужно неплохо знать инструменты уровнем ниже. Для реакта это JS и DOM, для JS — C и Java, для понимания C желательно уже иметь представление об устройстве процессоров.
Преподаватели важны?
— Иван: Как ни странно, но как минимум в некоторых университетах будущим программистам преподают именно эти низкие и средние уровни, которые не устареют ещё десятки лет, причем зачастую как раз по методу «сделай сам». Накидать основные структуры и алгоритмы обработки данных на одноименной дисциплине, сделать простенький компилятор C-подобного языка – а на закуску можно и эмулятор процессора в качестве дипломной работы запилить.
Всё это сдобрено тонким слоем более или менее актуальных технологий высокого уровня и преподаватели обычно не слишком возражают против использования какого-нибудь C# вместо плюсов или питона вместо матлаба.
— Александр: Что касается преподавателей, то тут как в любой популяции – хватает и плохих и хороших людей. Бывают уставшие, бывают несправедливые, бывают те, кто еще горит своим делом. Бывают такие, кто будто бы обижен на своих студентов за то, что они требовательные.
Я не сказал бы, что испытывал по отношению к кому-то из них злобу или ненависть. Есть у нас преподаватель, по математической логике, так вот сколько мы учимся, столько ему и хлопают стоя в конце пары. По аплодисментам которые слышны на трёх этажах можно понять, что сегодня он провёл очередную блестящую лекцию. Наверняка вы даже учились по его учебникам.
Нужны ли предметы не по профилю?
— Александр: Я заметил, что разговоры об IT-образовании в основном вертятся вокруг профильных предметов предметов. Я могу это понять, но я не представляю себе вуз без всего остального.
Никогда не забуду своих занятий по физике и электротехнике. В реферат по использованию клеточных автоматов на благо физики я вложил всю душу – пришлось даже перевести две статьи, связанные с ними. Физик принял работу и поставил балл, но когда увидел, что сдали остальные, вдвое его увеличил.
На первом или втором курсе у нас был курс по философии и я написал статью на тему «Философия свободы» причем в сборник, который индексировался РИНЦ. Писал её, наверное, месяца четыре, было клёво. Там была критика экзистенциализма Сартра с точки зрения марксизма.
— Иван: В моем случае единственное, что подтверждало какие-то мрачные стереотипы – это полный вакуум относительно выходов во внешний мир. Мы просто сидели на занятиях и не думали о том, чтобы, допустим, выбивать себе гранты или участвовать в конференциях – максимум пара человек ездили на олимпиады. Хотя сейчас понимаю — это все сильно мне бы помогло.
Один раз я случайно вписался на конкурс по .NET-разработке от местной большой компании. И задача была такая, что я сразу понял, как ее решать, но .NET тогда знал плохо и не сообразил, как именно написать реализацию.
Но в итоге это мотивировало меня обращать больше внимания на то, что вообще происходит вокруг. То есть, одно дело обучение, когда какие-то разрозненные вещи разложены по полочкам, а другое – это реальные проекты, когда тебе нужно самому собирать что-то цельное. Для этого нужно не бояться и самому изучить что-то новое.
Это сразу открывает глаза на учебный процесс – начинаешь понимать, где полезные знания, а где необязательные.
На правах рекламы
Мощные VPS с защитой от DDoS-атак и новейшим железом. Всё это про наши эпичные серверы. Максимальная конфигурация — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe.