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

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

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

Я часто обнаруживаю, что трачу больше времени на размышления и поиск в Google того, что мне узнать, а не на изучение самого себя.

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

  • Избегайте этого чувства подавленности. Это слишком часто встречается в моей жизни, связанной с развитием. Когда я чувствую себя подавленным, я не работаю.
  • Небольшой постепенный прогресс. Никакой прогресс не может быть слишком маленьким - ставьте ежедневные достижимые цели, а не высокие, чрезмерно амбициозные долгосрочные цели.
  • Сохраняйте фокус. Обучение не обязательно должно быть жестко структурированным и предписанным, оно должно быть взаимосвязанным и взаимосвязанным. Чтобы прогрессировать, он должен опираться на то, что вы знаете, а не на разрозненный набор технологий.

Потреблять

У меня всегда была проблема - как потреблять что-то новое? С одной стороны, есть масса видео, книг, статей, которые могут помочь. Стоит ли мне следовать онлайн-руководству? Или, может быть, просто почитайте последние блоги по дороге на работу? Этого достаточно? Мне нужно делать и то, и другое? А еще послушать подкасты ?! Это может показаться информационной перегрузкой.

Определение фокуса действительно помогло мне в этом. Отличная запись в блоге по этому поводу - Чему не учить? Дэйва Геддски (упоминается в подкасте Fixate). Здесь я сделал нечто подобное. Я составил список технологий, которые хочу изучить и улучшить.

  • Реагировать / Redux
  • Узел / Экспресс
  • Монго
  • GraphQL (новый)
  • TypeScript (новый)

Может показаться, что это много, но этот список не является списком желаний новых технологий, которые я хочу изучать с нуля. Моя повседневная работа - это Full Stack JavaScript (React, Redux, Node, Express, Mongo), поэтому есть много совпадений. У меня есть некоторый опыт работы с React, Redux, Node, Express и Mongo, но это области, в которых я хочу продолжать развиваться. GraphQL совершенно новый, как и TypeScript. Об этом частично сообщает Состояние JavaScript 2018. Для меня это были две технологии, которые явно вытекают из исследования. К тому же это навыки, которым я хочу научиться. И, что наиболее важно, они дополняют мой существующий набор навыков JavaScript.

Изучение дополнительных технологий помогло не чувствовать себя слишком подавленным. Не все обучение одинаково. Мне, как разработчику JavaScript, легче изучать TypeScript, чем Python. Основывайтесь на том, что вы знаете. Если вы накапливаете какие-то знания в Javascript, продолжайте работу с React, Vue или Electron - не сворачивайте с другого пути, запустив Ruby. Я говорю это как человек, совершивший эту ошибку.

Некоторые из моих предыдущих сообщений в блоге были посвящены науке о данных и алгоритмам. Я прошел онлайн-курс по этому вопросу, и он был полезен, хотя и не настолько практичным. Я изо всех сил пытался добиться прогресса. На самом деле, я писал код 40 часов в неделю на своей основной работе, у меня есть другие хобби, такие как бег, я поддерживаю социальную жизнь и общий жизненный уровень, поэтому время, которое у меня есть, чтобы изучать новые вещи, относительно ограничено. Люди, у которых есть больше времени, смогут решить более серьезную задачу. Для меня попытки изучить совершенно новую область, такую ​​как наука о данных и алгоритмы, были слишком трудными. Это вообще не основывалось на моем опыте веб-разработки. Это было похоже на возвращение к основам, и я совсем не улучшал свою существующую базу знаний, и все было совершенно новым. Возникло чувство ошеломления. Моей цели не хватало внимания. А цель изучения «алгоритмов» была слишком дальновидной.

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

Сейчас я смотрю много сеансов кодирования или живого кодирования на Twitch или YouTube, которые мне очень помогли. Отличный пример - приложение-калькулятор React Майкла Джексона, одного из создателей React Router. Я немного знал React, когда смотрел это, но то, как он решил некоторые проблемы, было для меня совершенно новым и совершенно другим - и лучшим - подходом, чем я бы выбрал сам.

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

  • Быстрее. Темп быстрее, чем в базовом практическом руководстве, и меньше внимания уделяется обучению и объяснению элементов выполнения, таких как функции, переменные и редукторы, и многого другого, на концепциях более высокого уровня.
  • Настоящее кодирование: допускаются ошибки, и вы видите процесс отладки кода, который приносит пользу. Кое-что, чего вы не получите в великолепных сериях руководств по подготовке к записи.
  • Надежное преимущество в обучении. Дополнительным преимуществом является то, что я всегда чему-то учусь. Например, если я не изучаю новый синтаксис, я могу увидеть, как другой разработчик (обычно более опытный разработчик) структурирует и организует свое приложение, как они вызывают API-интерфейсы и так далее. Если это не учит меня новому, это дает мне возможность по-другому делать то, что я делал раньше.

Конференции могут быть немного случайными, но потратьте немного времени на поиск подходящих тем, и они действительно полезны. Опасность в том, что тема слишком сложная и вы потратите час впустую. На YouTube-канале Coding Tech есть масса конференций, которые можно посмотреть. Конференции по новым релизам, таким как React Hooks, React Context, Babel 7, хороши. Тот факт, что они демонстрируют новую функциональность, означает, что контент довольно упрощен, поскольку все видят это впервые. Таким образом, недостаток опыта не означает, что вы отстаете, а значит, вы всегда узнаете что-то новое.

