Если хотите научиться программировать или изучить новый язык программирования, но не знаете с чего начать, то эта статья для вас.
Последние пару лет я проводил много времени, чтобы изучить веб-разработку и машинное обучение.
В то время как предмет изучения менялся, будь то Javascript, Node и React до Python, Scikit Learn или нейронные сети, мой подход к обучению оставался одинаковым.
Указанные ниже инструкции можно назвать простыми (можно сказать, даже банальными), но они помогли мне стать профессиональным веб-разработчиком за 5 месяцев. Поэтому я решил написать немного о своём опыте, на случай, если другим людям это покажется интересным.
Я пишу эту статью в форме обращения к самому себе в 2012 году, потому что я бы хотел иметь лучшее представление о всём ниже сказанном, когда только начинал.
Чтобы изучить новую технологию — начинайте использовать ее сразу, до того, как успеете полностью её понять и вникнуть во все нюансы.
Однако, так как вы еще ничего не знаете по этой теме, вы не можете использовать данную технологию без помощи.
Все, что вам нужно — видео-обучение, в котором вам покажут, как создавать небольшой фиктивный проект. Поищите учебники, в которых автор описывает каждую строчку кода, включая установки.
Убедитесь, что вы способны создать такой же проект. Вам понадобится около часа, чтобы пройти десятиминутное видео-обучение. Кроме того, хорошие видео на YouTube помогают лучше, чем МООК, который может быть слишком подробным.
В качестве дополнения должно присутствовать чтение теории по данной теме. Это никогда мне не помогало, потому что мне становилось слишком скучно, и я считал книги для начинающих слишком уж подробными и детальными. Поэтому я категорически отказывался их читать.
При прохождении выбранного видео-обучения, вы не всегда будете понимать, что делаете, и это будет вам не нравиться. Попытайтесь абстрагироваться от этого надоедливого ощущения. Если вы чего-то не понимаете, запишите и вернитесь к этому пункту, когда наступит время для следующей инструкции. Цель этого шага — следовать обучению не смотря на то, что вы в чем-то запутались.
Плюсов здесь больше, чем минусов:
1. Разработка с первого дня
Вы создаете что-то с первого дня обучения. От этого намного больше пользы, чем (только) от чтения теории. Особенно, если проект вам действительно нравится. Чем больше вам нравится что-то, тем легче с этим справляться.
2. Пример кода
Кроме того, разработка даёт вам образец кода, чтобы можно было оглянуться назад на более поздних стадиях обучения, и это очень полезно. Я многократно возвращаюсь к образцам кода, чтобы освежить память и углубить понимание той или иной темы.
3. Изучение неизученного
Найдите свои слабые места. Это самый быстрый способ понять, на что вам стоит обратить внимание в первую очередь. Видите ли, в самом начале обучения достаточно сложно понять, на чём следует больше фокусироваться. По мере того, как вы будете учиться, у вас будет более ясный взгляд на то, чему нужно уделить больше времени.
Список моих первых курсов:
- Sentdex: Машинное обучение для инвестирования (ML)
- Egghead.io: Основы React (React.js)
- Justin Mitchel: Программирования для предпринимателей (Django)
После прохождения нескольких курсов из первого шага, у вас будет примерное понимание тематики. Но, скорее всего, вы понятия не имеете, что делать дальше. Пришло время найти источники, которые помогут вам в этом разобраться.
На данном этапе у меня пока нет какого-то одного универсального источника для ответов на все вопросы, который я бы мог рекомендовать. В данном случае можно перечислять долго: книги или официальные документы, Stack Overflow и т.д.
Если тема сложная тема, необходимо найти несколько источников, которые помогут вам все правильно понять. Кроме того, помните, что иногда вам придётся возвращаться на шаг назад, чтобы подтянуть основы и закрепить навык.
Последний раз такое случилось со мной, когда я учился программировать нейронные сети. После прохождения курса на Coursera, я понял, что мне нужно изучить логистическую регрессию для хорошего понимания всей темы. Что я и сделал: изучил логистическую регрессию с нуля и затем продолжил изучение нейронных сетей.
Первый и второй шаги очень важны, но на самом деле, это просто ступеньки для достижения этого шага. Ведь причина, почему вы хотите изучать новые технологии — создание своих проектов.
Как только вы почувствуете, что готовы создавать что-то свое, вы должны начать создавать. Почему? Потому что здесь начинается настоящее обучение.
Вы на самом деле ничего не узнаете о технологии, пока не начнете пользоваться ею. Вы можете пропустить первый и второй шаги, но вы не обманете себя на этом шаге (учитывая, что вы будете создавать всё сами, а не просто копировать и вставлять код). Лучше всего попробовать создать что-то, что вам действительно хочется.
Вот некоторые из моих первых проектов. Я не горжусь ими, но я много выучил благодаря их разработке.
- Ajax — The Guardian API
- React — Note Taking App
- Нейронные сети — Predictiong College Admissions
В заключении я бы хотел отметить, что эти три шага могут смешиваться между собой и менять свою очерёдность. Бывает, что я начинаю с первого шага и заканчиваю третьим. Но, как правило, перепрыгиваю назад и вперед, когда нахожусь в середине процесса обучения. Смысл в том, что они все одинаково важны для изучения чего-либо нового.