В последнее время часто попадается контент типа «Нужно ли программисту техническое образование?». В некоторых статьях на Хабре вопрос ставится совсем радикально: «Что лучше: образование в ВУЗе или тематические курсы?». В этом тексте поделюсь своими мыслями по вопросу. Для тех, у кого нет времени на прочтение полотна текста, тезисно озвучу свою позицию. Образование нужно получать, но не абы где. Курсы и ВУЗ — синергия, а не дихотомия. Ни от какого образования не будет проку, если вы не отдаете себе отчет в том, что и зачем вы делаете, а также не находитесь в состоянии постоянной практики и работы над собой. Ниже раскрою, почему я так думаю.
Предисловие
Чтобы весь оставшийся текст не выглядел как пустые слова человека, далекого от темы, мне придется немного рассказать о себе. Я закончил бакалавриат МФТИ по направлению «Прикладная математика и информатика». Сейчас обучаюсь в магистратуре МФТИ и преподаю программирование на младших курсах. Около 2.5 лет, в качестве сотрудника научной лаборатории при институте, занимаюсь разработкой приложений и программ для осуществления научных вычислений. Около 1.5 лет работаю python‑разработчиком в российском бигтехе. Помимо основного образования также проходил курсы на образовательных площадках, типа, Практикума. Думаю, такого опыта должно быть достаточно, чтобы рассуждать о поставленном вопросе.
1. Зачем учиться в ВУЗе?
Что такое образование в среднестатистическом техническом ВУЗе в СНГ? Физика. Зубодробительный матан. Архитектура ОС. Программирование на Fortran и прочих доисторических языках с использованием кучи доисторических библиотек, которые не используются в индустрии десятилетиями. Лабораторные работы. Ин.яз. Физра. Пяток сомнительных предметов, наподобие сопромата или аэродинамики пуджа. Все это присовокупляется устаревшими методичками и преподавателями, оторванными от индустрии, иногда от реальности, а иногда и просто самодурами... Что, страшно? Спрашивается, стоит ли тратить время на такое? Не лучше ли посмотреть пару гайдов и стать 300к/нсек, пока другие вычисляют ротор векторного поля?
Мой ответ — обучение в ВУЗе стоит вашего времени. Но не в любом ВУЗе. Да, закончив высшее учебное заведение, вы не получаете мгновенный оффер от компаний FAANG, более того, вы даже не получаете гарантию трудоустройства. Да, в любом ВУЗе есть своя специфика в виде предметов, которые придется перетерпеть. Но при всем при том, хороший ВУЗ даст вам как минимум три вещи, которые будут полезны вам, как специалистам, в частности, как программистам.
Первое и самое главное — хороший вуз научит вас учиться. Учиться — это навык. И как и любой другой навык он приобретается. Дирекция хорошего ВУЗа это осознает и организует образовательный процесс таким образом, чтобы усердный ученик смог освоить навык учения. Поверьте мне, это очень важный навык, который особенно пригодится вам на работе, когда придется сесть и с нуля разобраться в новой технологии, новой библиотеки и т. д.
Но, Миша, спросите вы, что за чушь ты несешь? Какое умение учиться? Разве просмотр лекций на ютуб не показатель того, что я это умею? Нет, не показатель. Умение учиться — это умение понимать, что важно, а что нет. На что стоит обратить внимание при освоении определенной дисциплины, а чем можно пренебречь. Как именно выстроить процесс освоения новой дисциплины и почему. Сколько времени уделить тому или иному разделу для достижения конкретной цели. Как чередовать учебу и отдых. Все это — это умение учиться. И хороший ВУЗ принуждает вас освоить этот навык.
Преподаватели в хорошем ВУЗе — это не просто говорящие головы, которые пришли, рассказали материал и ушли (хотя, есть и такие). Преподаватели в хорошем ВУЗе — это наставники, которые помогают вам освоить не только предмет, но и навык учения. Экзамены в хорошем ВУЗе — это не просто проверка знаний, это еще и проверка того, как хорошо вы умеете учиться самостоятельно. Да, теоретические и практические основы дисциплин вы получите на лекциях и семинарах, но углубиться во все это и разобраться с тем, что вы не поняли, и с тем, что было оставлено на самостоятельное изучение — это ваши шаги в сторону освоения навыка учения.
Вторая вещь, которую даст вам хороший ВУЗ — это структурированный каталог знаний. Почему каталог знаний, а не знания? Потому что, к сожалению, человеческая память неидеальна. Если мы не используем те или иные знания регулярно, они постепенно начинают забываться. Или, используя более уместную аналогию, перемещаются из кэша на жесткий диск, а обращение к этим знаниям сопряжено с определенными трудностями. Так вот, хороший ВУЗ формирует ваш каталог знаний и грамотно структурирует его. Вы четко понимаете какие домены есть в вашей будущей области профессиональной деятельности, к какому домену относится та или иная тема и знаете, с чего начать поиски и исследования, куда и почему смотреть. При появлении ситуации типа «я знаю, но забыл», у вас всегда есть под рукой ваш каталог знаний, ориентируясь по которому, вы без труда найдете место в учебнике, статье, документации, которое стоит перечитать.
Так, полгода назад на работе мне пришлось строить зависимости времени работы системы от входа. Мало того, что нужно было просто построить зависимости, надо было оценить, насколько эти зависимости правдоподобны и протестировать пару гипотез. Оговорюсь, я не аналитик, а разработчик, т. е. построение зависимостей и проверка гипотез — не моя ежедневная рутина. Потому я не помнил ни точной формулы коэффициента детерминации, ни точных формул для расчета P‑Value, но благодаря ВУЗу я знал, что и где мне искать. Ну и, собственно, работа была выполнена, все довольны. Смог бы я такое сделать, не имея структурированного каталога знаний? Сильно сомневаюсь.
Ну и последняя важная вещь, которую даст хороший ВУЗ — единомышленники. Все мои хорошие друзья — это именно университетские друзья. Хороший ВУЗ бросает вам много вызовов, отвечая на которые вы можете завести полезные знакомства на всю жизнь. Почему это касается именно хорошего ВУЗа? Потому что хороший ВУЗ аккумулирует вокруг себя целеустремленное и неглупое комьюнити. Это важно, ведь как известно, лучше потерять с умным, чем найти с дураком.
Резюмирую эту подтему. Учиться в хорошем ВУЗе — полезно для всех будущих специалистов, в частности, для программистов. Учеба в хорошем ВУЗе научит вас учиться, сформирует и систематизирует ваш каталог знаний и поспособствует заведению полезных связей. Открытым остается вопрос: как понять, хороший ВУЗ или нет? Но, увы, этот вопрос выходит за рамки сегодняшнего разговора.
2. Курсы лучше ВУЗа?
С ВУЗом разобрались. Но стоит ли тратить 4 года, а то и все 6 лет свой жизни на то, что можно пройти за год на онлайн‑курсах? Зачем учить ассемблер, C и паттерны, если можно выучить то, что нужно здесь и сейчас и стать 300к/нсек уже через год? Я считаю, если вам позволяют финансы и время, то стоит потратить свои ресурсы и на ВУЗ, и на курсы, но обо всем по порядку.
Курс — это отличный инструмент достижения конкретной цели. Но прежде, чем воспользоваться этим инструментом необходимо все же поставить цель. Для чего вы проходите курс? Если ваш ответ «выучить Python», то это плохая и неутилитарная цель и вы зря потратите время, а вероятнее всего и деньги. В этом случае на первых парах ограничьтесь образованием в ВУЗе. Да, вы не выучите Python в совершенстве, но зато хоть посмотрите как и где этот python используется, а там и цель нормальную поставите. Конечно, на некоторых курсах по python вам показывают области применения, но в основном они ограничены бекендом, тогда как в ВУЗе вы посмотрите как использовать Python для научных вычислений, анализа данных, ML/DL и веб‑разработки. Ничего из этого вы в совершенстве не освоите, но хотя бы поймете, что интересно именно вам, и зачем вам этот самый Python учить.
Если же ваш ответ на вопрос о цели звучит так: я хочу углубить свои знания Python в области бекенда, чтобы сменить сферу деятельности, — то это хорошая цель. Есть четкий критерий, по которому можно понять, достигнута ли цель — смена работы. Есть четкое определение, что конкретно вы изучаете — python в области бекенд. В этом случае берите курс.
Но моя общая рекомендация, как человека, который и курсы проходил, и в ВУЗе учился — берите все, поскольку с грамотной целью курс отлично дополнит высшее образование. Как говорилось выше, ВУЗ дает вам каталог знаний и умение учиться, курс же позволит вам углубиться в определенный домен и получить актуальные для рынка навыки. Имея представления о различных направлениях в рамках выбранной специальности, вам будет легче подобрать нужный курс. Умея учиться, осваивать курс будет значительно легче. Имея каталог знаний, вам легче будет понять, что вы упустили при изучении курса и куда копать дальше для профессионального роста.
Просто курс из разряда «N с нуля» без четкой цели в лучшем случае научит вас основам языка и основам некоторых фреймворков, актуальных на момент прохождения курса. Станете ли вы от этого программистом? Да нет, конечно. Вы будете дженерик джуном, работа которого легко заменяется нейросетью. Я знаю многих людей, которые пришли в профессию с помощью курсов, имея при этом высшее образование и четкое понимание того, что они хотят. Но я не знаю ни одного человека, который бы попал в профессию или задержался бы в ней надолго, просто пройдя курс «N от нуля до сеньора за полгода».
3. Самое важное
Курсы и ВУЗы — это, конечно, хорошо. Если осознанно подходить к выбору ВУЗа и курсов, то ваши успехи в области освоения специальности и, в частности, программирования будут весьма ощутимы. Однако до сих пор я не сказал ни слова о ключевых составляющих успешного освоения профессии: постоянной практики и самообразовании. Во многом, именно поэтому простой просмотр видеолекций не поможет вам достичь значимых успехов. И именно поэтому, пустая практика без рефлексии не сделает из вас профессионала.
Да, хороший ВУЗ может научить вас учиться, но это не всегда так. Если вы не готовы честно закреплять практически весь пройденный материал, и если вы не готовы заниматься самообразованием и работать над собой во внеучебное время — никакого толку не будет. Вы можете учиться хоть в MIT, а вашими преподавателями могут быть именитые люди, типа Таненбаума, но если вы не готовы работать над собой и делать что‑то сверх прослушивания лекций — вы просто тратите свое время.
Та же история и с курсами. Да, в среднем на курсах больше практики, чем в ВУЗе, но при этом на курсах куда меньше мест для самообразования. Обычно люди, выбирающие курсы, ожидают, что знания будут принесены на блюдечке с голубой каемочкой, и все, что от них требуется — прочитать/просмотреть теорию, а если будут вопросы — спросить у наставников. Но это оторванный от жизни подход. На реальной работе вам так или иначе придется разбираться в определенных вещах с нуля, и спросить о них может быть не у кого. Так что курс дает вам неплохую практику, но если вы не готовы самообразовываться, то и тут вы рискуете потерять время.
По итогу, ни курсы, ни ВУЗы не сделают из вас специалиста, если вы не будете прикладывать постоянных активных усилий для достижения цели. Причем практика и самообразование должны продолжаться не только в течении процесса обучения, но и в течении всей вашей жизни. Только тогда вы сможете реализовать весь потенциал полученного образования.
В завершении вернемся к исходному вопросу: нужно ли программисту техническое образование? Говоря честно, программисту нужно не столько техническое образование, сколько умение учиться, структурированный каталог знаний, хорошие практические навыки, отвечающие требованиям рынка, и желание самообразовываться. Если вы знаете, как получить все эти навыки минуя ВУЗы и курсы — поделитесь, пожалуйста, этой информацией. Мне такие способы неизвестны, а потому моя универсальная рекомендация: не пренебрегайте ни учебой в хорошем ВУЗе, ни прохождением хороших курсов. А самое главное, не забывайте о постоянной работой над собой.
Комментарии (17)
Hivemaster
25.07.2024 17:12+1Так как существуют программисты без высшего образования, оно как минимум не обязательно
Трудоустройство диплом не облегчает, так как смотрят на его наличие только в махровой госухе, куда никто в своём уме не пойдёт. Зарплаты у дипломированных программистов тоже не выше. Так что с сугубо прагматичной позиции польза сомнительна.
Часто говорят о том, что универ даёт связи. Это байка из мира лиги плюща. В нашей реальности редко кто обрастает полезными знакомствами со студенческой скамьи, куда больше в этом плане даёт работа.
Есть места, конечно, где без вышки не справиться, но это околонаучная область, в которой одна вакансия появляется раз в десять лет.
MrNutz
25.07.2024 17:12+2При выборе между человеком с дипломом и без выберут первого. Это реальность.
Существование программистов без диплома никак не говорит о его бесполезности. Вопрос качества этих "специалистов". На примере Боинга, Микрософта и даже Интел хорошо видно к чему приводит засилье таких "специалистов".
В свое время искал себе людей в проект и даже попадающиеся переквалифицировавшиеся из других областей это просто жесть. Ни понимания основ, ни понимания процессов. Зато куча пройденных курсов, самоуверенность и гонора. Ну и как следствие неадекватные зарплаты ожидания.
Samidara
25.07.2024 17:12От куда такие выводы что именно некие "специалисты без ВО" виноваты в каких-то проблемах крупных компаний?
От куда такое предвзятое отношение?
Позвольте угадаю: вам за 40 и вы непрограммист.
Samidara
25.07.2024 17:12+1Чего молчим и минусуем?
Видимо, попадание было в самую точку)))
Это вообще довольно распространенная проблема во многих it компаниях, когда во главе стоят НЕпрограммисты, особенно если они себя еще и умнее программистов считают. Суровая правда такова, что каждый конкретный разработчик индивидуален и оценить реальные способности конкретного программиста может ТОЛЬКО другой программист и только спустя 1-2 месяца совместной работы. Конечно, это никак не вяжется с мировоззрением "эффективных менеджеров" и "во всем правых начальников", которым удобнее оперировать какими-то метриками, фильтрами и ярлыками.
Полагаться при найме на наличие ВО - все равно что полагаться на карты таро. Не дает это 100% гарантии компетентности нанимаемого сотрудника. Как бы вам этого не хотелось.
Hivemaster
25.07.2024 17:12При выборе между человеком с дипломом и без выберут первого.
А стоило бы выбирать того, у кого знания и навыки больше подходят под конкретную вакансию.
На примере Боинга, Микрософта и даже Интел хорошо видно к чему приводит засилье таких "специалистов".
На все 100% уверен, что во всех перечисленных как раз работали исключительно дипломированные специалисты.
Ну и как следствие неадекватные зарплаты ожидания.
Вы требуете вышку и платите целых сто тыщ, а они к вам не устраиваются? Ух негодяи!
ptr128
25.07.2024 17:12А стоило бы выбирать того, у кого знания и навыки больше подходят под конкретную вакансию.
Иногда, это имеет смысл. Но чаще важнее как раз базовые знания и способность к освоению нового. Потому что в IT очень быстро появляются новые технологии и устаревают старые. А если от специалиста требуется еще и умение быстро погружаться в проблемную часть, которая все же разная на разных проектах, то оказывается выгодней потратить месяц на обучение сотрудника с хорошими базовыми знаниями, чем не знать, куда его девать после завершения текущего проекта.
Естественно, я основываюсь больше на собственном опыте работы в системных интеграторах с перерывами на отдых в штате у бывших клиентов. Проекты все время разные и каждый раз приходится изучать то непрерывное производство, то финансы, то биллинг коммунальных услуг, то логистику - и так до бесконечности. Из средств разработки и инфраструктуры так точно, хоть что-то новое требуется изучать почти на каждом проекте.
prishelec
25.07.2024 17:12Общался я как-то с основателем небольшой IT-компании (Челябинск) и программистом по существу.
Это было лет 12 назад. Говорил что найти специалистов крайне тяжело. Приходят и говорят сразу: мало что понимаю, красный диплом хочу много денег. Хвалил тех кто с фриланса приходят.
sergey-gornostaev
25.07.2024 17:12+2Если вы знаете, как получить все эти навыки минуя ВУЗы и курсы — поделитесь, пожалуйста, этой информацией.
Я просто читал книги и экспериментировал.
gexeg
25.07.2024 17:12Однозначно да.
Некорректно сравнивать ВУЗ с курсами. ВУЗ это целый набор дисциплин, иногда очень узкоспециализированных, а курсы - какая-то конкретная тема, достаточно простая, рассчитанная на массы, в основном с посредственной теоретической базой. На курсах вы получаете очень ограниченные навыки.
Для того чтобы изучить язык программирования конечно не нужно идти в ВУЗ, даже на курсы можно не ходить (есть куча книг, видео, статей). Для того чтобы админить ось - тоже не обязательно (хотя и здесь можно найти исключения).
Но есть круг задач, которые требуют серьезной теоретической базы, в обширном кол-ве областей.
Конечно можно пройти N специализированных курсов, но чем тогда это отличается от ВУЗа?Сможете ли вы, пройдя какой-то курс, сделать что-то из последних достижений науки?
Давайте попробуем найти ученых без вышки, нобелевских лауреатов? (по литературе найдете)
Liprekon
25.07.2024 17:12Я считаю нужно конечно. Но, смотря что он будет разрабатывать этот программист.
Я когда учился на программиста "разработка и создание программного обеспечения", у меня было 1256 часов (точно уже не помню, надо диплом найти и прочитать)) высшей математики, 10 дисциплин. Сума можно сойти от решения некоторых задач. Если не запускаешь ракеты в космос, не связан с криптографией, то особо оно и не надо!)
zmiuko
25.07.2024 17:12Однозначно и обязательно! Это очень глупый вопрос. А нужно ли ребенку попу подтирать? С людьми без технического образования происходит тоже самое. Конечно, иной самородок достоин пятерых, но ещё в школе определяются те кто освоили программу и те, которые нет. Так и в мире программирования, те же люди. И вы хотите и без того малый процент надежды в них изъять? Такое предполагать, как минимум, не педагогично, а уже потом антинаучно
S_gray
25.07.2024 17:12Непонятный момент в статье: автор всё время упоминает какое-то "высшее техническое образование" и при этом, скажем, сопромат и аэродинамику занёс в раздел "сомнительных предметов". Или это ирония была? Или автор под "техническим" понимает исключительно образование, связанное с IT?
Нужно ли специализированное высшее образование? Конечно, нужно, даже если это всего четыре года (мне, как представителю старой школы, сложно примириться с четырехлетним сроком обучения). В 60-е годы это называлось, ЕМНИС, "младший инженер", потом, правда это отменили (видимо, когда инженеров стало достаточно для периодической отправки на сельхозработы).
Интересно, почему вопрос о том, нужно высшее образование или нет, возникает именно в IT-тусовке? Что-то я плохо себе представляю такую дискуссию среди, скажем, врачей или авиаинженеров...
NineNineOne
Короткий ответ: не нужно.
Sdolgov
Ответ еще короче: нужно.
zmiuko
Это не программисты будут без технического, а вечные сосунки. Лучше меньше, да больше - в итоге миновать фатальные риски. Я бы еще драл за знание первичных архитектур за сколько "клеток" потрачено на экране в единицу времени, какой там память или техническое. Человек в этой профессии должен быть серьезным, а не размазня. Размазня играет с библиотеками и клеит шильдик: типичный конфигуратор-эвакуатор. Кодер - это отец, глыба, аз и омега. Стыдно разум иметь, а образования нет. Ну, значит, настолько ты и способен и проект будет таким же: с потолка
onets
Своеобразный получился опрос. Я проголосовал за нужость вуза. И мне есть что сказать. Лонгрид.
-----
Я закончил специалитет (5 лет) с дипломным проектом. Как нам тогда рассказывали, дипломный проект это ближе к практике. А дипломная работа ближе к теории. Специальность - прикладная информатика в экономике.
Вузы бывают разные. Я учился в третьесортном ВУЗе, но у нас были приходящие преподаватели из регионального политеха. И позже мне довелось общаться со студентами регионального гос универа с той же специальности. И насколько я смог сделать вывод по их рассказам - у меня было лучше. Гораздо позже я узнал про лекции стенфорда на ютубе. Небо и земля по сравнению с моим вузом. Собеседовал человека из Инопполиса. Мне понравился тамошний подход к образованию. Так что, осмелюсь предположить, что какой-нибудь МГТУ будет где-то посередине.
Чему меня научили? Системный анализ, бизнес-анализ, проектирование информационных систем, "алгоритмы", языки программирования, теория реляционных БД, и бух учет из раздела предметной области. И это действительно такой систематизированный каталог знаний. Устаревший. Нам рассказывали только про водопад по 19-ым и 34-ым гостам, а языком программирования был паскаль и делфи. Я сам учил C#.
Я так же, относительно недавно, попробовал онлайн курс - яваскрипт, браузерный и нода. По сравнению с вузом - онлайн курс, это аналог одного из курсов в вузе. Он систематизировал обрывочные знания по конкретной технологии. Но проектировать программное обеспечение и задавать правильные вопросы по бизнес-процессам я бы не научился.
Вместе с тем в моей группе учились люди, которые считали, что вуз не нужен и не ходили на пары. Разумеется в каждой группе есть такие. Я даже не знаю, зачем они поступали туда. Каждый из них устроился в жизни по своему.
Но среди них был один - он сразу, после поступления на первом курсе сказал "вуз не нужен". Перестал ходить на пары и пошел работать, но сдавал экзамены и курсовые работы. Я ими восхищался. Он на паскале, в консоли, в текстовом режиме рисовал экраны, кнопки и интерактивное взаимодействие, ну вот типа как Norton Commander. И это был единственный человек в моем окружении - как ходячая википедия и чат гпт в одном лице. Я однажды спросил у него вопрос про сис админство (он в тот момент работал сис админом) и он мне сходу выдал несколько вариантов что происходит и что делать.
А что в итоге? Мы оба стали работать программистами. Он посвятил себя АСУ ТП, а я бизнес-приложениям и энтепрайзу. Никакой особо разницы, но кажется я зарабатывал больше. Хотя, я все равно думаю, что он был (бы) круче меня.
А в конце немного про олдскульных джунов с вузовским образованием и таскистов после современных онлайн курсов, вкатывающихся в айти.
Я же ведь тоже был джуном. Моя первая работа? Я пришел и мне дали техническое задание, UI-контролы (DevExpress) и самописную ORM (в те времена их еще особо не было - NHibernate и LINQ-to-SQL появились только примерно в 2008) и попросили закодить проект. Это должно было быть desktop приложение под винду.
Для меня это не составило проблем. Я уже знал что нужно делать. Меня научили проектировать информационные системы. И на основе ТЗ я выработал условный ТП. Я понимал, что за системой стоит бизнес-процесс и задавал вопросы по нему соответствующим людям. Меня научили системному мышлению и я разбивал задачи на более мелкие. Меня научили теории баз данных и для меня не составило труда спроектировать ее, со всеми отношениями и ограничениями. То есть (я только сейчас это осознаю) - я в качестве джуна решил задачу на довольно абстрактном уровне. Хотя у меня был говнокод - я писал бизнес логику в обработчиках button1_Click и использовал guid в качестве первичного ключа во всех таблицах.
И вот говнокод я потом подтянул. Но, полтора десятка лет спустя, нанятый условный таксист после онлайн курсов - в принципе не способен работать на таком же абстрактном уровне. Ему недостаточно просто поставить задачу. Ему надо все расписать в деталях, за него надо подумать, за него надо понять, что ему надо спросить по бизнес-процессу или по требованиям, за него надо спроектировать решение, за него надо придумать тесты, и вот только после всего этого откодревьювить его говнокод. И это становится не оптимальным. Мне проще и быстрее сделать все за него. Он не нужен.
Так что, нет, так не пойдет. И вот с этого момента, я считаю, что вуз нужен. Да, там будут такие люди, как тот скиловый 16 летний (на момент поступления) будущий АСУ ТП-шник и они обоснованно скажут "вуз не нужен", но не будет таких как таксист с онлайн курсами.