И последнее, но самое сложное - это регулярно читать. Я поставил себе цель читать по одному содержательному посту в день хотя бы по одной из изучаемых мной тем. Это немного, но, опять же, это небольшой постепенный прогресс в достижении моих целей, который позволяет мне не переживать из-за того, сколько мне нужно читать. Если я пропущу день, у меня будет всего 10–15 минут дополнительного чтения, чтобы наверстать упущенное.

Чтобы помочь с этим, я создал учетную запись Feedly, чтобы объединять интересующие меня блоги и информационные бюллетени. Здесь важно проявлять бережливость в отношении публикаций, которые вы добавляете. Раньше я пытался использовать этот метод, но у меня ничего не вышло, потому что я добавил слишком много блогов или добавил сайты-агрегаторы новостей, которые публикуют несколько статей в день. В результате мой канал переполнен материалами - некоторые из них имеют отношение к делу, некоторые - нет. Я ошеломлен и в конце концов сдаюсь. На этот раз я добавил только несколько блогов и ни одного автора, который публикует больше пары сообщений в неделю. После настройки я пометил все сообщения, которые были автоматически добавлены в мою ленту, как прочитанные, так что мой почтовый ящик был полностью пуст. Затем, изо дня в день по мере поступления статей - одной или двух в день - я читаю их по мере поступления. Это было управляемо, поэтапно, и, самое главное, я был полностью в курсе происходящего.

Строить

Далее в мантре строится. Как уже упоминалось, мое главное откладывание на потом - понять, чему я должен учиться. Чтобы решить эту проблему, я накладываю ограничения на то, чему я собираюсь научиться или что улучшать. Если его нет в списке, меня это не интересует. Это было самое полезное, что я сделал. Это кажется небольшим, но действительно эффективным упражнением. Он просто убирает весь шум, останавливает блуждание вашего ума и дает вам возможность сосредоточиться. Когда я сейчас делаю личный проект, я даже не задумываясь знаю, что это будут JavaScript и React. Прежде чем я достиг этих целей, я часто думал: «Я использую React в своей повседневной работе, поэтому, возможно, я попробую Vue с Django на бэкэнде». Без фокуса вы довольно быстро потеряете доступность ресурсов.

В конечном итоге цель всего этого - учиться и развиваться. Сейчас, как младшему разработчику, кажется естественным взглянуть на навыки, необходимые старшим разработчикам. Ниже приведены три различных звуковых фрагмента из должностных инструкций старшего разработчика для технического стека JavaScript.

Более 5 лет разработки программного обеспечения с реальными полностековыми JS-приложениями

Сильные, профессиональные знания Javascript (Native) + ES6, React, Bootstrap, HTML / CSS

Минимум 5 лет разработки масштабируемых надежных приложений на Javascript (и таких фреймворках, как AngularJS и ReactJS)

Постоянной темой является то, что им нужен кто-то с * укажите здесь количество лет *, владеющим определенным языком. В описании должности не требуется человека с 1–2-летним опытом работы на 4 или 5 языках. Всем им нужен разработчик с глубокими и детальными знаниями о том, как работает один язык. В конечном счете, имеет значение накопление знаний и навыков, которые приходят со временем. Поэтому, как уже упоминалось, именно поэтому в моем списке используется тема JavaScript. Это сделано намеренно и соответствует вышесказанному о действительно хорошем изучении одного языка.

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

Стратегия, которую я выбрал, чтобы помочь с этим и создать больше вещей, - это попытаться сделать одну значимую фиксацию Github в день. Опять же, это возвращает нас к моей потребности в небольшом постепенном прогрессе. Это хорошо сработало. Я часто удивляюсь, как много я могу сделать за 20 минут. Это также помогает моему рабочему процессу разработки. Я не умею делать рано и часто, но временные ограничения в моем рабочем дне означают, что я соблюдаю этот принцип по умолчанию. Во-вторых, это помогло мне изолировать проблемы. Когда я создаю личный проект, я работаю над одной функцией только для того, чтобы отвлечься на какие-то мошеннические стили CSS. Я полностью отвлекаюсь. Я знаю, что при таком подходе у меня всего 20 минут, поэтому давайте добавим проверку формы - и я сделаю это с помощью лазерной фокусировки. Опять же, ограничение по времени - отличный способ сосредоточиться и не отвлекаться.

Учат

Хорошо. Вот тут-то и приходит на помощь блог 🙃

Я считаю, что писать очень ценно, хотя в последнее время я занимаюсь этим не так часто, как хотелось бы. Это позволяет мне сформулировать свои мысли, получить более четкое представление о кодировании или технических проблемах, с которыми я сталкиваюсь, и, наконец, позволяет мне делиться с более широким сообществом любыми мыслями и идеями. Кроме того, привычка писать помогает мне понять другие хорошие привычки, которые мне следует иметь. Если я пишу, я обычно пишу о коде, который я написал, или о «новом материале», который я изучил, поэтому, когда я пишу, я, естественно, подталкиваю к написанию некоторого кода или, как следствие, к изучению некоторых «новых вещей». Это очень помогает моему личному и профессиональному развитию, и в результате прекрасно вписывается в последний блок мантры «Потребляйте, создавайте, обучайте».