- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

Программист без диплома: что может и чего не может дать «домашнее обучение» в IT - 1 [3]hackNY.org [4] / Flickr / CC [5]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что в итоге

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

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

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

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

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

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

Автор: Университет ИТМО

Источник [25]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/uchebny-j-protsess-v-it/250337

Ссылки в тексте:

[1] здесь: https://habrahabr.ru/company/spbifmo/blog/320496/

[2] тут: https://habrahabr.ru/company/spbifmo/blog/322942/

[3] Image: https://habrahabr.ru/company/spbifmo/blog/324484/

[4] hackNY.org: https://www.flickr.com/photos/hackny/8049783061/

[5] CC: https://creativecommons.org/licenses/by-sa/2.0/

[6] удерживать: https://www.quora.com/Why-is-programming-so-hard-1

[7] говорит: https://thenextweb.com/insider/2016/04/23/dont-need-go-college-anymore-programmer/

[8] дискретной математике: http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328

[9] шаблонам проектирования: https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612

[10] проектированию алгоритмов: http://www.amazon.com/Algorithm-Design-Jon-Kleinberg/dp/0321295358

[11] ментора: https://www.quora.com/Can-I-become-a-really-good-self-taught-programmer

[12] советуют: http://softwareengineering.stackexchange.com/questions/80045/becoming-a-professional-programmer-without-going-to-college

[13] CodinGame: https://www.codingame.com/start

[14] Code Combat: https://codecombat.com/play

[15] ссылке: https://medium.mybridge.co/12-free-resources-learn-to-code-while-playing-games-f7333043de11

[16] исследованиям: http://cacm.acm.org/blogs/blog-cacm/189498-top-10-myths-about-teaching-computer-science/fulltext

[17] эффективными: http://www.wired.com/2014/05/empzeal-active-learning/

[18] используемая: https://books.google.ru/books/about/Peer_Instruction_Pearson_New_Internation.html

[19] доступен: https://openedu.ru/course/ITMOUniversity/PWADEV/

[20] рассказывает: http://nathanmarz.com/blog/the-limited-value-of-a-computer-science-education.html

[21] алгоритмы: http://storm.apache.org/documentation/Guaranteeing-message-processing.html

[22] получить: http://www.sacbee.com/news/nation-world/national/article138152918.html

[23] попасть: http://www.techrepublic.com/article/do-programmers-still-need-a-computer-science-degree-to-land-a-great-job/

[24] Большое интервью: как поступить в Университет ИТМО: https://habrahabr.ru/company/spbifmo/blog/323774/

[25] Источник: https://habrahabr.ru/post/324484/