Как стать программистом

Как учить языки программирования. Выбор подхода к обучению.

Поговорим о том, какой подход к обучению выбрать. Это очень важный выбор, ведь неправильное обучение может привести к тому, что Вы можете забросить идею карьеры в IT. Вы ведь здесь не за этим, правда? 🙂

Disclaimer: Данная статья, как и все другие мои статьи, не носит рекламного характера, а содержит исключительно мои собственные измышления на обозначенную тему.

Итак, Вы уже выбрали для себя направление в сфере IT и язык (а может и группу языков), которые хотите изучать. Подобно походам в спортивный зал, Вы можете выбрать ту или иную методику тренировок своего навыка программирования. Кто-то занимается в одиночку (пусть это будет Тип 1), кто-то берет пару индивидуальных занятий с тренером или вовсе занимается только с ним(Тип 2), а кто-то ходит на групповые тренировки (Тип 3). И здесь совершенно очевидно, что новичок первого типа рискует делать упражнения неправильно и повредить свой организм, второй тип порядочно облегчит свой кошелёк на индивидуальные тренировки, а третий тип может недополучить необходимый комментарий или понять упражнение не так, как следовало бы. В итоге каждый тип вне зависимости от выбора подхода к тренировкам рискует бросить это занятие. Я постараюсь описать для Вас обучение в сфере IT примерно таким же образом, обозначив плюсы, минусы и особенности каждого типа обучения.

Тип 1. Самостоятельное изучение языка программирования.

Данный тип можно смело отнести к самым рискованным, но при этом к самым продуктивным (в случае успеха, разумеется) типам обучения. Я не могу сказать, что свой первый язык программирования я выучил сам. Все таки, моя альма-матер МАИ дала мне навыки и привычку к самостоятельному обучению и поиску информации. Поэтому, когда я начал изучать язык разметки HTML и язык PHP, я уже имел представление о том, как мне лучше получать знания, и где эти знания искать. Тем не менее, с момента начала изучения новых для меня технологий до момента первого трудоустройства я не пользовался услугами курсов, а активно инвестировал финансы в книги, а время — в практику и чтение купленных книг и форумов.

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

Также чтение книг подразумевает их вдумчивый поиск. Не стоит покупать все книги, которые Вы найдёте в разделе «Компьютерная литература» любимого книжного магазина. Всегда старайтесь найти отзывы на книги. В большинстве случаев качественную литературу выпускают издательства «Питер», «O’Reilly», «Williams». В каждой области программирования есть свои известные авторы, такие как, например, Брюс Эккель для Java или Мэтт Зандстра для PHP.

Помимо книг по программированию в сети Интернет есть множество ресурсов по обучению программированию (не путать с курсами!), таких как codewars.com и другие. Они позволяют Вам практиковаться на реальных задачах и сравнивать свои решения с решениями других программистов, что инициирует обмен опытом.

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

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

Плюсы подхода

  • Низкая стоимость обучения
  • Наиболее глубокие знания (при правильном подходе)
  • Возможность получить наиболее объективные отзывы об информации

Минусы подхода

  • Высокий риск прокрастинации и отказа от обучения
  • Множество низкокачественной информации
  • Высокие требования к самоорганизации и тайм-менеджменту

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

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

Тип 2. Занятие с наставником.

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

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

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

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

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

Менторов можно найти, например, на этом сайте. Помимо моего профиля Вы найдёте там множество других профессионалов в своей области, с которыми сможете пообщаться на технические и околопрограммерские темы.

Плюсы подхода

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

Минусы подхода

  • Высокая стоимость для платных коучей
  • Сложность в поиске хорошего тренера
  • Трудность формализации процесса при обучении друзьями

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

Тип 3. Курсы.

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

Разумеется, агрессивная реклама лукавит. Максимум, который могут дать курсы программирования — это хороший, крепкий Junior-программист. И это при выполнении многих условий. Ни о каких зарплатах 100+ и должностях senior developer на выходе можете не мечтать. Это в первую очередь курсы! Будь Вы работодателем, Вы бы стали нанимать вчерашнего студента без опыта работы на оклад специалиста с многолетним стажем? Именно поэтому, даже отдав N тысяч рублей за обучение, на выходе Вы получаете фундаментальные знания, помимо которых заработная плата строится ещё и на Вашем опыте работы. Ведь в процессе выполнения различных задач Вы нарабатываете базу собственного кода, технологических решений и ноу-хау. Ни одни курсы Вам этого не дадут. Просто запомните это.

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

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

  • Много практики
  • Ещё больше практики
  • Чтение сопутствующей рекомендованной литературы
  • Общение с преподавателем по непонятным темам

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

  • Критерий истины есть практика. Не бойтесь проверять свои гипотезы кодом. За это не берут деньги и не бьют
  • Нерешаемых задач не существует. Бывают не совсем приятные и простые решения.
  • 99,9% задач имеют больше одного способа решения.

Плюсы подхода

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

Минусы подхода

  • Риск попасть на плохой курс или ленивого преподавателя
  • Стоимость ниже, чем при обучении с коучем, но значительно выше, чем при самостоятельном обучении
  • Расхождение рекламы с реальным результатом

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

Будьте готовы к тому, что в отличии от персонального тренера, на курсах за Вами никто не будет следить и проверять, сделали Вы ДЗ или нет. Вы должны контролировать себя самостоятельно. Преимущество здесь в том, что информация подаётся в подготовленном виде, и у Вас есть возможность пообщаться с преподавателем.

Резюме

Вне зависимости от выбранного Вами типа обучения, Вам предстоит долгий путь, который основывается на кропотливой и большой работе, множестве практических занятий и прилежному подходу к обучению. Если Вы не будете лениться, то мир IT с распростёртыми объятиями встретит Вас, ведь трудолюбивые специалисты нужны везде!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *