Как заставить себя учиться программированию
Как учиться программировать: 6 вещей, которые я понял, учась на Хекслете
Когда я только начинал изучать программирование, у меня голова была забита кучей неверных представлений о профессии программиста и о том, как и что нужно учить. Со временем я понял несколько важных вещей, которые, если б я узнал это раньше, очень сильно упростили и ускорили бы мое обучение.
Большинство этих вещей до меня дошли именно в процессе обучения и общения с ребятами-программистами на Хекслете. Для кого-то это явно будут откровения Капитана Очевидность, но, возможно, кому-то оно и принесет пользу.
Какой язык программирования изучать первым? Неважно!
Не нужно тратить сильно много времени на выбор и мучаться этим. Берите Ruby, Python, JavaScript, PHP, Java, Lisp, да хоть паскаль — не ошибетесь. Для начала вам все равно нужно будет освоить базовые вещи, такие как циклы, условия, переменные, функции, объекты, рекурсию и т.п. Я когда-то в школе немного программировал на всяких бейсиках и C++, но к тому времени, как решил стать программистом, все это успешно забыл.
Начал изучение с Java, и не жалею, после этого было легче изучать менее строгие языки, вроде JS и PHP. Минус Java в том, что, если вы живете не в милионнике, вам будет весьма сложно найти на нем работу джуниора и получается, что обучение какое-то бесцельное, ради обучения, что сильно снижает мотивацию. В то время, как изучая PHP, например, уже очень быстро можно брать какие-то первые заказы на фрилансе, устроиться на первую работу в веб-студию и т.п., т.е. начать на своем хобби зарабатывать первые деньги, что очень сильно поднимает мотивацию.
Новички так серьезно подходят к вопросу «Какой же язык программирования выбрать», будто им предстоит подписать договор с дьяволом, и всю жизнь писать только на этом единожды выбранном языке. Лично для меня просветлением стало, когда я увидел профили высокооплачиваемых программистов на бирже Upwork, почему-то очень во многих из них было написано примерно следующее — могу Django, могу Rails, а еще Meteor и Angular, да и Spring тоже. И Joomla само собой.
Потом я спрашивал некоторых знакомых (и малознакомых) программистов об их карьере, и увидел некий паттерн, которого раньше не понимал. Человек может, например, год работать с PHP, потом уйти на Java, потом плюнуть и выучить руби, стать RoR разработчиком, и в итоге заняться Node.js или Clojure. Любой нормальный программист знает несколько языков хорошо и десяток поверхностно. Поэтому не ломайте голову, не пытайтесь выбрать Самый Лучший Язык и строчить для этого тысяча первый вопрос на тостере. Просто берите любой язык и прочитайте по нему хотя бы одну книгу/пройдите курс. Попытки выбрать Самый Лучший Фреймворк из той же серии.
Про первую работу
Очень многие программисты начинают свою работу с весьма непрестижных компаний и крошечных зарплат. И это нормально. Но это сложно принять, особенно тем, кто решает «войти в айти» уже не в юном возрасте, имея семью и детей. Мифам об огромных зарплатах программистов зачастую способствуют школы программирования, которым нужно продавать свои курсы и в итоге на своих лендингах они крупным шрифтом пишут какие-то заоблачные цифры, вроде «средняя зарплата JavaScript программиста 150 000 рублей», при этом часто забывают сказать, что такую зарплату получают люди с опытом в несколько лет (или даже десяток лет), которые могут решать реальные сложные задачи, а вам после их курсов на старте светит тысяч 30 на испытательный срок, и это в Москве. А то и вообще попросят бесплатно поработать. За опыт и еду. Не нужно бояться идти на непрестижную и малооплачиваемую работу, потому что как только вы официально начнете работать программистом, даже за 20 тысяч в месяц, ваша привлекательность в глазах других работодателей и HRов сильно вырастет. На старте работу никто не мешает менять хоть каждые 3-6 месяцев, каждый раз уходя на бОльшую зарплату и более интересные задачи.
Но я, конечно же, не говорю, что нужно идти работать за еду, может конкретно вы найдете первую работу и за 100 000 в месяц. Просто нужно понять, что карьера тоже требует немалых усилий, и необходимо активно изучать рынок труда, время от времени общаться с рекрутерами и ходить на собеседования, чтобы адекватно себя оценивать в каждый момент времени. А первая работа — это не навсегда.
Учиться программировать сложно
В процессе учебы должны быть моменты, когда мозг напрягается, и вам кажется, что вы ничего не понимаете. Если все получается легко и без напряга, значит вы учитесь не программировать, а повторять за диктором. Если привести грубую аналогию, вас учат не плавать, а шевелить ногами, лежа на песочке. Конечно, возможно, что вы гений и вам просто все легко дается. Чтобы реально оценить свои способности, сходите на пару-тройку собеседований по изучаемому языку программирования и попытайтесь выполнить тестовые задания, которые вам дадут.
Лично я долго (слишком долго) учился на всяких курсах из серии «посмотри на меня, делай как я». Когда начал учиться на Хекслете, у меня от некоторых заданий просто мозг кипел, да и сейчас кипит. Одно задание я пытался сделать 3 дня. Но в итоге я прокачался, и теперь могу решать более сложные задания, чем раньше. Мне кажется, именно в этом должна быть цель хороших курсов программирования. Не в том, чтобы натренировать вашу память на запоминание 1000 функций из какой-то библиотеки. А в том, чтобы заставить мозг напрягаться и с каждым днем решать все более сложные задачи.
Про code kata
На определенном этапе (почти сразу после изучения основного синтаксиса одного из языков программирования), нужно набить руку в решении простых (хотя бы простых, для начала), алгоритмических задачек. Есть десятки разных сервисов, где это можно делать — codewars.com, exercism.io, hackerrank.com и т.п. Проскочить этот этап не получится. Если вы зашли на codewars и просто не понимаете, что от вас хотят, и как решать даже самые простые задачи первых уровней, срочно вливайтесь в какое-то сообщество, где есть программисты и единомышленники, изучающие программирование, и где можно будет задавать вопросы и получать помощь. Одно из таких мест — слак чат Хекслета. Если вы не научитесь решать эти простые задания, вероятность резиста того, что вы сможете решать какие-то реальные рабочие задачи, крайне мала.
Не нужно зубрить названия функций
Смысл вообще не в этом. Это дошло до меня как-то внезапно и совсем недавно. Вообще не надо пытаться насильно их запомнить. Я пытаюсь понять смысл, построить какую-то абстракцию, грубо говоря, сформулировать для себя общую концепцию того, что изучил.
Кстати, это очень полезная штука и для изучения иностранных языков, я лично просто ненавижу делать какие-то списки, карточки и зубрить слова. Особенно у меня вызывают желание ругаться матом наборы слов, вырванные из контекста, типа «100 прилагательных на тему Погода». Это просто нереально запомнить, а даже если и зазубрил сегодня, через месяц 80 процентов забудешь. Гораздо эффективнее просто читать/смотреть интересный тебе контент на языке и искать незнакомые слова в словаре каждый раз, таким образом через какое-то время самые употребительные слова запоминаются естественным образом.
В общем, при изучении очередной фишки языка программирования достаточно понять в целом, что оно делает, и знать, как это загуглить.
Начните изучать разработку с бесплатного курса «Основы современной вёрстки». Вы научитесь создавать статические веб-страницы, стилизовать элементы, использовать редакторы кода с полезными расширениями. В конце курса вы опубликуете свой первый сайт на GitHub Pages.
Тупить — это нормально. (с) Елена Малышева
То есть люди, которые занимались программированием много лет, иногда тоже не могут самостоятельно разобраться в какой-то новой фиче, и совершенно не стесняются просить совета и помощи. Однако, с вероятностью 99% предварительно они пытались сами решить эту проблему, обратились к Google и Stackoverflow, но безуспешно.
Поэтому если вы пытаетесь стать программистом с нуля, вообще не парьтесь о том, что что-то непонятно и не ставьте на себе крест, вам должно быть очень многое непонятно! Не стесняйтесь задавать много вопросов, ну и гугл ваш лучший друг. Сперва всегда пытайтесь решить свои вопросы самостоятельно, а потом просите помощи, при этом желательно расписать, что вы уже пробовали для решения проблемы.
Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях
Что следует знать перед тем как «увлечься» программированием
Вступление
Этот хабратопик предназначается для всех тех, кто хочет с головой (или не очень) погрузиться в волшебный мир программирования, но пока не знает, с чего начать. Возможно, вы уже предпринимали попытки научиться программированию, однако безнадежно забуксовали.
Так получилось, что около четырех-пяти месяцев назад я решил слегка разнообразить свой досуг новым хобби и вплотную заняться веб-программированием. Как я докатился до жизни такой — это тема для совсем другой статьи, и речь сейчас пойдет не об этом. Речь пойдет о трудностях, с которыми я столкнулся, и к которым абсолютно не был готов. Возможно, этот топик поможет вам лучше подготовиться и не повторить моих ошибок.
Итак, после осознания навязчивого желания хотя бы немного да освоить это таинственное ремесло, каждый задает абсолютно логичный вопрос — «С чего же мне начать»? Ответов может быть множество — к услугам новичков скринкасты, книги, курсы, онлайн-обучение, форумы и прочее, и прочее. Учи-нехочу. И так как никакой общепринятой системы самообучения программированию не существует, можно смотреть и читать все без разбору, дни напролет. При желании, в чтении можно захлебнуться, однако для уверенного продвижения по лестнице знаний необходимо четко и эффективно расходовать свое время и силы, и если не знать с чего начать и куда двигаться — вы попросту забредете в дремучий лес, по которому можно блуждать неделями, пока, наконец, вы не выйдете на верную тропинку. Если выйдете вообще — велик шанс, что вам попросту все это дело быстро надоест.
Я и сам пошел по этому пути — скачивал тучи роликов, впридачу купил несколько книг, читал их и забрасывал, потому что мне все-равно не хватало знаний и подготовки, несмотря на то, что все материалы были предназначены для «новичков». Я постоянно гуглил разные мелочи, задавал нубские вопросы на форумах, хватая минусы, и это убивало во мне желание продолжать самообучение.
Да, любые знания и любой накопленный (нагугленный?) опыт вам, безусловно, поможет и пригодится, однако ваша цель научиться тому, чему вы хотите научиться, и увидеть мало-мальский результат в обозримом будущем ведь так?
Абсолютно все материалы, которые попадались мне на глаза, после краткого вступления немедленно бросались с места в карьер, предлагая читателю решения и примеры на заданную тему. Я чувствовал себя абсолютным двоечником в классе вундеркиндов, и постоянно сталкивался с одной и той же проблемой — авторы книг, впрочем как и любого другого образовательного материала, предполагали что я владею некоторой базой основ, которая, на первый взгляд, к непосредственному программированию не имеет никакого отношения.
Это как если вы пришли работать, скажем, крановщиком, вас в первый же день посадили в башню, и похлопали по плечу со словами «Ну, удачи!». А как же техника безопасности и базовое объяснение что делать, а чего делать не нужно? Как мне пользоваться инструментами? Что вообще у меня за инструменты в наличии? Что я должен знать перед тем как приступить к работе?
Статья носит сугубо рекомендательный характер, однако попадись мне подобный топик на глаза пол года назад, я бы значительно увеличил свою продуктивность, сэкономил уйму времени себе, а так же множеству людей с форумов, отвечавшим на мои абсолютно идиотские вопросы. К каждому пункту я добавил несколько ссылок, как отправных точек для начала обучения. Так как текст предназначается для абсолютных новичков (да и сам я еще таким себя считаю) — я буду изъясняться предельно просто и понятно, поэтому если вы — гуру, и вы нашли в моем тексте оплошность — судите, но не строго!
Итак, что же следует знать, перед тем как увлечься программированием?
1. Терминал
Для вашего дальнейшего успешного самообучения программированию вам необходимо научиться пользоваться терминалом. Помимо непосредственного взаимодействия с языками программирования, обучение пользованию терминалом поможет вам лучше, так скажем, понять язык компьютера и устройство файловой системы в целом, а это уже маленький шажок в нужную сторону. Более того вы скажете мне спасибо, после того как начнете обучаться по скринкастам, в которых терминал используется постоянно.
Самообучение
2. Регулярные выражения
Представьте себе, что вы решили выучить иностранный язык не вникая в его азбуку, алфавит или иероглифику. Конечно, это возможно. Но насколько это усложнит процесс и путь к пониманию сути вещей? Решение сомнительное, правда? Так вот, регулярные выражения (они же регексы, с ударением на первый слог) — это, объясняясь простым языком, в какой-то степени вспомогательная азбука любого программиста, или, выражаясь языком викисловаря — «формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов».
Выглядеть регекс может, например, так:
Задача регулярных выражений — помочь программисту с поиском чего-либо. Сейчас объясню.
Если я в своей программе захочу найти все слова, частью которых является слово car (car, carrot, cartoon), мой регекс будет выглядеть так:
Если же меня интересует только слово car, я напишу:
Дальше — веселее. Можно фильтровать поиск через слово, через букву, исключать слова перед или же после искомого результата… Список возможностей фильтрации результатов при помощи регулярных выражений по-настоящему захватывает, и в паре с терминалом, про который я вам уже рассказал выше, эта штука просто невероятно крута. Несмотря на различающийся синтаксис отдельно взятых представителей ООП, многие из них поддерживают регексы и экономят уйму времени людям их использующим.
«Ну поиск, кому оно надо? Я же буду учиться программировать, а не искать слова!» — наверняка подумаете вы. Я вас услышал и даже понял. Так что если вы все еще сомневаетесь в необходимости заморачиваться с регулярными выражениями, просто поверьте мне на слово — они вам пригодятся. Многие книги и скринкасты используют регексы в примерах, вообще не объясняя, что происходит — авторы думают, что вы уже владеете этими азами и особенно не акцентируют внимание на разжевывании написанного.
Зубрить их совсем не обязательно, но, согласитесь, просмотр пары-тройки скринкастов на данную тематику вас явно не убъет.
Самообучение
3. Софт для разработки — знай свое оружие
Правило номер один — вы должны по-максимуму знать и владеть своими инструментами. Грамотно выбранный и изученный редактор, в котором вы вскоре обязательно начнете творить чудеса, я легко могу сравнить с превосходно подобранным самурайским мечом. Солдаты собирают и разбирают свои автоматы с завязанными глазами — вот насколько хорошо вы должны владеть софтом, которым пользуетесь! Пока вы буква за буквой пишете простую функцию, ваш враг, используя весь потенциал своего редактора, напишет несколько.
Для веб-разработки существует огромное количество програм, от простых текстовых редакторов до сложных облачных решений. В этой статье я не буду сравнивать эти редакторы между собой, вам придется сделать это самостоятельно — ведь вам с этим редактором жить, работать и смотреть на него и в горе и в радости. Я остановил свой выбор на редакторе Sublime Text 2. Помимо тонны возможностей, которыми обладает Sublime, необходимо отметить, что он условно-бесплатный и по нему существует множество отличной документации. Возможно совсем скоро, познав все хитрости Sublime и научившись подключать к нему плагины, подобная строка будет для вас обычным делом:
div>(header>ul>li*2>a)+footer>p (используется плагин Emmet, если кому интересно)
Самообучение
4. Система контроля версий
«Ну а это еще что такое?» — спросите вы. О, система контроля версий это прекрасная вещь, без которой в наши дни не обходится ни один серьезный девелопер. Википедия гласит — «Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое.» Систем контроля версий существует достаточно много, поэтому сразу скажу — ниже речь пойдет исключительно о GitHub, самом большом сервисе для совместной разработки проектов.
Резонный вопрос: «Зачем мне этот Гитхаб осваивать, ведь мне пока нечего выкладывать?» А причин на то несколько. Помимо содержания собственных репозиториев, GitHub, во-первых, поможет вам осознать себя частью огромного сообщества разработчиков (возможно, кто-то из читающих сейчас ухмыльнулся, но поверьте, это действительно важно, особенно на ранних стадиях обучения!). Кроме того, вы сможете взглянуть на чужой исходный код и научитесь правильно его скачивать и «форкать» (копировать). В дальнейшем GitHub частенько будет всплывать в различных онлайн-курсах и скринкастах, и, конечно же, их авторы будут уверены в том, что вы знаете, как Гитхабом пользоваться. Поэтому если у вас найдется немного времени на неделе, сделайте себе одолжение — попробуйте Git.
Самообучение
5. История и культура
Этот пункт, скорее, вспомогательный, но если программиста которым вы восхищаетесь зовут Стив Джобс, то прошу вас, продолжайте чтение. Программирование имеет богатую и интересную историю (говорю вам как историк по первому диплому), в которой следует поковыряться хотя бы для общего образования. Занимаясь чем-либо, всегда полезно знать, откуда у этого чего-либо растут ноги. Кроме того, я искрене считаю, что без знания истории предмета невозможно полностью понять его суть, и, следовательно, достичь предельных успехов в его освоении. Поэтому если по прошествии некоторого времени такие имена, как Линус Торвальдс или же Грейс Хоппер не будут для вас пустым звуком — уважение вам и респект!
Помните — тот, кто не изучает историю, повторяет ее ошибки.
Заключение
Надеюсь, данный текст вас ни в коем случае не испугал, а наоборот, направил в нужную сторону, или же поможет в будущем избежать затруднений, которые постоянно встречаются на пути ученика. Я буду рад получить отзывы и комментарии, или же ссылки на дополнительные ресурсы, которые помогут новичкам в самообучении.
Как успешно научить себя программировать
Я хочу поделиться с вами статьей, которая во время прочтения очень сильно отозвалась во мне. Ее автор девятнадцатилетняя девушка веб-разработчик, Lydia Hallie, больше известная как «the most hardworking, yet most relaxed person» (очень трудолюбивый, но все-таки расслабленный человек) рассказывает о том, как современному разработчику справляться с многочисленными потоками входящей информации и сохранять мотивацию к саморазвитию.
После того, как я опубликовала свою предыдущую статью о том, как я стала разработчицей в 19 лет, сотни людей писали мне примерно одно и то же:
«Отличная статья. Я очень хочу научиться программированию, но просто не знаю, с чего начать. Это так расстраивает и подавляет, что я теряю мотивацию»
Моя задача: вовлечь в мир технологий как можно больше людей, поэтому очень важно сосредоточиться на тех, кто действительно мотивирован, но просто не знает, с чего начать.
Сегодня существует множество ресурсов, которые «научат вас программировать». Однако, это не самое главное, и статья не об этом. Решающее значение имеет то, как вы строите свою жизнь, обрабатываете новую информацию, сохраняете мотивацию и фокусируетесь на главном.
«Всё это звучит хорошо, Лидия», скажете мне вы, «но, чувствую, это еще одна статья, которая мотивирует меня на 10 минут, пока я не вернусь к Netflix!» Прежде, чем я начну, хочу, чтобы вы поняли, что вы уже крутые, хотя бы потому, что решили научиться программировать. Это значит, что вы можете думать на несколько шагов вперед и способны выйти из зоны комфорта, даже если еще не сделали этого!
Если вам нравится изучать что-то новое и сложное, вы определенно станете хорошим разработчиком.
Я много лет была наставником и часто слышала от своих подопечных, что им не хватает мотивации. Они фокусировались на крупной цели, игнорируя свои небольшие, но все же очень важные улучшения. Поэтому им казалось, что они никуда не движутся.
Хотя я знала, как важно помнить об этом при получении какого-то нового умения, я сама попала в эту ловушку, когда начинала. Я не чувствовала какого-либо прогресса и думала, что все вокруг меня всё равно остаются на голову выше. Мне казалось, что я никогда не достигну их уровня.
Эти мысли мешали осознать, как много важных шагов мне уже удалось сделать. При этом я писала код с первого раза, и создавала всё более сложные приложения. Продолжая сравнивать себя с другими, более опытными людьми, я не могла увидеть свой прогресс. И всё, о чем я могла думать: «я всё еще так далека от своей цели».
Критический момент в обучении программированию реален, и чтобы справиться с ним, нужно приложить усилия. Это в большей или меньшей степени свойственно всем начинающим программистам и я действительно хочу помочь вам преодолеть этот критический момент. Это не значит, что всё на самом деле так, как вам кажется — возможно, всё происходит исключительно у вас в голове. Но сказать проще, чем понять это.
Каждый преодолевает это по-своему, но я подробнее остановлюсь на самых распространенных проблемах всех начинающих программистов: как максимально эффективно работать с новой информацией и как сохранять мотивацию. Я не собираюсь останавливаться на поиске лучших сайтов, потому что это очень субъективно.
Заканчивая даже относительно небольшое проект, я чувствовала такое счастье! Я многому научилась в процессе и имела возможность поработать с технологиями, с которыми никогда раньше не работала.
Эффективная работа с новой информацией
Все мы разные, и по-разному усваиваем информацию. Да, я говорю как Капитан Очевидность, но это не столь очевидно, как может показаться. Прежде, чем научиться кодить, вам придется научиться учиться.
Скоро вы узнаете (или, возможно, уже узнали), что есть два типа общедоступных информационных ресурсов: онлайн-курсы и документация. Однако, если вы не сверхчеловек, то просто не запомните всю информацию, просматривая курсы (даже не из-за трудностей с концентрацией внимания, а из-за того, что они бывают откровенно скучными) или читая текст.
Чувствовать себя потерянным и запутавшимся во время просмотра курсов или чтения документации — нормально, каждый преодолевает это в начале своего пути. Разработчики с трудом могут обучить программированию людей, которые не слишком в этом разбираются, не прибегая к скучным расплывчатым терминам (да-да, это я про вас, Stack Overflow!).
Не важно, насколько по вашему мнению вы круты, не пропускайте основы. Всегда начинайте учить язык с самого начала и ничего не упускайте. База очень важна, и вы обязательно пожалеете о том, что не уделили ей достаточно внимания! Конечно, всегда можно погуглить, но это только замедлит вашу работу. Читая документацию, начинайте с первой страницы (или с 1.1 в некоторых случаях). Кому-то это может показаться пустой тратой времени, но поверьте мне: это не так. Уделяйте внимание всем деталям и в будущем вы будете себе благодарны!
Если вам трудно понять основы, расслабьтесь! Всё будет в порядке. То, как вам сейчас тяжело, никак не влияет, насколько хороши вы будете потом.
Каждые 10 минут или после каждого прочитанного абзаца объясните своими словами, что вы только что узнали. Это может быть достаточно трудно, но скоро вы поймете, какие части вы усвоили не до конца. Лучший способ выучить что-то: объяснить это кому-то другому, даже если рядом никого нет!
Представьте, что вы объясняете эту тему кому-то другому, и как только поймете, что не усваиваете какую-то часть, разберитесь в ней и запишите ответ! Пока будете писать, вы еще раз хорошенько обдумаете информацию, и тогда ее будет легче запомнить.
Не просто слушайте курсы и читайте документацию: активно пользуйтесь новой информацией в своих проектах. Внедряйте все, чему вы научились, даже если это кажется вам незначительным! Это не так просто, как может показаться, а иногда и довольно неприятно, но только так вы поймете, что все делаете правильно. Прокачивать свои навыки нужно в том числе и на практике! Поверьте, вы будете становиться лучше с каждой попыткой, даже если не осознаете этого!
Сохранение мотивации
Меня часто спрашивают, как я заставляла себя писать так много каждый день. Надо сказать, что мне потребовалось какое-то время, чтобы сформулировать, что творилось тогда у меня в голове.
Мы все любим играть, не важно в какие игры. Игры приносят мгновенное удовлетворение, позволяют чувствовать себя успешным от незначительных достижений. Это идеальная формула мотивации! Я смогла получить её в процессе программирования. И это намного проще, чем вам кажется.
Ставьте себе небольшие цели. Не потому, что вы не стремитесь развиваться, наоборот — потому что вы стремитесь развиваться. Составьте список дел, которые вы хотите завершить сегодня. Может быть, прочитать одну страницу, просмотреть один курс или написать 10 строчек кода. Завершив свой список, вы почувствуете себя удовлетворенным и уверенным в своем успехе. Что звучит лучше: «я сделал всё, что планировал на сегодня» или «я сегодня прошел только 2 % курса»? К тому же, даже если вы всего лишь прочитали одну страницу или сделали одно поле ввода, это всё равно невероятно важно осознать. Мгновенное поощрение!
Постоянно напоминайте себе, как далеко вы продвинулись. Это может показаться довольно трудным, потому что прогресс часто остается незамеченным. Вы не можете постоянно видеть свой рост, но поверьте, если вы пишете код каждый день (хотя бы немного), он становится лучше.
Хороший способ — вести дневник. Опишите в одном предложении, с какой проблемой вы столкнулись сегодня, и перечитайте через месяц. Есть очень, очень большая вероятность, что для вас уже больше не будет существовать такой проблемы! Вы увидите, насколько сильно выросли за это время.
Работайте над личным проектом, в котором вы действительно заинтересованы! Не над одним из миллиона в списке дел, но над тем, который вы действительно хотели бы сделать. Я не имею в виду автомобиль с автопилотом или личного робота-повара, выберите что-то поменьше. Освежите макет сайта или напишите маленькую игру. Вы заметите, что мотивация закончить эти дела будет гораздо выше. А когда проект будет завершен, вам будет, что показать, ведь вы уже что-то сделали!
Поймите, что вы гораздо лучше, чем сами думаете. Это называется синдром самозванца. Вам может казаться, что люди вокруг знают и умеют гораздо больше вас, но это неправда. Я не устану повторять: вы станете хорошим разработчиком, если продолжите интенсивно работать. Вы уже доказали, что можете кодить, благодаря тому, что достаточно мотивированы чтобы учиться этому, у вас всё в порядке.