Статьи

Как выучить языки программирования быстрее

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

Как выучить языки программирования быстрее

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

Читать современный JavaScript
Будьте в курсе развивающегося мира JavaScript

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

В то время я прочитал слишком много книг на 800 страниц, чтобы не сосчитать, и от этого упражнения мне было мало пользы; хотя мои руки могли вырасти от ношения книг такого размера.

Я не хочу, чтобы вы делали те же ошибки, что и я, и если у вас уже есть, я хочу показать вам лучший способ.

Учимся быстро учиться

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

Как я уже говорил, я потратил много времени на изучение и преподавание различных технологий.

Я выучил целые языки программирования в течение нескольких недель, а затем развернулся и преподавал на них курсы.

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

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

Вот как это работает.

Основной процесс

Основная идея довольно проста.

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

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

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

Слишком много людей стремятся чему-то научиться, но не могут измерить, добились они успеха или нет.

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

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


Ищете ресурсы для улучшения своих навыков программирования? Проверьте эти замечательные ссылки:

Посетите SitePoint Premium, чтобы узнать больше книг, курсов и бесплатных скринкастов.


Затем вы собираетесь использовать некоторые из этих ресурсов для создания фактического плана обучения.

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

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

По сути, вы сосредоточитесь на обучении , о чем мы поговорим через секунду.

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

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

Наконец, вы берете то, что узнали, и учите этому кого-то другого.

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

Важно то, что вы каким-то образом реорганизуете мысли в своей голове таким образом, чтобы сообщать их внешнему миру.

Это место, где обучение меняется от знания к пониманию .

Вот и все.

У нас есть базовая формула, которую вы можете применить практически ко всему, что хотите быстро выучить.

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

Теперь давайте поговорим более конкретно об обучении и развитии технических навыков.

Учись, делая

Я считаю, что все мы учимся лучше всего , но когда дело доходит до технических навыков, это имеет первостепенное значение.

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

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

Это может быть очевидно для языков программирования, но можете ли вы научиться использовать управление исходным кодом, просто читая о синтаксисе?

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

Как учиться, делая

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

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

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

Вам будет намного легче учиться чему-то, если у вас есть немедленное заявление на это — реальная причина, чтобы изучить это.

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

Но что, если у вас нет острой необходимости? Что если вы изучаете технический навык, потому что хотите получить работу там, где вам нужно его использовать?

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

Пример обучения деланием

Давайте посмотрим на реальный пример.

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

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

Что если вместо этого ваша цель заключается в создании базы данных для хранения коллекции фильмов, которыми вы владеете?

Что, если вашей целью было сделать запрос к этой базе данных, вставить новые фильмы, удалить фильмы, обновить заголовки и т. Д.?

Что, если вы хотите создать простое приложение, которое позволит вам получить доступ к базе данных и делать все это?

Теперь у вас есть цель и способ учиться на практике.

Теперь у вас есть чем заняться.

Как вы подходите к изучению реляционных баз данных?

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

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

Подумайте, сколько информации вы будете хранить, когда будете работать, и учитесь таким образом.

И разве это не будет намного веселее?

Как я преподаю технические навыки

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

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

Есть смысл?

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

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

Есть три основных вещи, которые я пытаюсь научить кого-то, когда я преподаю технический навык:

  • Большая картина: что вы можете сделать с технологией?
  • С чего начать
  • Вам нужно знать 20%, чтобы быть наиболее эффективным

Давайте разберем каждую из этих вещей.

Большая картина: что вы можете сделать с технологией?

Я всегда начинаю с большой картины.

Я верю в силу Google, чтобы решить большинство ваших проблем, но вы не можете что-то Google, если вы не знаете, что это такое.

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

Это на очень поверхностном уровне. Я не показываю им или вам, как сделать все в технологии; Я просто даю вам краткий обзор и обзор всех достопримечательностей на карте.

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

Затем я мог бы заскочить и показать вам все конструкции языка и особенности языка — особенно уникальные.

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

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

Вы всегда можете найти подробную информацию по интересующим вас вопросам.

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

Моя цель в том, чтобы вы не сказали: «О, я не знал, что Х мог это сделать», а вместо этого сказал: «Я знаю, что Х может это сделать. Я не уверен, как, но я могу понять это позже.

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

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

С чего начать

Следующее, что мне нравится учить студентов, — это как начать.

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

Я хочу показать студенту, как загрузить все, что ему нужно, установить, установить его первый проект и скомпилировать его код.

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

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

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

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

Нужно знать 20%, чтобы быть наиболее эффективным

Наконец, я стараюсь обучать студентов 20% информации о технологиях, которые они будут использовать 80% или более раз.

Почти все в жизни попадает в так называемый принцип Парето , который в основном утверждает, что 20% чего-либо дают 80% результатов.

Ключ к изучению технических навыков — выяснить, что такое 20%.

Какие 20% вы можете узнать, что будет использовано в 80% работы, которую вы выполняете, используя этот технический навык?

Вот где действительно важно заниматься, а не просто читать.

Многие книги и даже учебные пособия написаны как справочные руководства, не уделяя особого внимания 20% технологий, которые наиболее важно знать.

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

Давайте снова посмотрим на пример реляционной базы данных.

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

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

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

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

Вот почему делать это так важно.

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

Просто увидев кого-то, кто использует технические навыки, которые вы развиваете, и их 20%, вы можете быстро узнать, что вам нужно знать.

На рабочем месте обучение может быть особенно эффективным.

Прочитайте, что пишут эксперты

Я оставлю вас с одной последней идеей, чтобы помочь вам развить технические навыки.

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

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

Когда я действительно хотел получить глубокие знания C ++, я проглотил книги Скотта Мейерса «Эффективный C ++».

Часто, просто услышав мнение эксперта по теме, вы можете получить глубокое понимание, которое вы не смогли бы собрать самостоятельно.

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

Узнайте, как эксперты применяют навыки в реальном мире, которые вы пытаетесь освоить.

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

Практика, Практика, Практика

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

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

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

Я хочу оставить вас с одним последним пунктом.

Практика.

Это займет время, чтобы развить любой технический навык. Чтобы что-то делать хорошо, вам придется много практиковаться.

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

Если вы потратите время, навыки придут, если вы будете следовать твердому плану с ясной целью.

Просто держись и доверяй процессу .

Куда пойти отсюда

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

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

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


Если вы хотите расширить свои навыки программирования, ознакомьтесь с SitePoint Premium . У нас есть тонны книг и видеокурсов, которые помогут вам в вашем программировании, а также множество бесплатных скринкастов. Бесплатная регистрация также дает вам доступ к известному веб-форуму SitePoint.