Выбор данного пути означает, что ваше обучение будет проходить в аккредитованном учебном заведении по такой специальности, как, например, «информационные технологии», «вычислительная математика» или что-либо подобное. Так начинает большинство программистов. Хороший это способ или лучший? Попробуем разобраться.
Преимущества
Давайте сначала взглянем на преимущества этого варианта. Ваши родители наверняка думают, что плюсов тут огромное количество. Может быть, они даже считают, что получение высшего образования является единственным приемлемым вариантом. Я же постараюсь быть более объективным.
Честно говоря, я не фанат высшего образования, но определенная выгода в получении корочек (красных или синих – неважно) все же есть.
Множество компаний все еще нанимают только тех, кто имеет высшее образование
Несмотря на то, что мы разменяли третье десятилетие XXI века, многие компании относятся к вопросу найма сотрудников очень консервативно. Особенно это касается разработчиков.
Объявляя вакансию, многие фирмы желают видеть только тех кандидатов, у кого в кармане имеется диплом аккредитованного высшего учебного заведения или колледжа. Разумеется, это не означает, что в такие компании невозможно попасть без бумаги об окончании высшей школы. Но сделать это будет нелегко. Поделюсь собственным опытом.
Незадолго до окончания колледжа меня наняли на работу в Hewlett-Packard. К тому времени я уже несколько лет работал программистом. Фактически я работал в HP по договору подряда. Обычно Hewlett-Packard не нанимает сотрудников без диплома о высшем образовании, однако я стал исключением. Так произошло, потому что я доказал свою квалификацию, когда работал сдельно.
Мне пришлось преодолеть огромное количество трудностей, чтобы получить предложение о работе. А когда я наконец его получил, то был… разочарован.
Вместо того чтобы принять во внимание мой опыт и способности, меня отнесли к категории сотрудников «без высшего образования». Это означало, что из всего диапазона зарплат мне назначили самую низкую, сказав при этом, что я должен радоваться самому факту приглашения на работу.
Я рассказываю вам все это лишь для того, чтобы показать, как сильно в некоторых компаниях влияет на вашу карьеру наличие документа об окончании вуза. Получив диплом университета или колледжа, вы откроете для себя куда больше возможностей, чем те, кто окончил курсы или является самоучкой.
Тем не менее следует знать, что существуют компании и с другим подходом, которые возьмут вас на работу и без диплома, просто в таком случае выбор будет более ограничен. К сожалению или к счастью, но сделать с этим ничего нельзя. Остается лишь принять ситуацию как есть.
Подытожу: диплом об окончании университета предоставляет больше возможностей.
Хорошее понимание основных концепций информационных технологий
Зачастую бывает так, что программисты-самоучки, являясь очень хорошими специалистами, не обладают некоторыми базовыми знаниями, которые можно получить в колледже или университете. Сегодня эти навыки менее важны, чем практические аспекты разработки программного обеспечения, но я считаю, что каждый разработчик должен знать об операционных системах, структурах данных, алгоритмах, логике предикатов, компьютерной архитектуре и многих других темах, встречающихся в большинстве учебных программ высших заведений. Эти темы довольно сложно изучить самостоятельно, особенно если вы даже не подозреваете об их существовании.
В следующей главе я расскажу вам о том, как в некоторых наиболее крутых компаниях проводятся собеседования разработчиков, в процессе которых интервьюер пытается выяснить, понимает ли претендент все те основные концепции, которые изучаются в вузах.
Я человек весьма прагматичный и обычно выступаю против традиционных систем образования, но также считаю, что большинству программистов необходимо иметь некоторые теоретические знания, не относящиеся непосредственно к написанию кода, но лежащие в его основе.
Несмотря на то что университет с меньшей долей вероятности даст вам практические знания, необходимые для работы в качестве разработчика ПО, большинство учебных программ позволяет овладеть глубокими знаниями о концепциях информационных технологий. Эти концепции могут быть чрезвычайно полезны при входе в более сложные области программирования, такие как работа с системами, работающими в реальном времени, разработка новых алгоритмов и повышение их эффективности. Такие новые сферы, как машинное обучение, также нуждаются в людях с хорошим пониманием этих концепций информатики.
Структурированные знания
Высшее образование ценно тем, что позволяет получить структурированные знания. Есть немалое количество людей, которые не могут работать без конкретного плана действий. Многие начинающие программисты бросают обучение, потому что их попросту пугает тот объем информации, который нужно изучить, а также отсутствие плана. Кроме того, бывает и так, что человеку сложно чему-то научиться из-за недостатка силы воли и самодисциплины.
Если вы узнали себя в одной из перечисленных выше групп, то университет для вас – это лучший способ стать разработчиком. Самостоятельное обучение означает самостоятельную разработку плана обучения, а также самостоятельное определение того, сколько времени ежедневно вы будете уделять программированию. В колледже или вузе есть лишь небольшая часть факультативных дисциплин «по выбору», а все остальное будет строго регламентировано в соответствии с программой обучения. Вам остается просто придерживаться учебного плана.
Стажировки и прочие возможности
Колледжи и университеты нередко предлагают своим студентам стажировки или какие-либо иные связи и ресурсы, недоступные самоучкам. В части компаний существует практика найма сотрудников что называется «со студенческой скамьи», для чего эти фирмы устанавливают с учебными заведениями соответствующие контакты. В этом случае вам будет гораздо проще устроиться на работу после получения диплома.
Во многих колледжах существуют специальные программы, проводятся различные конференции и другие мероприятия, значительно облегчающие поиск нужных контактов и налаживание связей.
Преимущества такого подхода очевидны, если вы хотите начать свою карьеру в по-настоящему крупной компании (такой как Microsoft или Google).
Опытный разработчик может получить работу в одной из этих крупных компаний на основе заслуг и опыта, но для начинающего разработчика ПО стажировки – отличный способ начать карьеру. Поскольку большинство программ стажировки проводятся в колледжах и университетах, то вы должны быть студентом или недавним выпускником вуза, чтобы иметь к ним доступ.
Недостатки
Но не будем забывать и о недостатках, присущих высшему образованию. Да, эта часть книги понравится вашим родителям куда меньше.
Разумеется, недостатки есть у всего, в том числе и у высшего образования. Какие-то из них более очевидны, какие-то – менее.
Затраченное время
Первый и наиболее очевидный недостаток – это время, которое вы потратите на получение диплома. Учеба в вузе занимает минимум четыре года. На протяжении всех этих лет вы не будете работать программистом и поэтому не сможете записать этот период в трудовую книжку или резюме.
Как вы понимаете, за четыре года может произойти очень много событий. Поэтому обязательно подумайте, стоят ли все вышеперечисленные преимущества четырех или более лет вашей жизни. Кроме того, вуз сам по себе отнимает время. Не все предметы будут развивать вас как разработчика. В учебном плане вас будут поджидать и дисциплины общего характера, не имеющие никакого отношения к разработке ПО. Соответственно, в контексте развития вас как специалиста все эти предметы являются пустой тратой времени. Тесты, контрольные, экзамены тоже не принесут много пользы. То же самое можно сказать и про лекции. Особенно если вы знаете более оптимальные способы усвоения информация.