Надо ли учиться в университете?

7.06.2020

Что делать толковым школьникам после окончания школы? Именно толковым в смысле программирования. Классический вариант — идти в университет, но последнее время все чаще становится популярной идея не идти в университет, а идти сразу работать, тем более что толковый школьник-программист действительно сразу после школы знает достаточно, чтобы начать работать и успешно зарабатывать деньги. В этом посте я опишу известные мне плюсы и минусы каждого варианта, и напишу мое личное мнение на этот счет.

Для начала, надо понимать, что университеты бывают разные. Есть, конечно, топовые университеты — в случайном порядке: ИТМО, СПбГУ, СПбАУ (или как они там сейчас называются), ВШЭ, МГУ, МФТИ, может быть, Иннополис и может быть еще один-два университета, которые я забыл (конечно, во всех случаях имеются в виду конкретные факультеты, а зачастую и конкретные кафедры). (Я вообще буду говорить только про российские университеты. Конечно, есть еще вариант вообще уехать учиться за границу, но я про это мало что знаю и потому не буду этот вариант обсуждать. Но в принципе думаю, что к ним применимы все те же соображения.) В этих вузах (а точнее, на соответствующих факультетах и/или кафедрах) действительно дают весьма неплохое образование, причем нередко более-менее адаптированное именно под то, что сейчас нужно знать будущим программистам, и в целом образование может быть довольно толковым (хотя, конечно, даже там есть много проблем).

Во-вторых, есть университеты, скажем так, второго эшелона. Это многие крупные региональные вузы (тот же ННГУ, или допустим УрФУ или КФУ и т.д.), ну и многие другие вузы. Они в целом тоже дают нормальное образование, хотя нередко сильно отстающее от современных реалий именно в плане программирования, и плюс у них часто много разных других странностей.

И есть совсем слабые университеты, какой-нибудь условный Тьмутараканьский педагогический университет. (Ну и есть, конечно, много промежуточных градаций.)

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

Проблемы университетов

Итак, почему существует мнение, что в университете учиться не надо. Основной аргумент, который тут есть — что учеба в университете — это во многом пустая трата времени. Связано это со многими причинами.

Ненужные предметы

Во всех вузах (даже в топовых) есть предметы, которые реально не нужны. Это могут быть предметы гуманитарного цикла — условная экономика или философия или там какое-нибудь ОБЖ или экология или история. В целом, конечно, это полезные знания, и например лично я считаю, что у нас в университете был весьма толковый курс экономики (именно для физиков — рассказывали основы, но интересные и неочевидные), да и из курса философии я многое вынес — но я далеко не уверен, что это действительно обязательные предметы, на которые вот всем студентам надо тратить сответствующее время, учить и потом сдавать. (Например, той же философии, я считаю, мне было бы достаточно раза в три меньше; хотя, конечно, философия — это вообще особый случай, это во многом наследство советской системы.) (И, конечно, я говорю именно про обязательные предметы — конечно, необязательные спецкурсы для тех, кому интересно, вполне имеют право на существование, и даже полезны.)

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

Также сюда зачастую относятся (к сожалению) курсовые и дипломные работы. В адекватно организованной системе курсовые/дипломные работы должны бы отражать то, чем студент будет заниматься после окончания университета, но, к сожалению, во многих вузах «второго эшелона», а, подозреваю, зачастую и в топовых вузах, курсовые/дипломные работы превращаются в какое-нибудь симулирование исследовательской деятельности по какой-нибудь замшелой никому не нужной теме, и эта работа после защиты благополучно выбрасывается.

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

Устаревшее и в целом плохое преподавание

Бывают нужные предметы, но которые плохо или отвратительно преподаются. Конечно, может быть, что просто преподаватель плохо умеет преподавать; но бывает, что преподаватель не следит за современным развитием соответствующей отрасли знаний и преподает по программе и материалам многолетней давности.

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

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

Слишком строгие требования по не особо нужным предметам

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

* * *

