Ошибка №1: изучать язык вместо того, чтобы учиться программировать
Вот ситуация, которую я постоянно вижу у новичков на код-ревью: студент прошёл несколько курсов на Stepik, Udemy или Coursera, иногда даже документацию на docs.python.org успел почитать. Он легко может перечислить параметры любой встроенной функции или перечень зарезервированных слов в алфавитном порядке. Но при этом простейшая задачка на 50-60 строк кода вгоняет его в ступор, на решение уходит несколько часов, а получившийся код выглядит как жуткое месиво из прошлогоднего салата и человеческих останков.
Алгоритма нет, задача решалась на ходу и в процессе переписывалась 5 раз. Функции и переменные названы как попало, да и остальные правила написания чистого кода тоже соблюдались весьма условно. Зато синтаксис языка изучен на 100 из 100 баллов. Вот только пользы это не принесло.
А как правильно?
Пишите больше кода. Составляйте алгоритмы. Думайте над задачами. Соотношение «практика / теория» должно быть 5-к-1 или ещё больше. Недостающую теорию вы всегда можете загуглить, но если вы сфокусируетесь на изучении мельчайших деталей языка, а не на написании кода, то не научитесь никогда.
Ошибка №2: искать лёгкие пути и избегать трудных заданий
«Ой, эта задача сложная, её пока пока что пропущу, решу что-нибудь полегче. Такой проект я пока не потяну, лучше напишу что-нибудь попроще». Делаете так? Тогда поздравляю, вы попали во вторую по популярности ловушку для новичков.
Представьте себе бегуна, который хочет побеждать в соревнованиях, но на тренировках никогда не разгоняется до максимальной скорости, а иногда вообще ограничивается лишь разминкой, и потом с чувством выполненного долга идёт домой. Он никогда не потеет и не устаёт, круто! Вот только настоящим бегуном так никогда и не станет, и в соревнованиях никогда не победит — ни спустя год, ни спустя 10 лет.
То же самое и в программировании. Можно решить 50 несложных задач, а можно и 5 000. Но в обоих случаях вы столкнётесь с одинаковыми трудностями, когда перейдёте к более серьёзным задачам. Только времени во второй ситуации потратите в 100 раз больше.
А как правильно?
Постоянно бросайте себе вызовы и пробуйте решать более сложные задачи. Не получилось — отложите задачу на день-два и затем снова попробуйте её решить. Повторяйте до тех пор, пока не получится, а потом снова повышайте планку.
Для того, чтобы закрепиться на определённом уровне, не нужно решать сотни однотипных задач. Пары десятков более чем достаточно, а потом нужно двигаться дальше.
Ошибка №3: изучать всё, что попадётся под руку
Сегодня изучаем Python, потому что на нём пишется красивый код, а ещё он используется в Google. Завтра Javascript, потому что на нём можно написать и бэк, и фронт. Послезавтра Go, потому что он перспективный и современный. Потом возвращаемся к Python и 2 месяца пытаемся изучить Django, а в итоге понимаем, что без хорошего знания Python и хотя бы базового знания SQL Django в голову вообще не ложится. Знакомая картина?
На самом деле, так вполне можно научиться программировать. Проблема лишь в том, что на это уйдёт в несколько раз больше времени и сил, чем при правильном подходе.
А как правильно?
Подготовьте чёткий план обучения. Естественно, знаний для того, чтобы составить его с нуля, у вас пока что не хватит, поэтому воспользуйтесь готовым или просто запишитесь в хорошую школу программирования, где всё это уже сделано и весь необходимый материал уже подготовлен. В нашу, например :)
После того, как план составлен, не отклоняйтесь от него. Даже если в процессе обучения вы внезапно узнали про новый суперкрутой и ультраперспективный язык, оставьте его в покое и продолжайте уверенно двигаться по ранее намеченному пути.
Ошибка №4: рассчитывать на то, что за 6-7 месяцев вы станете Middle-разработчиком
Я испытываю странную смесь уважения и негодования к маркетологам кое-каких онлайн-школ за то, что они сумели внушить людям такую мысль. Дар убеждения у них определённо есть. К сожалению, в обещании обучить с 0 до middle за полгода правды не больше, чем в обещании стабильно выплачивать проценты вкладчикам МММ.
Прежде всего, грейд «middle» подразумевает, что разработчик уже имеет опыт работы на реальном проекте. Причём этот опыт, как правило, должен быть не менее тех самых 6-7 месяцев, а скорее даже не менее 1 года. То есть мидлом без реального опыта стать нельзя по определению.
Более того, в современном мире даже к Junior-разработчикам предъявляются такие требования, что на обучение стоит закладывать около 700-900 часов, то есть примерно 1 год. Это при условии, что вы идёте по чётко намеченной программе, не тратите время на поиск материалов, и у вас есть ментор, который вовремя вернёт вас на нужные рельсы, если вы с них сойдёте.
Если же вы учитесь полностью самостоятельно, перебираете разные материалы в поисках качественного и не получаете обратной связи от более опытных разработчиков, то смело поднимайте планку до 1500 часов.
А как правильно?
Настраивайте себя на то, что учиться придётся долго. Более того, учиться придётся даже после того, как устроитесь на работу, потому что отрасль IT очень быстро развивается и изменяется. Если не готовы к долгому марафону, то не надейтесь на чудо и не тратьте своё время.
Итого
1. Практикуйтесь;
2. Не избегайте сложных задач, а стремитесь к ним;
3. Двигайтесь по намеченному пути, без метаний из стороны в сторону;
4. Готовьтесь к тому, что учиться придётся долго.
Статья получилась немного пессимистичной, как будто программирование — это сплошная боль и печаль. На самом деле всё далеко не так плохо :) Программирование — это очень интересно. Оно развивает мозг, дарит радость от решения сложных задач и позволяет приносить пользу другим людям. Так что если вам нравится программировать — следуйте этим несложным советам, и всё получится. Удачи!