Перед вами перевод статьи Xiang Zhou, опубликованной на сайте freeCodeCamp. Если вы разработчик-самоучка и хотите преодолеть все преграды на пути к цели, добро пожаловать под кат!


«Белая книга на коричневом деревянном столе», фото Alexander Michl на Unsplash

В последние годы многие загорелись желанием освоить программирование. Кто-то делает это с помощью онлайн-курсов, кто-то ходит на семинары, а кто-то просто учится методом проб и ошибок.

Такие веб-сайты, как Code.org, Codecademy и freeCodeCamp набирают все большую популярность, а в сети появилось огромное количество курсов, в том числе и на YouTube.

Однако программирование — это не так просто. Есть определенные трудности, с которыми все мы сталкиваемся, когда учимся писать код.

1. Сколько времени нужно уделять программированию каждый день


Если вы учитесь писать код самостоятельно, скорее всего, в вашей жизни есть и прочие обязанности. Одни работают на полставки или целый день, другие сидят дома с детьми. Так или иначе, у всех свои заботы.

Как же при этом ежедневно находить время на программирование?

Кто-то скажет: «Было бы желание, а время найдется». Все верно, спорить не буду. Но возникает другой вопрос: сколько именно нужно уделять программированию каждый день? Если мой максимум — полчаса, это считается?

Ответить можете только вы сами. Очень сложно определить время, необходимое для обучения. Некоторые полагают, что лучше меньше, но качественнее и 15 минут вполне достаточно.

С другой стороны, я слышал о людях, которые получили работу в сфере девелопмента примерно через год после начала обучения, потому что писали код по 9–10 часов в день. Если вам нужна мотивация, можете взглянуть на этот тред.

Итак, все сводится к одному: только вы сами знаете, сколько часов в день сможете заниматься программированием так, чтобы это вошло в привычку, но не выматывало. Последнее особенно важно. Основатель freeCodeCamp Квинси Ларсон однажды сказал в своем твите:
«Дело не в том, насколько вы продвигаетесь за один день, а в том, что вы продвигаетесь ежедневно».
В видеоролике ниже ведущий программист, не один десяток лет проработавший в сфере информационных технологий, расскажет, сколько времени ежедневно занимает написание кода у разработчиков.

Конечно, это не универсальный рецепт, но вы получите общее представление о том, как подойти к планированию времени на изучение с умом и, что немаловажно, без фанатизма.


2. Как найти золотую середину между «почти не сдвинулся с места» и «сгорел на работе»


Лично я с этим намучился. Бывало, я не мог понять ни единого кусочка кода, ни единой идеи из книги, которую читал, — мой мозг отказывался усваивать информацию. Я выматывался так, что выходил на балкон подышать и успокоиться.

С того момента я стал напоминать себе, что не стоит истощаться и доходить до точки невозврата.

Программирование не самая простая работа. Оно требует концентрации, особенно когда изучаешь что-то новое. Это тяжелый умственный труд: иногда ты даже не понимаешь, почему твой код не работает или, наоборот, почему заработал.



Я осознал, что наибольшей продуктивности мне удавалось достичь, фокусируясь на текущей работе, но при этом не напрягаясь, а наслаждаясь процессом.

Это происходило, когда я:

  • находил проблему, которая требовала решения;
  • находил решение на форумах в сети;
  • пробовал выйти из затруднения несколькими способами, проверяя, какой из них сработает;
  • решал проблему.

Стараясь примириться с тем, что большая часть материала — это скучная запутанная информация (структуры данных, алгоритмы и т. п.), я установил правило 50/50, которым пользуюсь при самообучении.

Я трачу 50% времени на сложные задачи — изучение основ, концептов, алгоритмов и прочего. Остальные 50% остаются на мои собственные проекты, которыми я занимаюсь с удовольствием. Так я добиваюсь гармонии в своем ежедневном расписании.

