Высшее образование в IT
Читая статьи про высшее образование в IT, я часто вижу, как авторы доносят идею о его необязательности. С этим можно частично согласиться. Но недавно я начал встречать статьи, где автор утверждает об обесценивании высшего образования в IT. Честно говоря, мимо такого я уже пройти не смог. К примеру, вот из недавнего - https://habr.com/ru/companyheadzio/blog/596641/
Сейчас я старший преподаватель на мат-мехе СПбГУ, до этого преподавал на мат-мехе УрГУ (сейчас ИЕНиМ УрФУ) и еще немного на РТФ УПИ (сейчас ИРИТ-РТФ), а еще участвовал в разработке многих курсов. Думаю, мне есть, что сказать по теме высшего образования в IT.
Задроты-самоучки
Сколько себя помню, в IT всегда были задроты-самоучки -- это люди, которые в какой-то момент зафанатели от IT и начали их жадно изучать. При этом сами либо не смогли поступить на IT-факультет, либо уже обучались на другом, не связанном с IT.
Информация для самостоятельного изучения была всегда. Книги Кнута, Страуструпа, Таненбаума и многих других. Форумы, электронные журналы и IRC-каналы (сейчас это видеоуроки на youtube и telegram-каналы) всегда помогали в получении новых полезных знаний.
Поэтому если вам кажется, что в IT стало очень много людей без высшего образования, то вы ошибаетесь. Такие люди были и будут всегда. IT - удивительный мир, а чтобы начать его изучать, вам нужен только компьютер и доступ в сеть.
Онлайн-школы (курсы)
Так как запрос на самостоятельное и дополнительное образование были всегда, то появление онлайн-школ и даже онлайн-факультетов -- это естественный процесс. Такие площадки сильно помогают в освоении нужной информации. Намного лучше (качественнее и быстрее) изучать технологию под присмотром опытного преподавателя, чем ковыряться самому и собирать все шишки.
Благодаря таким школам самоучки могут быстрее устроиться на первую работу. А их уровень будет выше, чем если бы они учили все самостоятельно. В общем, win-win.
Можно ли хорошо зарабатывать в IT без высшего образования?
Конечно, я сам видел многих хороших разработчиков и других специалистов на высоких позициях без высшего образования в IT.
Приведу пример роста разработчика до высокой позиции без высшего образования. Такое развитие я наблюдал несколько раз. Не хочу утверждать, что так у всех. Это всего лишь один из вариантов.
- Вначале человек увлекается какой-то технологией, например, разработкой приложений под Android. И начинает читать форумы, смотреть уроки и что-то пробовать самостоятельно.
- Через некоторое время устраивается на первую работу в виде стажера. Работает почти за еду, но главное, что рядом профессионалы, и он с пристрастием учится всему, что они ему дают.
- Через год или даже раньше переходит на позицию джуниор Android- разработчика. К этому моменту он уже знаком с технологическим стеком в команде, знает процессы разработки и может выполнять простые задачи из трекера. Где-то тут (чуть раньше или позже) он оканчивает/бросает свой непрофильный факультет, понимает, что разработка под Android будет его основным ремеслом, и принимается изучать эту тему еще активнее.
- Еще через 1-3 года переходит на должность мидла. К этому моменту он уже ориентируется в стеке технологий как рыба в воде, отлично знает проект, хорошо справляется с задачами и может даже быть наставником у джунов. На этом этапе он уже получает достаточно хорошо и чувствует себя прекрасно.
- А дальше в зависимости от амбиций и упорства, достигает уровня синьора с соответствующей зарплатой.
- Дальнейшее развитие, как правило, происходит не вглубь, а вширь. Он начинает расширять свой кругозор: изучает новые технологии, платформы и так далее.
И такой путь возможен не только в Android-разработке, а почти для всех узких специалистов: iOS-разработчик, бэкенд на Django, бэкенд на Ruby-on-Rails, тестировщик и так далее.
Так в чем тогда проблема отсутствия высшего образования в IT?
Есть огромное число задач, где недостаточно знания 1-2 технологий и часто требуется, как говорят в вузе, “кругозор” и “база”.
Например, вы пишете Android-приложение для ведения учета лесовозов. Заказчик просит простой функционал: возможности фотографировать лесовозы и вбивать к ним различные значения (сколько бревен повез, когда выехал и т.д). Просто Android-приложение, никакого сервера, так как склад с лесом часто находится вне зоны доступа сети. Вы делаете такое приложение, и все ок. Через время снова приходит заказчик и говорит: “Надоело самому считать бревна в лесовозе, можешь добавить автоматическое распознавание по фотографии?”
Разработчик, который ничего кроме Java/Kotlin и Android в своей жизни толком не видел, будет решать эту задачу в несколько раз дольше, чем похожий специалист, но из вуза. Просто потому что ему придется въезжать с нуля в новую тему.
Помимо этого, без хорошей базы вам будет очень тяжело заниматься системным программированием или решать системные задачи:
- разработка компиляторов и сред разработки
- разработка ОС, драйверов и сетевых протоколов
- разработка новых языков программирования
- оптимизация программ (профилирование, инструментирование)
- верификация программ и алгоритмов
- создание оптимизированных библиотек по типу MKL от Intel
- разработка браузеров
- разработка различных библиотек (например NumPy)
- написание своей Матрицы
- и т.д.
Если этого мало, то почитайте статью: “Как мы отказались от JPEG, JSON, TCP и ускорили ВКонтакте в два раза” (https://habr.com/ru/company/vk/blog/594633/), оцените масштаб и скажите, какой онлайн-курс или онлайн-факультет нужно закончить или в каком направлении начинать развиваться, чтобы заниматься на работе чем-то похожим? Очевидно, что у руководителя этой разработки широкий кругозор, отличные познания в компьютерных сетях и культуре исследований.
Олимпиадники и задроты с высшим образованием
Ну а теперь представьте себе человека, который не только увлекся IT, но еще и поступил на нужный факультет нужного вуза. Через 4-6 лет из просто талантливого абитуриента получается, как мы говорим, "звезда".
Например, благодаря таким вот звездам появился ВК (https://vc.ru/social/7006-genius-programmers). Даже сам Цукерберг отмечал в интервью, что Facebook не удалось захватить рынок СНГ из-за того, что команда Вконтакте не просто быстро копировала все фишки Facebook, но еще успевала добавлять свои.
Не все вузы одинаково полезны
Я могу допустить, что в некоторых вузах и на некоторых специальностях не всегда читаются актуальные курсы. Важно понимать, что вуз вузу рознь. Общее правило: старайтесь попасть в вуз с более высоким рейтингом, его берут не с потолка.
То, как выбирать вуз для обучения в IT и на что обращать внимание -- это тема отдельных статей. В паре абзацев этого не описать.
Выводы
- Можно ли хорошо зарабатывать в IT без высшего образования? Да, если вы кайфуете от этой деятельности и постоянно развиваетесь.
- Если есть возможность поступления в вуз на IT-специальность, я рекомендую поступать. Та база, кругозор и культура, которую вы там получите, будут вам служить верой и правдой долгое время.
- Очевидно, что вуз вузу рознь.
- Есть ли разница между IT-специалистом с высшим образованием и без? Как небо и земля.
- И все вышесказанное относится только к промышленному программированию!