В хороших вузах, или точнее даже на хороших факультетах администрация старается по мере сил бороться с этими проблемами. Насколько я понимаю, полностью эти проблемы победить никто не может, но на отдельных факультетах и кафедрах эти проблемы могут быть по возможности минимизированы. В первую очередь это касается «современных» университетов/факультетов (типа тех же ВШЭ, ИТМО или Иннополиса, хотя я конечно не знаю в подробностях, что там проходят), где программа была сделана более-менее с нуля и где нет наследия с давних времен; а также мест, где администрация реально заинтересована в том, чтобы студетны успешно учились, и в принципе где администрация в курсе того, как живут студенты (характерный пример — ВШОПФ, хотя это и не про программирование вообще). Но даже в топовых университетах, как я понимаю, есть места, где таких ненужных предметов относительно много, а уж в вузах второго эшелона такое встречается сплошь и рядом. Грубо говоря, я бы сказал, что в лучших университетах/факультетах КПД вашего учебного времени будет где-нибудь 60-80%, в остальных может быть где-то 40-60%.

(Выше я не упоминал фундаментальные предметы типа матанализа. Есть относительно распространенное мнение, что они тоже не нужны, но это как минимум не очевидно, и по моему мнению — вообще неверно; но про это см. следующий раздел.)

Плюсы университета

С другой стороны, у учебы в университете есть ряд плюсов.

Фундаментальные предметы

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

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

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

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

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

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

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

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

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

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

Но мое мнение, что для большинства таких «просто кодеров» область работы и возможность роста будет все-таки довольно ограничена, поэтому в перспективе 10-20 лет их ценность как сотрудников и их зарплаты будут ниже, чем у таких же толковых школьников, которые все-таки выучили фундаментальные предметы и алгоритмы и потому имеют просто намного более широкий спектр потенциальных вакансий за пределами чисто кодинга, и могут из этих вакансий выбрать наиболее интересные и денежные. (Не говоря уж о том, что далеко не факт, что через 10-20-30-40 лет «просто кодеры» еще будут нужны, но на самом деле это отдельная тема.) Конечно, и «просто кодеры» могут развиваться, набирать опыт и знания и без фундаментальных вещей, и за счет этого становиться более ценными и более оплачиваемыми сотрудниками, но имхо при прочих равных матожидание (!) зарплаты через 10-20 лет у тех, кто знает фундаментальные предметы, выше.

Прикладные предметы

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

Преподаватели и другие студенты

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

Я лично, на самом деле, очень рад, что я учился на ВШОПФе (это по сути самый крутой естественнонаучный факультет в ННГУ, хоть и ни разу не программистский), в компании других крутых ребят, которые тоже хотели учиться и разбираться во всех этих предметах.

Понимание дальнейших перспектив

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

Отсрочка от армии

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

Ну и (с учетом предыдущего пункта) вполне возможно, что после учебы в бакалавриате вы решите пойти дальше в магистратуру и аспирантуру, найдя хорошие толковые места; или наоборот найдете ненапряжную магистратуру и аспирантуру…

Знакомства

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

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

Олимпиады

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

Хотя, конечно, олимпиады сами по себе не являются, на мой взгляд, серьезной причиной для того, чтобы идти в университет. Точнее так: идти в университет чисто ради ICPC имхо не имеет особого смысла. Ну разве что если это вам очень нравится.

Студенческая жизнь

Еще все-таки хочу упомянуть студенческую жизнь. Конечно, это очень многогранное понятие, и я затрудняюсь написать что-то более конкретное тут, но в целом имейте в виду, что ваши 18-19-20 лет бывают раз в жизни, и сразу бросаться в работу может быть и не стоит. Помимо прочего, в университете у вас летние каникулы обычно два-три месяца, да и в течение учебного года нет проблем на неделю-другую куда-нибудь съездить, а на работе у вас отпуск будет четыре недели и всё…

Бюрократия

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

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

Более того, не только диплом может быть важен — я, например, знаю компанию, в которой на должность стажера принимают только студентов университетов (т.е. не учась в университете, вы не сможете к ним поступить стажером); я знаю компанию, в которой есть отдельная квота найма для «недавних выпускников вузов»…

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