Проще говоря, нужно любить то, что делаешь. И этот вывод позволяет нам плавно перейти к следующему пункту.

3. Единственный способ преодолеть препятствия — любить свою работу


Банально, но верно. Если вам по душе выбранный путь, если нравится ваша работа и направление, в котором вы двигаетесь, — одобрение окружающих не нужно. Чувство удовлетворенности такого рода невозможно взять взаймы, заменить или, того хуже, симулировать.


4. Всегда возвращайтесь к программированию, когда заканчиваете с другими делами


Реальность самообучения такова: вас никак не могут оставить в покое, наедине с вашими справочниками.

В жизни у всех нас немало других обязанностей. Возможно, вы чей-то супруг или родитель и вам нужно заботиться о своей семье. Может быть, у вас постоянная работа или вы студент, который пишет диплом или получает ученую степень. Когда есть столько дел, как найти время на программирование?

Честно говоря, иногда это попросту невозможно. Случалось, что я подолгу не занимался написанием кода — однажды даже целых два месяца.

Впрочем, после этого перерыва я немедленно вернулся к программированию и тут же понял, что многое забыл. Очень неприятно, открывая книгу, не знать, с какого момента продолжить обучение. Господи, неужели мне придется перечитывать все главы и делать все задания заново?

Это тот самый момент, когда нужно продержаться, выстоять. Необходимо сказать себе: «Так, первый час обучения, кажется, идет медленно и совершенно непродуктивно. Но ничего страшного, я наверстаю упущенное, выучив больше завтра».

Эту пилюлю не подсластить никак иначе — только продолжая работу, несмотря ни на что. Зайдите на форум кодеров в твиттере и пожалуйтесь, но после этого непременно возвращайтесь к программированию.

5. Мотивируйте себя любым способом


Самообучение сильно отличается от занятий в университете или в школе. Пока вы работаете над кодом, вокруг вас нет ни одноклассников, ни общения, а в конце туннеля не ждет пафосная церемонии вручения дипломов. Почти всегда вы предоставлены себе и делаете все самостоятельно. Именно поэтому так важно найти мотивацию, чтобы продолжать двигаться вперед.

Я часто читаю этот подфорум на reddit, так как многие его пользователи — разработчики. При создании софта они все используют самое мощное железо. Что может быть лучшей наградой для программиста?

Вы тоже заведите привычку вознаграждать себя. Это может быть большое или маленькое поощрение — горячий душ в конце дня, прохладительный напиток, похвала самому себе (часто в процессе обучения это необходимо). Повесьте на стену перед собой такое фото. Нужно верить, что однажды ваше рабочее место будет выглядеть так.



6. Не поддавайтесь искушению учиться ради учебы — ходите на собеседования и встречи, рассылайте резюме


Иногда в процессе обучения можно отклониться от намеченного курса. Мне знакомо желание полениться. Но не в том смысле, что не хочется учиться, а в том, что появляется тайная надежда, просиживая дни за монитором, избежать реального испытания — работы в качестве девелопера.

Не поддавайтесь искушению рассуждать: «Я ведь учусь — этого достаточно. Я задумаюсь о поиске работы потом, когда буду готов».

Откровенно говоря, мне самому не мешало бы чаще искать потенциальных клиентов. Даже если речь о бесплатной разработке веб-сайта для родственников и друзей. В таком случае в следующий раз, когда я приду на собеседование, у меня будет материал, который добавит веса резюме. Первый шаг — самый трудный, но его необходимо сделать во что бы то ни стало.

Все перечисленные преграды вырастут на вашем пути к карьере девелопера. Встречайте их с правильным настроем: они сделают вас только сильнее и лучше.

И наконец, приятного программирования! Наслаждайтесь тем, что создаете, — будь то ваш проект или ваше будущее.

