Как успешно научить себя программировать
Я хочу поделиться с вами статьей, которая во время прочтения очень сильно отозвалась во мне. Ее автор девятнадцатилетняя девушка веб-разработчик, Lydia Hallie, больше известная как «the most hardworking, yet most relaxed person» (очень трудолюбивый, но все-таки расслабленный человек) рассказывает о том, как современному разработчику справляться с многочисленными потоками входящей информации и сохранять мотивацию к саморазвитию.
После того, как я опубликовала свою предыдущую статью о том, как я стала разработчицей в 19 лет, сотни людей писали мне примерно одно и то же:
Моя задача: вовлечь в мир технологий как можно больше людей, поэтому очень важно сосредоточиться на тех, кто действительно мотивирован, но просто не знает, с чего начать.

Сегодня существует множество ресурсов, которые «научат вас программировать». Однако, это не самое главное, и статья не об этом. Решающее значение имеет то, как вы строите свою жизнь, обрабатываете новую информацию, сохраняете мотивацию и фокусируетесь на главном.
«Всё это звучит хорошо, Лидия», скажете мне вы, «но, чувствую, это еще одна статья, которая мотивирует меня на 10 минут, пока я не вернусь к Netflix!» Прежде, чем я начну, хочу, чтобы вы поняли, что вы уже крутые, хотя бы потому, что решили научиться программировать. Это значит, что вы можете думать на несколько шагов вперед и способны выйти из зоны комфорта, даже если еще не сделали этого!
Если вам нравится изучать что-то новое и сложное, вы определенно станете хорошим разработчиком.
Я много лет была наставником и часто слышала от своих подопечных, что им не хватает мотивации. Они фокусировались на крупной цели, игнорируя свои небольшие, но все же очень важные улучшения. Поэтому им казалось, что они никуда не движутся.
Хотя я знала, как важно помнить об этом при получении какого-то нового умения, я сама попала в эту ловушку, когда начинала. Я не чувствовала какого-либо прогресса и думала, что все вокруг меня всё равно остаются на голову выше. Мне казалось, что я никогда не достигну их уровня.
Эти мысли мешали осознать, как много важных шагов мне уже удалось сделать. При этом я писала код с первого раза, и создавала всё более сложные приложения. Продолжая сравнивать себя с другими, более опытными людьми, я не могла увидеть свой прогресс. И всё, о чем я могла думать: «я всё еще так далека от своей цели».
Критический момент в обучении программированию реален, и чтобы справиться с ним, нужно приложить усилия. Это в большей или меньшей степени свойственно всем начинающим программистам и я действительно хочу помочь вам преодолеть этот критический момент. Это не значит, что всё на самом деле так, как вам кажется — возможно, всё происходит исключительно у вас в голове. Но сказать проще, чем понять это.
Каждый преодолевает это по-своему, но я подробнее остановлюсь на самых распространенных проблемах всех начинающих программистов: как максимально эффективно работать с новой информацией и как сохранять мотивацию. Я не собираюсь останавливаться на поиске лучших сайтов, потому что это очень субъективно.

Заканчивая даже относительно небольшое проект, я чувствовала такое счастье! Я многому научилась в процессе и имела возможность поработать с технологиями, с которыми никогда раньше не работала.
Эффективная работа с новой информацией
Все мы разные, и по-разному усваиваем информацию. Да, я говорю как Капитан Очевидность, но это не столь очевидно, как может показаться. Прежде, чем научиться кодить, вам придется научиться учиться.
Скоро вы узнаете (или, возможно, уже узнали), что есть два типа общедоступных информационных ресурсов: онлайн-курсы и документация. Однако, если вы не сверхчеловек, то просто не запомните всю информацию, просматривая курсы (даже не из-за трудностей с концентрацией внимания, а из-за того, что они бывают откровенно скучными) или читая текст.
Чувствовать себя потерянным и запутавшимся во время просмотра курсов или чтения документации — нормально, каждый преодолевает это в начале своего пути. Разработчики с трудом могут обучить программированию людей, которые не слишком в этом разбираются, не прибегая к скучным расплывчатым терминам (да-да, это я про вас, Stack Overflow!).
Не важно, насколько по вашему мнению вы круты, не пропускайте основы. Всегда начинайте учить язык с самого начала и ничего не упускайте. База очень важна, и вы обязательно пожалеете о том, что не уделили ей достаточно внимания! Конечно, всегда можно погуглить, но это только замедлит вашу работу. Читая документацию, начинайте с первой страницы (или с 1.1 в некоторых случаях). Кому-то это может показаться пустой тратой времени, но поверьте мне: это не так. Уделяйте внимание всем деталям и в будущем вы будете себе благодарны!
Если вам трудно понять основы, расслабьтесь! Всё будет в порядке. То, как вам сейчас тяжело, никак не влияет, насколько хороши вы будете потом.
Каждые 10 минут или после каждого прочитанного абзаца объясните своими словами, что вы только что узнали. Это может быть достаточно трудно, но скоро вы поймете, какие части вы усвоили не до конца. Лучший способ выучить что-то: объяснить это кому-то другому, даже если рядом никого нет!
Представьте, что вы объясняете эту тему кому-то другому, и как только поймете, что не усваиваете какую-то часть, разберитесь в ней и запишите ответ! Пока будете писать, вы еще раз хорошенько обдумаете информацию, и тогда ее будет легче запомнить.
Не просто слушайте курсы и читайте документацию: активно пользуйтесь новой информацией в своих проектах. Внедряйте все, чему вы научились, даже если это кажется вам незначительным! Это не так просто, как может показаться, а иногда и довольно неприятно, но только так вы поймете, что все делаете правильно. Прокачивать свои навыки нужно в том числе и на практике! Поверьте, вы будете становиться лучше с каждой попыткой, даже если не осознаете этого!