(…Хотя еще интересный момент — в идеальном мире диплом должен что-то значить; это в нашем реальном мире наличие диплома большинства вузов, кроме может быть самых-самых топовых, ничего не говорит об уровне знаний человека, а в идеальном мире наличие диплома должно быть само по себе неплохим показателем, и потому в идеальном мире имеет смысл учитывать диплом…)

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

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

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

Дополнительные замечания

Работа во время обучения

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

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

Учеба онлайн

Сейчас очень много возможностей учиться онлайн (та же курсера и т.д.), и поэтому имеет право на существование мнение, что учиться в университете не нужно, все, что нужно, можно изучить онлайн.

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

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

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

Колледжи

Помимо университетов есть еще такая форма после-школьного образования, как колледжи, они же техникумы (не путать с английским словом college, которое нередко употребляется как синоним слова «университет»). В России это считается средним (не высшим!) образованием, и туда идут после 9 класса. В отличие от университетов, колледжи не бывают топовыми, и даже не бывают «вторым эшелоном». Я очень сильно сомневаюсь, что существуют колледжи, которые могут давать хоть сколько-то адекватное образование для программистов. Фундаментальным предметам там почти наверняка учить не будут, возможно, научат чему-то прикладному, но на таком уровне, на котором толковые школьники это освоят самостоятельно и быстрее. Ну и атмосфера в колледжах естественно будет не лучшей; большинство учащихся, скорее всего, не будет разделять вашу жажду знаний.

В общем, если про университет еще можно спорить, нужно там учиться или нет, то про колледж все совершенно очевидно: любой университет «второго эшелона» на порядок лучше любого колледжа, и даже чисто самообразование и самостоятельная работа тоже на порядок лучше, чем учеба в колледже.

Особые ситуации

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

Выводы

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

При этом бессмысленную трату времени, которая действительно может иметь место во многих университетах, можно нивелировать за счет выбора более адекватного университета/факультета/кафедры, а также за счет аккуратного выбора нужных предметов. Ну и за счет работы во время обучения (когда это имеет смысл).

Более того, может иметь смысл после бакалавривата пойти и в магистратуру и в аспирантуру, если вы найдете места, где действительно вам будет нужно и интересно учиться. (В принципе ведь никто не запрещает и поступить в магистратуру совсем в другой вуз, не в тот, где вы учились в бакалавриате.) Но это уже вам самим решать ближе к делу, когда вы будете понимать, чему вас научили, чему вас могут научить в магистратуре, и как это соотносится с тем, чем вы планируете заниматься в жизни.

Но при этом я готов понять и идею не идти в университет, а идти сразу работать. Если вы хорошо все для себя обдумали, и понимаете, где вы будете работать, и понимаете все достоинства и недостатки обоих вариантов — то можете и идти работать. Только понимайте еще два важных момента: во-первых, для этого вы действительно должны быть реально круты; если у вас в школе не было опыта программирования кроме школьного курса, олимпиад начального уровня и пары сделанных на коленке сайтов, то не факт, что вы найдете хорошие варианты работы. И во-вторых, чисто работать тоже не очень правильно. Если уж не учитесь как-то организованно, то уделяйте очень много внимания самообразованию, причем выбирая более фундаментальные темы. Возможно даже не надо идти работать сразу, а год-другой активно учиться и набираться опыта самостоятельно, по той же курсере и т.д., и только потом уже идти работать.

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

И еще раз — это все относится к достаточно сильным школьникам-программистам. Не особо сильным школьникам университет может быть полезен как минимум тем, что сразу после школы идти работать они не смогут, равно как и заниматься самостоятельно. А если речь идет не про программирование (а, например, про физику), то осмысленность обучения в университете тоже возрастает. Потому что это на программистских направлениях вам могут читать ненужные предметы, а нужные читать плохо (и это связано с тем, что программирование — относительно новая, и очень быстро развивающаяся область); преподавание же физики намного более устоявшееся и кажется может быть организовано лучше. Правда, после физических факультетов у вас будет не особо много вариантов, куда идти работать…

* * *

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


Мой курс по алгоритмическому программированию (и подготовке к олимпиадам) для школьников, студентов и всех желающих — algoprog.ru