Можно ли быть программистом без высшего образования

Программист без диплома: что может и чего не может дать «домашнее обучение» в IT

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

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

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

hackNY.org / Flickr / CC

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

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

Домашнее обучение: к чему надо быть готовым

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

Читать больше книг по теме, чем студенты-программисты

Грег Нойштеттер (Greg Neustaetter), старший управляющий в Egnyte (американская компания-разработчик ПО), говорит, что в случае самообучения придется действительно много читать, дабы заполнить те пробелы, которым обычно уделяют внимание на студенческой скамье.

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

Активно искать коллег и собратьев для обмена знаниями

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

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

Самостоятельно продумывать практическую работу: и серьезную, и игровую

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

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

Что может дать обучение в университете

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

Читайте также:  Можно ли есть сладкое после инфаркта

Прибавьте к этому жесткий график, сессии, не всегда интересные предметы и множество других обязательных к выполнению задач – казалось бы, игра не стоит свеч. Однако в университетах с сильным ИТ-профилем есть немало возможностей, недоступных тем, кто учится самостоятельно:

Информация подается более структурированно

В вузах студентам с первых дней начинают давать фундаментальные знания в выбранной области и «прививают» понимание структуры дисциплины (например, будущим программистам в Университете ИТМО преподают дисциплину «Парадигмы программирования»). Такой подход практикуют во многих мировых университетах, в том числе в американском MIT.

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

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

Можно быстрее наладить контакт с практикующими специалистами

Далее, когда базис усвоен, со студентами начинают работу преподаватели, приглашенные из различных компаний. Они ведут практические занятия, разбирая проблемы, с которыми сталкиваются в своей профессиональной ежедневной деятельности. В частности, Университет ИТМО сотрудничает с такими компаниями как Mail.ru, Яндекс, JetBrains, VisualSVN и другими. Начиная с определенного этапа обучения, студенты могут проходить практику в этих компаниях, где выполняют реальные «боевые задачи».

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

Доступны сложные коллективные модели обучения

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

Примером подобного подхода может быть методика изучения физики, используемая Эриком Мазуром. Она называется «преподавание учащимися» (Peer Instruction) и предполагает вовлечение студентов в активную деятельность по изучению концепций и теорий с последующим объяснением их своим сверстникам.

Практика и теория эффективно дополняют друг друга

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

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

Студенты в рамках этого курса занимаются созданием веб-ресурса на Django — небольшой информационной системы и приложения к ней. Дмитрий Штенников, автор и доцент кафедры Компьютерных образовательных технологий Университета ИТМО, рассказывает слушателям, как его делать, а студенты стараются его повторить. При этом, чтобы не возникало бездумного копирования, слушатели постепенно получают новую информацию в течение всего курса, а затем улучшают свой проект с помощью ранее полученных знаний.

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

Что в итоге

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

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

Читайте также:  Можно ли есть сладкое во время лечения молочницы

Есть определённые задачи, при решении которых университетские знания приходятся весьма кстати. «Пару раз за свою карьеру я сталкивался с проблемами, которые не смог бы разрешить без полученных в университете знаний, — рассказывает программист Натан Марц (Nathan Marz). — Одна из таких ситуаций — составление алгоритмов для работы распределённых систем. Мне требовалось прописать формальное доказательство, чтобы подтвердить их работоспособность». Сами алгоритмы, о которых говорит Натан, легли в основу системы Storm.

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

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

P.S. Большое интервью: как поступить в Университет ИТМО.

Источник

Обязательно ли высшее образование в IT?

Вряд ли среди наших читателей есть школьники, которые размышляют над карьерой, но скорее всего, есть дети-племянники, которые уже спрашивают: «Куда пойти учиться после школы, чтобы стать, как ты?»

В ряде интервью, как с отечественными CTO, так и с западными разработчиками из Google и Tungsten Labs, я раз за разом встречался с мнением, что при приёме на работу высшее образование не является необходимым фактором, а его отсутствие не считается «стоп-флагом» на собеседованиях в западных компаниях. Больше внимания уделяется знаниям и навыкам, которые порой человек получил и изучил самостоятельно.