Сохранение мотивации
Меня часто спрашивают, как я заставляла себя писать так много каждый день. Надо сказать, что мне потребовалось какое-то время, чтобы сформулировать, что творилось тогда у меня в голове.
Мы все любим играть, не важно в какие игры. Игры приносят мгновенное удовлетворение, позволяют чувствовать себя успешным от незначительных достижений. Это идеальная формула мотивации! Я смогла получить её в процессе программирования. И это намного проще, чем вам кажется.
Ставьте себе небольшие цели. Не потому, что вы не стремитесь развиваться, наоборот — потому что вы стремитесь развиваться. Составьте список дел, которые вы хотите завершить сегодня. Может быть, прочитать одну страницу, просмотреть один курс или написать 10 строчек кода. Завершив свой список, вы почувствуете себя удовлетворенным и уверенным в своем успехе. Что звучит лучше: «я сделал всё, что планировал на сегодня» или «я сегодня прошел только 2 % курса»? К тому же, даже если вы всего лишь прочитали одну страницу или сделали одно поле ввода, это всё равно невероятно важно осознать. Мгновенное поощрение!
Постоянно напоминайте себе, как далеко вы продвинулись. Это может показаться довольно трудным, потому что прогресс часто остается незамеченным. Вы не можете постоянно видеть свой рост, но поверьте, если вы пишете код каждый день (хотя бы немного), он становится лучше.
Хороший способ — вести дневник. Опишите в одном предложении, с какой проблемой вы столкнулись сегодня, и перечитайте через месяц. Есть очень, очень большая вероятность, что для вас уже больше не будет существовать такой проблемы! Вы увидите, насколько сильно выросли за это время.
Работайте над личным проектом, в котором вы действительно заинтересованы! Не над одним из миллиона в списке дел, но над тем, который вы действительно хотели бы сделать. Я не имею в виду автомобиль с автопилотом или личного робота-повара, выберите что-то поменьше. Освежите макет сайта или напишите маленькую игру. Вы заметите, что мотивация закончить эти дела будет гораздо выше. А когда проект будет завершен, вам будет, что показать, ведь вы уже что-то сделали!
Поймите, что вы гораздо лучше, чем сами думаете. Это называется синдром самозванца. Вам может казаться, что люди вокруг знают и умеют гораздо больше вас, но это неправда. Я не устану повторять: вы станете хорошим разработчиком, если продолжите интенсивно работать. Вы уже доказали, что можете кодить, благодаря тому, что достаточно мотивированы чтобы учиться этому, у вас всё в порядке.
Как не терять мотивацию изучать программирование?

