Как вы сами научились программировать? Как мне начать программировать? Я слышу эти вопросы достаточно часто, чтобы оправдать запись в блоге. Я не эксперт в науке о данных или веб-разработке (пока), но мои попытки самообучения (используя только бесплатные ресурсы) уже привели меня к двум стажировкам. Это руководство по самообучению является результатом того, что сработало и что не сработало на моем опыте.
Почему это руководство?
Потому что онлайн-руководства недостаточно полны. Они не решают проблем, характерных для самообучающихся, в том числе:
- Отсутствие фиксированной схемы обучения. Стандартной учебной программы не существует. Самообучение требует от вас разработки собственной учебной программы.
- Отсутствие руководства. В отличие от учебных курсов или школ, здесь нет учителя, который постоянно решал бы ваши проблемы. Вы должны полагаться на онлайн-форумы и в основном на себя.
- Отсутствие ответственности. При самостоятельном обучении нет ни экзамена, ни работодателя, который заставлял бы вас изучать концепции, которые вы ненавидите. Единственный, кто может заставить вас нести ответственность, — это вы сами.
- Ад туториалов. Ад туториалов — это печально известная проблема, когда самоучитель просматривает учебник за учебником за учебником и так и не может применить эти навыки.
Сочетание этих проблем может ошеломить самообучающихся, что приведет к прокрастинации и невозможности научиться программировать. В этом руководстве описывается методология самообучения, специально предназначенная для решения вышеуказанных задач.
Итак, приступим!
Шаг 1: Определите конечную цель
Эта долгосрочная цель используется в качестве маяка для вашего обучения. Это напоминает вам о том, почему вы учитесь программировать, что поддерживает вашу мотивацию. Программная инженерия — это гигантская область. Ваша конечная цель говорит вам, какие языки, фреймворки, технологии и т. д. вам нужно изучить.
Хотя ваша конечная цель не обязательно должна быть сверхконкретной, она должна быть измеримой или наблюдаемой. Иметь слишком расплывчатую конечную цель — это все равно, что быть бегуном по пересеченной местности и не знать, где находится финишная черта.
Хорошие примеры
- Устроиться на работу младшим инженером-программистом
- Создайте клон Twitter
Плохие примеры
- Стать достаточно хорошим, чтобы стать младшим инженером-программистом
- Станьте специалистом в веб-разработке
Такие слова, как «достаточно хороший» и «опытный», трудно измерить. Расплывчатая цель вносит неопределенность в ваше путешествие по самообучению, делая его излишне трудным.
Ваша конечная цель может измениться, и это нормально. Когда я только начинал, моей конечной целью было создать собственного торгового бота, который включает в себя методы науки о данных. Но мое внимание переключилось на устранение неэффективности веб-разработки и науки о данных.
Шаг 2: Изучите основы языка
Google для самого популярного языка программирования для интересующей области. Например, если ваша конечная цель связана с наукой о данных, вам следует выбрать Python. Затем найдите онлайн-курсы/учебники, которые научат вас абсолютным основам этого языка. Есть куча учебников по основам каждого основного языка. Просто выберите любой популярный вариант и приступайте к обучению.
Цель этого шага — изучить базовые вещи, такие как переменные и функции, поэтому постарайтесь закончить это менее чем за 10 часов. Как только вы сможете создать простой калькулятор ИМТ, переходите к следующему шагу.
Исключение: если веб-разработка является вашей областью интересов, вам необходимо изучить JavaScript, HTML и CSS, поскольку все 3 считаются фундаментальными знаниями. Постарайтесь потратить на это менее 20 часов.
Шаг 3: Начните свой первый проект
Создайте личный проект, который подтолкнет вас к конечной цели. Это должно научить вас некоторым необходимым навыкам. Выберите что-то, что вам действительно интересно создать, поэтому вам не следует пытаться черпать вдохновение в этих статьях Medium «100 личных идей проектов».
Скажем, ваша конечная цель — создать алгоритмического торгового бота. Вашим первым проектом будет просто анализатор трендов акций, который берет CSV-файл и выдает показатели по определенной акции.
Создайте что-то, что вы можете сделать за месяц. Если это занимает слишком много времени, это означает, что этот проект слишком сложен на данный момент. Упростите свой проект. Маленькие победы — ключ к мотивации.
Как получить навыки?
Статьи на Medium, видеоролики на Youtube, короткие курсы Udemy… в общем, все, что дает вам хорошее понимание темы. Как только вы освоите это, вы начнете читать документацию вместо руководств.
Не забывайте, что вы не должны тратить больше месяца на проект. Так что пройдите учебник и сразу приступайте к своему проекту.
Шаг 4 и далее: больше личных проектов
После того, как вы закончите с первым проектом, выберите второй, после второго выберите третий и так далее. Идея состоит в том, что сложность ваших проектов будет постепенно возрастать, поэтому вы приобретете все больше и больше навыков по пути, приближая вас к конечной цели.
Получите 1 или 2 новых навыка за проект. Чрезмерно сложные проекты вызывают у вас перегрузку, в то время как простые проекты заставят вас застопориться. Когда я создавал свой персональный сайт с помощью Next.js, я был знаком с React, основной библиотекой, на которую опирается Next.js, но не самим Next.js. Так что в этом проекте мне нужно было освоить только 1 важный новый навык.
Этот метод имеет ряд преимуществ:
Без обучающего ада
Когда вы начинаете проект с самого начала, ваша цель смещается с изучения технологии на завершение проекта. Этот ментальный сдвиг не позволяет вам оставаться в учебниках, потому что он не приближает вас к вашей цели.
Мотивация
Середина пути всегда самая трудная. У вас уже нет такого волнения, как в начале, и вы все еще далеки от своей конечной цели. Но через несколько месяцев вы сможете оглянуться на свои прошлые работы и легко увидеть достигнутый вами прогресс, который подталкивает вас вперед. Вот почему вам не следует начинать большой проект с самого начала.
Бонус: найти наставника или товарища по обучению
Друзья, которых вы уважаете, могут помочь вам в достижении конечной цели и уменьшить прокрастинацию. Наставники могут сделать то же самое, но, поскольку они более опытны, они могут дать совет по обучению и указать вам на соответствующие ресурсы. Наставники бесценны, когда вы изучаете более сложные концепции, поскольку ресурсы менее доступны.
Но вам не нужен наставник или приятель. Лично у меня его не было до моей первой стажировки. Может быть сложно найти партнера, если в вашем кругу нет разработчиков/самообучающихся. Партнеры облегчают ваше путешествие, но они не обязательны.
Разное
И вот несколько разных советов, которые не вписываются в вышеперечисленные шаги.
Не программируйте более 5 часов в день. Тратить слишком много часов в день на поглощение контента приводит к тому, что сохраняется меньше информации и повышается вероятность выгорания. Лично я не пишу код более 4 часов в день. Если я превышаю свой лимит, на следующий день я чувствую себя вымотанным.
Можно взять несколько выходных. Нет ничего плохого в том, чтобы не писать код целую неделю, если этому мешают другие обстоятельства в жизни. Если вы чувствуете, что выгорели, сделайте перерыв, а затем измените свои привычки к самообучению, чтобы этого больше не повторилось.
Резюме
Вывод
Я надеюсь, что это руководство было полезным для вас. Не забывайте, что обучение программированию требует значительного времени, как и любой другой навык, который стоит освоить.
Так что успокойтесь и получайте удовольствие от обучения.
Первоначально опубликовано на моем личном сайте — michaelchen.io.