И тогда мы в Southbridge решили провести небольшое исследование среди знакомых CTO, СEO и руководителей разработки.

Для начала попробуем определиться с предметом исследования. Высшее образование — какие у него плюсы и минусы на текущий момент?

Плюсы высшего образования

1. С ним легче получить работу. ВУЗ, особенно для студента, если тот заранее не обеспокоился созданием своих небольших pet-проектов, является кредитом доверия для HR. Да и для «персональщиков» проблем и волокиты меньше: плоскостопия нет, энуреза нет, зрение среднее, читать кое-как умеет, крестик внизу под договором поставить может, годен, в армию. Все остальному обучим в процессе. Да и при большом конкурсе на вакансию, у HR есть очень большое искушение упростить опять же себе работу и отсекать кандидатов по принципу «есть высшеенет высшего.». Им-то проще, но лучше ли такой подход для компании?

2. Образование расширяет кругозор. Вы получите множество прекрасных, разносторонних знаний… которые в 99% случаев в жизни и работе вам не пригодятся. Но собеседником потенциально вы будете чудесным.

3. Образование даёт студентам специализированные знания. Основы алгоритмизации. Высшую математику. Теорию вероятностей. Математическую статистику. Как программировать на Pascal, Delphi, Perl. Очень круто, позитивно и винтажно. Но лучше, наверное, С++ и Go — правда, эти языки ещё не одобрены в Министерстве образования, но когда-то, лет через 10 обязательно.

4. Высшее образование учит учиться и находить информацию. С этим не поспоришь. Студенты виртуозно обучаются, как упростить себе учёбу с помощью Википедии и чужих репозиториев. А там и Bolgen OS можно написать — и прославиться. Но ещё ВУЗ учит потенциально работать с литературой, усваивать огромный объем знаний за ограниченное количество времени.

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

6. Высшее образование обучает системному мышлению. Оно даёт картину знаний и профессии в целом, и позволяет увидеть взаимосвязи между различными областями знания. Это формирует гибкость мышления.

Минусы высшего образования

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

2. Высшее образование, к сожалению, не учит современному стеку, как я уже упоминал выше. Министерство образования при словах Java, Go, Python, Kubernetes, Zabbix, Prometheus крестится, трижды сплёвывает — и приглашает священника, чтобы окурил все углы в здании. Инерция государственной чиновничьей системы слишком велика, чтобы успевать за живыми тенденциями в среде разработки, поддержки высоконагруженных систем, мониторинга. Исключения бывают — но очень редки, когда преподаватель является настоящим учителем и не просто отсиживается на работе, а беспокоится, с каким набором знания студенты выйдут из стен alma mater.

Читайте также:  Можно ли есть сахар занимаясь спортом

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

4. «Узок круг этих революционеров. Страшно далеки они от народа»(с) Высшее образование чаще всего оторвано от реальной практики от слова совсем. Большую часть лекций читают люди, которые сами знакомы с предметом по учебникам.

5. Невероятно огромные затраты времени. 5 лет каждый будний день по несколько часов. А время – это единственный невосполнимый ресурс в нашей жизни. И потому самый ценный. Подумайте сами, сколько всего может изучить разработчик за 5 лет. А потом сравните, с чем выходят на свет ясный студенты.

6. Нередко бывает, что бывший студент выходит из стен ВУЗа и понимает, что 5 лет шёл не туда и непонятно зачем. Редко в таких случаях получается хороший разработчик.

Обращаемся за консультацией к IT-управленцам

Я создал Google-форму с опросом и попросил Дмитрия Симонова ctorecords разместить в его «Техдирских заметках», https://t.me/ctorecords. И конечно же, я обратился к знакомым CTO и СEO, с которыми уже проводил интервью.

Я задал два вопроса:

1. Считаете ли вы, что высшее образование обязательно для IT-специалиста для приёма на работу?