Комментарии (13)


  1. Neikist
    21.09.2018 16:40
    +2

    Странно, казалось на днях уже перевод проскакивал, но поиск ничего не выдал…


    1. inkvizitor68sl
      21.09.2018 17:05

      На lifehacker вроде было.


      1. Neikist
        21.09.2018 17:06
        +1

        Не, именно на хабре, я другие сайты редко читаю.

        О, нашел.
        habr.com/company/skillbox/blog/423857


  1. nikkbelov
    21.09.2018 17:01
    +2

    Пытаюсь освоить профессию программиста. Но по собственному опыту скажу, главная проблема отсутствие практики и применимости.
    Ну прошел я курс по Javascript, что на выходе? Появилось понимание структуры кода и все, без практики и применения, это как знать кучу слов на иностранном, но не мочь их сложить в предложения.
    Да я могу сделать сайт, сложив его из кубиков, но уже потихоньку выходит и создавать самим, CSS стал понятнее, но все лишь благодаря тому, что есть применимость.
    Пойти куда-то разработчиком, увы уже не мой вариант, в 40 лет на тебя смотрят, мягко говоря пренебрежительно.
    Вот и приходится читать, изучать пробовать, но без реальных задач, толку мало. А рынок труда у нас в городе (Донецк), мёртв в области IТ…
    Пытаюсь изучить стек CSS+PHP+Javascript. Да делаю сайты, но понимаю, что знаний и опыта все равно очень мало.


    1. Hardcoin
      21.09.2018 17:30

      А зачем куда-то идти? На апворке возраст имеет в 10 раз меньше значения, чем в офисе.


      1. Neikist
        21.09.2018 17:39
        +1

        Новичку? На фриланс? Это конечно не сильно хуже чем средне-паршивая работа в офисе, но ни в какое сравнение не пойдет с работой в хорошей команде (в офисе или удаленно). Тем более джуну (код ревью, работа в команде, работа с задачами, расстановка приоритетов, архитектура). А вот состоявшемуся специалисту уже наверное и можно было бы.


        1. Hardcoin
          21.09.2018 17:43

          ни в какое сравнение не пойдет с работой в хорошей команде в офисе

          В Донецке. Вы это учитывайте. А насчёт удаленной работы в команде ничего против не имею, апворк это как пример. Речь о том, что бы работать не на донецких заказчиков, а на иностранных.


          1. Neikist
            21.09.2018 17:46

            Разве что совсем недолго а потом все равно в команде работу искать (возможно с переездом).


    1. Tyiler
      21.09.2018 18:43
      +1

      посмотрел я на вас. вы пишете — «5 патентов на изобретения». так понимаю вы инженер?
      ну дык… зачем вам сдался этот «CSS+PHP+Javascript»?
      берите книги(курсы) и учите промышленные языки — С, С++, или с Java/С# можете начать.
      дальше, берете заброшенный проект на гитхабе и начинаете его поднимать. если сможете поднять хотя бы один — уже будет что написать в резюме. все.


      1. BigFlask
        22.09.2018 04:31

        Если под боком нет кучи контор, куда можно пойти работать за бесплатно (с целью получить ментора), то промышленные языки — не лучший выбор.


      1. nikkbelov
        24.09.2018 14:16

        Опыт был. Писал программы для контроллера (там свой собственный бейсикоподобный язык) и писал программы для GalileoSky GPS навигатора, там тоже свой Си подобный язык. Разбирался сам, но как ниже отмечено в Донецке нет мест где можно получить в этом опыт…


  1. OtshelnikFm
    21.09.2018 17:11
    +2

    Нужно верить, что однажды ваше рабочее место будет выглядеть так.
    Мой перфекто посмотрел под стол и съёжился…


  1. mphys
    21.09.2018 22:19

    Из всего написанного самое продуктивное имхо это правило 50/50, везде его использую, оно хорошо работает и на основной работе, и в самых разных хобби которыми я занимаюсь и когда либо занимался (да, хобби иногда тоже требует долгой изнурительной тренировки или обучения для того чтобы оно начало приносить удовольствие)