Нужно ли техническое образование программисту?

da31baef6cc27ea309f3a9f5adad7c7d

В последнее время часто попадается контент типа «Нужно ли программисту техническое образование?». В некоторых статьях на Хабре вопрос ставится совсем радикально: «Что лучше: образование в ВУЗе или тематические курсы?». В этом тексте поделюсь своими мыслями по вопросу. Для тех, у кого нет времени на прочтение полотна текста, тезисно озвучу свою позицию. Образование нужно получать, но не абы где. Курсы и ВУЗ — синергия, а не дихотомия. Ни от какого образования не будет проку, если вы не отдаете себе отчет в том, что и зачем вы делаете, а также не находитесь в состоянии постоянной практики и работы над собой. Ниже раскрою, почему я так думаю.

Предисловие

Чтобы весь оставшийся текст не выглядел как пустые слова человека, далекого от темы, мне придется немного рассказать о себе. Я закончил бакалавриат МФТИ по направлению «Прикладная математика и информатика». Сейчас обучаюсь в магистратуре МФТИ и преподаю программирование на младших курсах. Около 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, а вашими преподавателями могут быть именитые люди, типа Таненбаума, но если вы не готовы работать над собой и делать что‑то сверх прослушивания лекций — вы просто тратите свое время.

Та же история и с курсами. Да, в среднем на курсах больше практики, чем в ВУЗе, но при этом на курсах куда меньше мест для самообразования. Обычно люди, выбирающие курсы, ожидают, что знания будут принесены на блюдечке с голубой каемочкой, и все, что от них требуется — прочитать/просмотреть теорию, а если будут вопросы — спросить у наставников. Но это оторванный от жизни подход. На реальной работе вам так или иначе придется разбираться в определенных вещах с нуля, и спросить о них может быть не у кого. Так что курс дает вам неплохую практику, но если вы не готовы самообразовываться, то и тут вы рискуете потерять время.

По итогу, ни курсы, ни ВУЗы не сделают из вас специалиста, если вы не будете прикладывать постоянных активных усилий для достижения цели. Причем практика и самообразование должны продолжаться не только в течении процесса обучения, но и в течении всей вашей жизни. Только тогда вы сможете реализовать весь потенциал полученного образования.

В завершении вернемся к исходному вопросу: нужно ли программисту техническое образование? Говоря честно, программисту нужно не столько техническое образование, сколько умение учиться, структурированный каталог знаний, хорошие практические навыки, отвечающие требованиям рынка, и желание самообразовываться. Если вы знаете, как получить все эти навыки минуя ВУЗы и курсы — поделитесь, пожалуйста, этой информацией. Мне такие способы неизвестны, а потому моя универсальная рекомендация: не пренебрегайте ни учебой в хорошем ВУЗе, ни прохождением хороших курсов. А самое главное, не забывайте о постоянной работой над собой.

© Habrahabr.ru