Заниматься однотипным делом рано или поздно надоедает. Даже если вам это сильно нравится, в какой-то момент вы почувствуете скуку или нежелание что-либо делать, у вас попросту опустят руки. На этот счет есть отличная цитата: Станет легче. С каждым днем становится немножко легче. Но делать нужно каждый день – это самое трудное. Но легче обязательно станет.
Мне не раз приходилось сражаться с этим недугом (с переменным успехом), поэтому хотел бы высказаться насчёт того, как можно быть максимально приближенным к такому мотивационному периоду.
Постараюсь абстрагировать это именно на ситуацию с изучением программирования:
- Представьте, что будет, если вы продолжите это делать. И что будет, если перестанете
Порою хочется все бросить, потому что просто лень. Но нужно понять, что это всего лишь временные страдания, которые ведут в достижению какой-либо цели.
Скажу честно, иногда мне кажется, что другим людям программирование интересно гораздо больше, чем мне. Но что будет, если я брошу всё это? Я лишусь возможности работать на одной из самых увлекательных и высокооплачиваемых профессий, на которой можно развиваться всю свою жизнь. Мне придется искать работу из разряда офисного работника, который заполняет бумаги. Безусловно, это вполне себе нормальная работа, но это ли то, к чему я стремлюсь? Возможно, я просижу им всю жизнь, но если я получу первую работу программистом, то мои знания будут только расти, с течением времени я стану идти только вверх по карьерной лестнице.
- Преодолейте отвлекающие факторы
Меня, например, сильно раздражает распорядок на моем рабочем столе. А ещё меня очень сильно отвлекает телефон, на который постоянно приходят разного рода уведомления. Если вы чувствуете, что не можете сосредоточиться — исключайте все лишнее из области видимости.
- Скажите о занятии программированием кому-то другому
Дайте своим друзьям знать, что вы хотите освоить новую профессию. У вас подсознательно будет мысль о том, что вам не хочется облажаться перед людьми, которая будет гнать вас вперед.
- Сравните свои знания на начальном и нынешнем этапах
Задумайтесь о том, что когда-то вы не знали, что такое верстка, а сейчас уже верстаете сайт-лендинг. И это всего лишь спустя месяц! Нужно понимать, что такими шагами вы однажды достигнете своей цели.
- Делайте перерывы
Ни стоит быть зацикленным на программировании. В какой-то момент у вас будет просто кипеть голова от количества информации. Чем больше мы знаем — тем больше мы не знаем. Что учить: React, Vue.js или Angular? А может просто посмотреть видос о том, как сделать корзину на сайте на чистом JS?
Дайте себе время оценить все варианты, почитать об этом в каком-то лайтовом варианте, а не в стиле технической документации, попросите совета у других людей. Поиграйте в футбол, посмотрите фильм, полежите на диване. Иногда нужно повалять дурака какое-то время, необязательно 3 дня, это может быть что-то вроде месяца.
Главное чтобы в вас снова горело желание изучать программирование снова! 🙂
Как заставить себя учить по вечерам язык программирования?