2. Если в вашей компании высшее образование обязательно при приёме на работу IT-специалиста, то какие ВУЗы вам предпочтительнее в резюме сотрудника?

Кислицын Юрий Иванович, Product/Project Manager, компания Serpstat: «Да, высшее образование необходимо, но зависит от должности и направления. Какой именно ВУЗ непринципиально».

Кузнецов Даниил Сергеевич, Сеть городских порталов Hearst shkulev digital: «Нет, не считаю. Предпочту увидеть НГУ, НГТУ».

Александр Головко, технический директор, Onsec: «Нет, высшее необязательно. Предпочту увидеть в резюме МГУ, Физтех, Бауманку».

Бабак Юрий Анатольевич, руководитель группы разработки: «Нет, вышка необязательна. Определённый ВУЗ тоже в резюме неважен».

Роман Маширов, технический директор, ООО АрБуст: «Сильно зависит от уровня специалиста, если речь про html-верстальщика — совсем не обязательно, если про ведущего — крайне желательно (нужно показать понимание сложности алгоритмов и дискретной математики). Скорее важны специальности: математика, физика, инженерия».

Дудин Андрей Владимирович, Head of Infrastructure, OSA Hybrid Platform: «Нет. Предпочтительных ВУЗов нет».

Эдуард Медведев, CTO: «Высшее не нужно. Соответственно, конкретный ВУЗ неважен».

Саргсян Айк Серехаевич, технический директор, «Юла»: «Нет, не обязательно. Предпочтительных ВУЗов нет».

Куприн Сергей Владимирович, CTO в Simple Invest: «Нет, не обязательно. При нашем объеме найма не прослеживается четкой корреляции между ВУЗом и навыками работника».

Красник А.М., руководитель разработки, АлюсофтБел: «Нет, но получение его в процессе работы приветствуется. Как и студенты профильных специальностей. Для РБ — БГУИР, БГУ, БНТУ».

Габбасов Руслан, руководитель центра разработки Directum: «Бывают исключения (у нас два таких), но статистика говорит в пользу наличия минимального (бакалавр, инженер) высшего образования. Обычно, если нет высшего образования, то это вялый миллениал, который ни одной задачи в своей жизни не доводит до конца. Но с другой стороны аспиранты и КТН — это вообще труба, мы таких уже человек 5 уволили, эти персонажи в принципе не способны к результативному труду. Вообще не имеет значения, какой ВУЗ, хоть аграрный, там все равно ничему полезному не учат. Важно, чтобы с первого курса работал, и при этом сессии умудрялся не заваливать».

Игорь Олемской, гендир Southbridge: «Нет, высшее необязательно. Предпочтительных ВУЗов нет».

Александр, SDM: «Да, в большинстве случаев необходимо. МГУ, МФТИ, МИФИ, ВШЭ».

Синицын Андрей Дмитриевич, Vice President of Engineering @ Namaste Technologies, CTO @ ezGaming: «Нет. Высшее не обязательно».

Даниил, руководитель разработки IoT платформы, Tibbo Systems: «Высшее образование крайне желательно. Не обязательно конкретный ВУЗ, но лучше математические специальности».

Ольга, CTO, «секретная компания» из-за NDA: «Смотря на какую позицию кандидат претендует. Если человек уже опытный (мидл, сеньор), тогда на наличие ВО не смотрим. Если кандидат претендует на позицию джуна (или на стажировку), то при принятии решения будет учитываться, что он учится(-лся) в ВУЗе на IT-специальности. Государственные с очной формой обучения. Конкретные ВУЗы выделить не могу, поскольку основной штат нашей компании не из России».

Романов Андрей, СТО, Mobio: «Да, это хорошая база для правильной работы головы. МГУ, МФТИ, Бауманка»

Мнения разделились. Но всё же хорошо видно, что преобладает ответ «высшее образование соискателю необязательно». Главное, чтобы стек и знания технологий соответствовали рабочим задачам. А всякие книжечки, корочки, переливающиеся голограммами карточки для IT становятся всё менее и менее важными — индивидуальный подход постепенно побеждает формализованный.

Источник