«Не могу себя заставить учить программирование по вечерам, какой-то ступор. Нравится идея изучать Питон, очень клевый удобный язык, но по вечерам привычно занимаюсь какой-то фигней вместо полезных дел, и не получается прервать этот замкнутый круг. Понимаю, что все дело в первом шаге, но мозг как-то увиливает от размышлений на эту тему».
Я уже писал статью для школы английского Скайенг о том, как пытался заставлять себя учить английский язык и что сработало. Там были такие советы:
1. Найдите причину, которая щелкает внутри.
2. Придумайте проект, а не делайте ради «выучить чтобы в будущем пригодилось»
3. Начинайте работать над проектом прямо сейчас с тех знаний и навыков, что уже есть.
4. Если чего-то не хватает — разбирайте конкретный прием и доводите его до автоматизма.
5. Занимайтесь регулярно, по чуть-чуть и пока в кайф. Снижайте требование пока не пропадет внутреннее давление.
6. Делайте шаг назад и собирайте обратную связь.
Это все отвечает на вопрос, но допишу новых приемов и концепций, которые узнал с того момента. Вдруг у вас взлетят.
Концепций несколько, они друг с другом несвязанны, не пугайтесь. Вот они:
— почему не хочется ничего делать после работы;
— одновременно один новый проект;
— заставить никак не получится;
— важность правильного времени и контекста практики;
— даже 2 минуты — ок;
— ясность побеждает мотивацию.
Это нормально, что вечером не хочется напрягаться
В организме есть система вознаграждения-наказания, которая делает приятно, когда мы достигаем поставленных целей и делает больно, когда промахиваемся. Это такая структура нервной системы, в которую входят многие отделы мозга и все такое.
Она нужна для закрепления правильного поведения:
— поел вкусной еды → приятно, значит нужно повторить в следующий раз;
— ткнул собаку палкой → укусила, больно, больше так делать не буду;
— побегал → кайфово еще и самочувствие улучшается, значит это правильно.
В целом все наше поведение строится так, чтобы мы стремились к приятному, а неприятного избегали. Если приятного больше, чем неприятного — значит счастье. Если больше неприятного, то мозг приунывает и в какой-то момент начинает искать удовольствие на стороне: в еде, алкоголе, соцсетях и мемчиках. Этого добра сейчас навалом.
Значит, если весь день упарывался и работал, то вечером хочется расслабиться и получить свою дозу удовольствия иначе зачем это все. Но если вместо домашнего расслабона я вспоминаю, что всегда хотел писать музыку и понимаю, что лучше по чуть-чуть и каждый день, чтобы нарабатывался навык — опускаю голову, иду за клавишами, пытаюсь репетировать и через месяц самотерроризма успешно бросаю.
Если хотите заниматься программированием, то нужно сбалансировать уровень нужного и кайфового. Нужное — это все ради чего нужно напрягаться. Кайфовое — что приносит удовольствие: прогулка, чтение, потупить на дивание, любимый ситком.
Одновременно один проект
Иначе все превращается в бесконечный список и мозга пасует просто от количества задач. Мозгу нравится, когда список небольшой и закрытый.
Небольшой — 4 ± 1 дело на сегодня. Это связано с тем, что наша оперативная память может обрабатывать в среднем 4 интеллектуальных объекта. Чем больше уровень напряжения, тем меньше это значение.
Закрытый список — значит, что после утреннего планирования список запирается на замок, а все новые и срочные дела кидаются в буфера «сделаю завтра». Это все здорово снимает напряжение.
Если вы одновременно учитесь бегать, медитировать и программировать и все «нужно», то выбирайте что-то одно.
Заставить — никак
Об этом есть в статье для Скайенга, но повторю, потому что важно.
Нельзя себя заставить что-то делать, если внутри не щелкает, в долгосрочной перспективе. Если рационально «нужно», но по-честному ничего не хочется, то ракета не взлетит, потому что самотеррористы умрут.
С программированием поможет поиск эмоционального щелчка, который объясняет зачем я все это делаю, как это щелкает у меня внутри. Иногда щелкает тщеславие, иногда желание избавиться от неприятного — и это все лучше вытаскивать на поверхность.
Время и контекст
Мне долго казалось, что писать статьи нужно за подготовленным рабочим местом. Садишься за стол, убираешь лишнее, выключаешь внешний мир, заводишь помодоро. Оказалось, что это шляпа, потому что монотонность и однообразие.
Я целый день сижу текстовом редакторе, а потом решаю передохнуть от работы и ответить на вопрос подписчиков — в текстовом редакторе. Парам-парам-пам.
В общем, я поэкспериментировал и понял, что тезисы мне кайфовее накидывать в смартфон во время прогулки. Это смена контекста и другое время.
У Иличевского в «Персе» отец готовился к экзаменам на камнях в море, до которых доплывал с тетрадью с конспектами над головой.
Если не получается заниматься программированием вечером, попробуйте в обеденный перерыв или рано утром перед работой.
Чуть-чуть полезно
Даже 2 минуты полезнее, чем ничего. Писал об этом в ответе на вопрос «Как делать важное дело, когда хочешь серьезно, а пары часов нет».
Коротко:
— не стесняйтесь делать самый минимум при котором не возникает сопротивления;
— иногда нет ресурса делать идеально и это нормально;
— иногда нет ресурса вообще делать проект и тогда его стоит отложить до лучших времен;
— если откладываете, делайте финальный проект, чтобы можно было напомнить себе, что все не зря;
— считайте успешные попытки.
Начните с простого запуска и выключения Питона, может это поможет постепенно втянуться.
Ясность побеждает мотивацию
Если проговорить, что и когда будешь делать, то шанс не слиться увеличивается с 30 до 90%. Нам часто не хватает не мотивации, а ясности. Поэтому планирую точно: «Я буду бегать 3 раза в неделю около 20:00, когда будут погода и настроение».
То есть должна получиться простая формула, которую можно записать. «После того, как я сделал (сделала) А, я делаю Б». Дальше надо делать А и Б, чтобы привычка стала автоматической.
Важно понимать еще с утра, чем именно вы будете заниматься, когда придет время. Если вы откроете Питон и не будете знать план на сегодня, то это съест энергию и завтра даже открывать не захочется.
Как-то так. Кстати, наиболее частое открытие в ребят, прошедших курс о долговременных начинаниях — что оказывается можно перестать себя терроризировать.
Читательница Даша про учебу джаваскрипту:
«Задача «Выучить джаваскрипт» уже который год кочует из одного списка целей в другой. Поэтому я решила, что это не так важно и забила. Но мне нравится учиться и нравится логика кода, поэтому я спокойно занимаюсь кодом несколько часов в неделю для зарядки мышления и сбора новых связей. И этого достаточно: тут и удовольствие, и польза, и никакого самотерроризма».
Про мотивацию для изучающих программирование | советы/наблюдения для изучающих программирование. Часть 1
Приветствую, в этом посте не будет про учебные материалы. У меня скопились какие то наблюдения про сам процесс обучения программированию, кажется они были бы полезны начинающим. Я постарался выбрать не самые банальные вещи, руководствуясь тем, может ли незнание о них иметь долгоиграющие последствия. По итогу, получился слишком большой текст, поэтому будет несколько частей.
Мой канал в телеге — https://t.me/tobeprog , там о методах обучения и обзоры на материалы
Кажется, слово «мотивация» скоро станет ругательством. Но в программировании эта проблема имеет место быть, речь идет, о выгорании — достаточно серьезной теме в индустрии. Правда, если так можно выразиться, это — «возрастная» проблема, никоим боком не касается тех кто только учится, да даже тех, кто работает всего лишь пару-тройку лет. Если интересно, что это:
Почему говорить о мотивации при изучении программирования немного нелепо? Если почитать что-то о мотивации, как о явлении, будь то приближенное к научному методу или очередное балабольство об успешном успехе, то все сводится к тому, что мозгу нравится получать гарантированную награду. Дальше, обычно рассуждения о том, как же его настроить на перспективную и хорошую награду, а не на быструю и плохую.
Самое забавное, что программирование, особенно в начале его изучения, само по себе, ну очень щедро на дачу этих самых наград. Возьмем того же Свейгарта, можно долго рассуждать по каким причинам это отличный вариант для старта, как его вплести в изучение cs(мой прошлый пост про это), но ведь не поэтому книга стала так популярна. Все куда проще, просто кто-то начал читать, и вдруг узнал, что оказывается написать что то впечатляющее совсем не сложно, и скорее всего сразу же разослал результат всем друзьям.
Да, может прозвучит смешно, но когда новичок видит, что сам может написать программу, которая заполняет осточертевшую таблицу в exсel, или сама играет в динозаврика в Google Chrome, он словно получает суперспособность. Оказывается, эта жужащая кулером коробка, вполне подвластна, и позволяет делать невероятные вещи, но почему то об этом мало кто знает. Возможно, моя узколобость, но, сходу не смогу назвать другую сферу, где есть подобный эффект, притом в самом начале изучения.
Первое, что сделает прочитавший Свейгарта — попробует внедрить автоматизацию вообще везде где можно, второе — пойдет искать интересные варианты и идеи для автоматизации, чтобы внедрить уже их(ну и третье, задумается, а нельзя ли, полностью автоматизировать рабочий процесс, вполне естественное желание, в том же сабреддите r/Python постоянно всплывают подобные истории, некоторые очень впечатляют, иногда в печальном смысле, когда вся сложная система дает сбой, и последствия крайне плачевны).
Не нужна никакая мотивация извне, задач, а главное рвения их решить, будет столько, что скорее, встанет вопрос о нехватке времени. Но, не смотря на это, я все чаще вижу материалы на тему «мотивация для начинающих программировать». Наверно, нечему удивляться, учитывая общий тренд мотивировать на все что угодно, однако, в нашем случае, за этим может скрываться очень неприятная проблема.
Старое-доброе учительское — «это не я вас плохо учу, это вы недостаточно хотите учится». Нехваткой мотивации ученика можно оправдать и плохо читаемый курс, и не правильно рекомендованный материал, да вообще все что угодно. А от обилия «мотивации для начинающих», у учащегося может сложится впечатление, что проблема именно в нем, а не в учителе. Сколько людей посчитало программирование чем то невероятно скучным, перегруженным и по итогу дропнуло обучение, благодаря такому подходу?
В одном из постов, я писал, что если книга(или курс) по вводу в ЯП больше напоминает справочник, она просто не предназначена для новичков. Это не значит что материал должен быть поверхностным, идеальный вариант — когда хочется преодолевать трудности, что бы узнать, что будет дальше. Хороших книг/курсов много, если скучно — лучше сразу менять, а не искать «призрачную» мотивацию.