Как я сменил карьеру с нуля, чтобы стать уверенным фронтендером

внешний интерфейс программист JavaScript

1. Введение

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

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

Я начал интенсивную учебу в начале 2017 года. Я устроился на свою первую фронтенд-работу после ноябрьских каникул в прошлом году, и сегодня я работаю всего год. Далее я поделюсь своим путем обучения, методом обучения и учебными ресурсами, надеясь помочь большему количеству людей.

Во-вторых, подготовка

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

1. книга

«Сила привычки»The Power of Habit). Эта книга заставила меня понять, что для изменения моих вредных привычек нужен научный метод, а самобичевание и тревога бесполезны. Изменение привычки поддерживается не субъективной силой воли, а сигналами (не знаю, как перевести, стимулами?) и рутиной, поэтому я сменил место учебы с дома на Starbucks. Сигнал делится на эмоции, время, место, предыдущее поведение и т. д., и все это нужно найти и найти самостоятельно. Найдите сигнал, который запускает вашу вредную привычку, и измените его. Кроме того, составляйте план каждый день Планирование вызывает ожидание вознаграждения и снижает вероятность того, что вы вернетесь к плохим привычкам. Самое главное, формирование ключевых хороших привычек облегчит вам формирование других хороших привычек. Например, как только формируется привычка просыпаться по утрам, у меня также вырабатывается привычка изучать утром самые сложные знания.

2. Курс

На Coursera есть курс под названиемLearning How To Learn, в настоящее время является самым посещаемым курсом МООК в мире. Этот класс бесплатный. Преподаватель Доктор Барбара Окли — профессор технических наук Оклендского университета. Изначально она изучала славянский язык и литературу, всегда боялась инженерии, да и по математике и физике у нее были плохие оценки, и только когда ей исполнилось почти 30 лет, она решила бросить себе вызов, чтобы изучать инженерию. Слушать ее рассказ о процессе обучения — самое убедительное. Другой лектор, доктор Терренс Сейновски, является ведущим экспертом в области неврологии. Он расскажет вам, почему и как учиться с эмпирической точки зрения науки о мозге и нейронауки. Ниже приведены некоторые концепции, которые я применил в этом курсе.

1. Дивергентный и централизованный режим работы мозга

Рассеянный режим означает отвлечение внимания от объекта работы, расслабление и возможность возникновения вдохновения. Сосредоточенный режим естественно относится к полному вниманию к объекту работы и высокоинтенсивному мышлению. При учебе использую технику Помидора, делая 5-минутный перерыв на каждые 25 минут работы. Затем каждые 2-3 часа на работе отправляйтесь на прогулку или играйте с гирями дома. После того, как эта привычка сформируется, произойдет много волшебных вещей. Например, однажды, когда я писал Rxjs-приложение, я застрял на одном месте и не мог придумать решение, потом я пошел в душ, и пришло вдохновение, и оно было решено путем изменения комбинации мало операторов. И бесчисленное количество раз я придумывал решение во сне, просыпался и пробовал его, и оно действительно работало.

Во-вторых, больше заниматься

Доктор Терренс Сейновски объясняет, почему упражнения вызывают рост новых нейронов в мозгу. При высокоинтенсивной умственной деятельности ваш мозг должен функционировать оптимально. Я был фанатом фитнеса (на фото ниже) до того, как начал учиться и ходил в спортзал по крайней мере четыре дня в неделю. В период учебы, прежде чем я нашел работу, я также продолжал тренироваться с такой частотой. После работы у меня не было времени пойти в спортзал, поэтому я купил гребной тренажер Concept 2 и утром занимался дома. Упражнения рекомендуют метод HIIT (высокоинтенсивный интервальный тренинг), который быстро сжигает жир и позволяет достичь эффекта от упражнений в кратчайшие сроки.

deadlift

тренировка становой тяги

В-третьих, преднамеренное обучение

Когда я был студентом, я часто игнорировал практику задавать вопросы, и когда я понимал ответ, я думал, что освоил его. Но на самом деле знать ответ и написать его самому — две разные вещи. Учащиеся склонны к иллюзии компетентности, и когда они понимают пункты знаний, они думают, что освоили их. Только тот, кто может объяснить это самостоятельно, может считаться владеющим собой. Найдите в Интернете несколько небольших задач (например, 100 дней кода и JavaScript 30) и напишите больше вопросов о кодовых войнах и LeetCode (в основном я задаю вопросы о кодовых войнах), которые могут закрепить знания, которые вы только что узнали.

В-четвертых, интервальные повторения

Изучать тему по 6 часов в день определенно лучше, чем тратить по 1 часу на изучение одной и той же темы в течение 6 дней. Конечно, повторение — это не просто перечитывание. Вместо этого намеренно вспомните его, чтобы проверить, можете ли вы его вспомнить. Вы можете попробовать программное обеспечение Studies для создания и управления карточками знаний для удобного просмотра. Доступно на iOS и Mac.

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

привычка

Рано вставать. Просыпайтесь в 4 утра каждое утро. Я знаю, это звучит безумно, но я занимаюсь этим уже полтора года. (Есть исключения, но в большинстве случаев самое позднее время не превышает 5 часов, и очень немногие исключения, такие как сверхурочные, не превышают 6 часов). Моей старой привычкой было играть с телефоном до 2 часов ночи и врать себе, думая, что я сова. Потребовался месяц, чтобы изменить мою привычку. Вот несколько советов. 1. Принимайте добавки. Я принимаю Swiss Sleep, австралийскую пищевую добавку на травах. Я знаю, что многие эксперты говорят, что пищевые добавки ненадежны, но после их приема я стал лучше спать, а глубина сна, которую я отслеживал с помощью Sleep Cycle, увеличилась. 2. Не пейте кофе после 14:00 и не смотрите электронные экраны после 20:00. (Это то состояние, в котором я был, когда учился полный рабочий день. После того, как я присоединился к Али, компромисс, который я использовал, заключался в том, чтобы установить Flux на компьютер, и экран вызывал у меня сонливость.) 3. Сделайте глубокий вдох, прежде чем идти лечь в постель и замедлить частоту дыхания. В-четвертых, я использую прикроватную лампу Yeelight для имитации утреннего восхода солнца. Ощущение естественного пробуждения, не такое раздражающее, как будильник. Проснувшись утром, вас никто не побеспокоит как минимум 3 часа утром (я сделал это более экстремально, просто удалил WeChat, и весь день вас никто не беспокоил). И рано ложиться спать, и не будет бесцельно играть в мобильный чат. С момента пробуждения утром до полудня я могу поставить 10 будильников Pomodoro. Между ними много времени для отдыха.

Приложение

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

3. Учебные ресурсы

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

1. Frontend Masters

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

  1. The Good Parts of JavaScript and the Web

    Преподаватель — Дуглас Крокфорд, крестный отец JS и автор книги «Сущность языка JavaScript». Этот класс охватывает историю JS и некоторые важные детали языка с акцентом на функции. Крокфорд считает, что функции — самая важная часть языка JS. Во второй половине рассказывается о том, как работают браузеры и серверы, а также о сетевой безопасности.

  2. (1) Deep JavaScript Foundations (2) Rethinking Asynchronous JavaScript (3) Functional-Light JavaScript, v2 (4) ES6: The Right Parts (5) Organizing JavaScript Functionality (6) Coercion in JavaScript

    Всего курсов 6, а учителем является Кайл Симпсон, автор серии книг "JS You Don't Know", о нем будет сказано позже. Первый курс погружается в большинство важных деталей JS, что является первым шагом в хорошем изучении JS. Несколько других курсов продолжают делиться на темы, а именно асинхронное программирование, важная часть ES6, организация функциональных модулей JS (после изучения этого я никогда не писал спагетти-код), облегченное функциональное программирование (с вспомогательными книгами, личное, я думаю, это обязательно для разработки JS) и, наконец, обязательное преобразование типов в JS.

  3. (1) Webpack 4 Fundamentals (2) Web Performance with Webpack (3) Webpack Plugins System

    Всего есть 3 курса по Webpack, а учителем является Шон Ларкин. Технический менеджер программы Microsoft Edge, член основной команды Webpack и Angular, недавно приехал в Китай, чтобы принять участие в конференции по интерфейсу. Эти курсы начинаются с основ и заканчиваются продвинутыми, представляя основные принципы, навыки работы и экологию плагинов Webpack.

  4. Hardcore Functional Programming in JavaScript

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

  5. (1) Asynchronous Programming in JavaScript (with Rx.js Observables) (2) Advanced Asynchronous JavaScript

    Всего два курса. Учитель Джафар Хусейн. Руководитель группы инженеров пользовательского интерфейса Netflix, эксперт по реактивному программированию, член TC39. Первый курс начинается с нуля, чтобы написать общие операторы Rxjs, и постепенно переходит к обработке потока событий DOM, обработке сетевых запросов и т. д. Второй курс — это продвинутый курс, написание Observable с нуля, а затем использование Observable для решения некоторых сложных проблем с анимацией. Наконец, приложение будет написано с использованием знаний курса.

  6. Advanced Vue.js Features from the Ground Up

    Учителя зовут Ю Юси, мне не нужно его представлять. В этом курсе You Yuxi научит вас внедрять основные компоненты Vue с нуля, такие как реактивные системы, плагины, функции рендеринга, маршрутизацию, управление состоянием и т. д.

Есть также много отличных курсов, все из которых слишком велики, чтобы их перечислять. Всем рекомендую отправиться на поиски сокровищ. Кроме того, Frontend Masters — это система подписки, и стоимость ее относительно высока: при ежемесячной оплате она приближается к $40 в месяц, а годовая оплата будет намного дешевле. В Черную пятницу и в начале учебного года будут скидки. Я забронировал на год по сниженной цене во время школьного сезона.

Кроме того, Frontend Masters ежегодно публикует бесплатное учебное пособие по интерфейсу. Эти годыкликните сюда.

2. Egghead

Стиль этого сайта короткий и лаконичный. Каждое видео очень короткое и говорит очень быстро, что подходит для фронтенд-практиков, которые имеют определенную основу и хотят использовать фрагментированное время для перезарядки. Многие авторы библиотек расскажут здесь о своей работе, например, Дэн Абрамов расскажет о Redux здесь, Мишель Вестстрат расскажет здесь о Mobx и Mobx State Tree и т. д. Они бесплатны. Платные курсы также в основном качественные. Некоторые основные технологии, которые вы хотите изучить, популярные библиотеки, большинство из них можно найти здесь. Например, Ramda, у нее более 200 API, и она сильно отличается от других библиотек, как я могу использовать столько API за короткий промежуток времени? Помимо большого количества тренировок и времени в метро для проверки документов, практические курсы по Egghead также неотделимы. Вот еще несколько курсов, которые мне больше всего помогли. Есть несколько оставшихся уроков, которые я расскажу позже в этой статье.

  1. (1) RxJS Beyond the Basics: Creating Observables from scratch (2) RxJS Subjects and Multicasting Operators (3) Save time avoiding common mistakes using RxJS (4)Use Higher Order Observables in RxJS Effectively

    Это все курсы RxJS, а учителем является Андре Штальц, один из тех, кого я больше всего уважаю, и я расскажу о нем позже. Эти курсы варьируются от вводного RxJS до продвинутых операций. Эти курсы будут пересекаться с курсами Джафара Хусейна, упомянутыми выше, но я думаю, что обучение у разных учителей и с разных точек зрения может быть более всеобъемлющим. Конечно, вам не нужно искать двух учителей для каждой темы... Я только что узнал, что на обоих сайтах, на которые я подписан, есть курсы RxJS, поэтому я выучил их все.

  2. Automate Daily Development Tasks with Bash

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

  3. Quickly Transform Data with Transducers

    В этом курсе была изучена статья, которую я опубликовал ранее об устранении циклов for с использованием метода Transduce.

У Egghead также есть много продвинутых курсов по CSS и других крупных курсов по интерфейсу, таких как модульное тестирование, бессерверное тестирование и т. д. Есть также три курса функционального программирования более высокого порядка, о которых я расскажу в следующем разделе.

3. Udemy

Udemy — это Taobao в мире онлайн-образования, и у него есть всевозможные курсы. Вы можете учиться музыке, рисованию и даже Вин Чун... Конечно, вы можете изучать программирование, и некоторые популярные учителя программирования действительно хороши. У Удеми есть хитрость: курсы стоят 200 долларов, часто со скидкой 9,90 долларов. Я купил все курсы по самой низкой цене.Я купил более 60 курсов за полтора года, как правило, в сезоны скидок, такие как Черная пятница и Рождество.Конечно, Udemy проводит акции почти каждый месяц. Курсы, которые я купил, охватывают интерфейс и серверную часть, глубокое обучение, разработку блокчейна и т. д. Я изучил только 2/3 начальных курсов, а остальные я действительно не могу выучить, большинство из них - импульсивные покупки...

screenshot

Скриншот части моего курса

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

Один из них — Стивен Грайдер, я купил большинство его курсов. Стивен хорошо разбирает инженерные концепции с помощью очень интуитивно понятных диаграмм, и он может разобрать даже самые сложные вещи и объяснить их повседневным языком. Когда я впервые начал изучать алгоритмы, мне было трудно. Алгоритмический класс Стивена научил меня базовым компьютерным алгоритмам с помощью JS. У него также есть курсы по Node, React, MongoDB и GraphQL, в основном охватывающие начальный и продвинутый уровни.

Второй — Эндрю Мид. Его преподавательские способности также очень хороши.Я впервые изучил Node из его курса и многому научился. Кроме того, он очень своевременно и подробно отвечал на вопросы студентов. Повторяемость его курсов и курсов Стивена довольно высока, так что вам не нужно покупать оба.

Если вы заинтересованы в изучении iOS-разработки, вам настоятельно рекомендуется пройти курс Анжелы Ю. (Я полгода занимался разработкой React Native, поэтому пошел учиться нативной разработке.) Лекции Анджелы юмористические и милые, а новички дружелюбные. Похоже, она выросла в Китае и изучала медицину в Великобритании. Первоначально врач, затем переключился на разработку и дизайн iOS. Все великие жизни разные...

4. Wes Bos

Вес Бос может быть эквивалентом Руань Ифэн в Северной Америке... Конечно, эта аналогия неуместна. Я имею в виду, что его курсы охватывают широкий спектр областей переднего плана и очень популярны. Если вы давно не начинали, то можете пройти его бесплатный курс JavaScript 30. Пишите веб-приложение на нативном JS каждый день в течение месяца. Mozilla также спонсировала его курс по CSS Grid, чтобы привлечь разработчиков к FireFox. Вы также можете пройти этот курс бесплатно. Он также прошел платные курсы Node и React. Недавно подготовил высокоуровневый курс React и GraphQL, жду, может куплю. Кроме того, он ведет подкаст Syntax о фронтенд-разработке, который я слушаю в каждом выпуске. Прослушивание с удвоенной скоростью в переполненном метро может поглотить много новых знаний.

5. YouTube

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

  1. Fun Fun Function

    Имя ведущего слишком длинное, и фанаты называют его MPJ. MPJ — швед, раньше работал в Spotify, а недавно уволился, чтобы работать на Fun Fun Forum на постоянной основе. Этот канал охватывает очень сложные знания JS и интерфейсной разработки. На этом канале я узнал то же, что и в других местах, например, функциональное программирование, шаблоны проектирования и т. д., но обучение здесь больше похоже на расслабляющий взгляд в реальном времени на то, как мастер пишет код и решает проблемы.

  2. Traversy Media

    Якоря очень трудолюбивы и часто обновляются. Содержание в основном начальное и среднее, что очень подходит для новичков. Я также иногда просматриваю его новые учебные пособия, пишу эффект движения с помощью собственного JS и пишу 100% полную корпоративную страницу дисплея с помощью CSS.

  3. Coding Tech

    Этот канал постоянно пополняется последними высококачественными выступлениями в компьютерной индустрии. Фронтенд и другие направления.

6. GitHub

Ссылки на чужой код на GitHub могут ускорить ваше понимание. Например, у Джейсона Миллера (я представлю его позже) есть популярный репозиторий, я прочитал каждый из них. EventEmitter, управление состоянием, автоматическое размещение асинхронных функций в библиотеке инструментов веб-воркера, полифил Fetch API и т. д. Он реализовал это в пять-шесть строк кода и выпустил в NPM как полный пакет. Существуют также репозитории, такие как You Don't Need jQuery, You Don't Need Lodash, 30 Seconds of Code и т. д., которые очень полезны для улучшения способности решения проблем с помощью собственного JS. Время фрагмента можно узнать на мобильном телефоне.

7. JavaScript Weekly

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

В-четвертых, технические люди, которые влияют на меня

Если вы знакомы с теорией 10 000 часов гениальности, вы, вероятно, знаете о незаменимой роли хорошего наставника в личностном росте. Большинству людей не так повезло найти хорошего наставника. Я тоже. Моя несовершенная альтернатива этому — следовать за мыслителями и пионерами отрасли и слушать их советы о том, как они думают и работают. Вот технари, которые больше всего на меня повлияли:

  1. Кайл Симпсон, он представил мой JS, а также вывел его на продвинутый уровень. Весь мой путь обучения имеет его влияние. Как педагог, он дает учащимся разные советы. Я буду следить за всеми его выступлениями и проектами с открытым исходным кодом. Твиттер: @getify

  2. Эрик Эллиотт, у него я начал изучать функциональное программирование. К счастью, когда я впервые начал изучать программирование, мне довелось встретить Эрика и начать сериализовать учебные пособия по функциональному программированию на Medium. После трех месяцев изучения JS я столкнулся с совершенно новой парадигмой программирования и был убежден. Я рекомендую эту серию статей всем JS-разработчикам.Composing SoftwareВы можете послушать своего предшественника, который писал программы со времен BASIC, и его мнение о разных парадигмах программирования, узнать, почему композиция лучше наследования и почему JS подходит для функционального программирования. Твиттер: _ericelliott

  3. Андре Стальц, эксперт сообщества по реактивному программированию. Если вы хотите изучить реактивное программирование, обязательно прочитайте эту статью, которую он написал:The introduction to Reactive Programming you've been missingОн также написал функциональную реактивную структуру под названиемCycle.jsПомимо технологий, что меня больше всего восхищает в нем, так это его размышления об отношениях между технологиями и обществом. Он недоволен текущим статусом таких интернет-гигантов, как Facebook и Google, контролирующих данные пользователей, и одной из его миссий является создание децентрализованного Интернета. (Основатель Всемирной паутины сэр Тим Бернерс-Ли делает то же самое.) Недавно он выпустил мобильное приложение для Android под названием Manyverse, по-настоящему децентрализованную социальную платформу. Приложение написано на React Native и имеет открытый исходный код. Если вам интересно, вы можете посмотреть исходный код, чтобы увидеть, как он организует код. Твиттер: @andrestaltz

  4. Сара Драснер Сара очень милая сестра, очень дружелюбная. Она является экспертом по SVG-анимации, экспертом по CSS и старшим разработчиком в Microsoft. Также является членом основной команды Vue. У нее есть курсы по Vue.js, продвинутой SVG-анимации, дизайну пользовательского интерфейса и многому другому на Frontend Masters. Она также публикует много советов по развитию в Твиттере. Твиттер: @sarah_edo

  5. Уэс Бос только что упомянул об этом. Помимо того, что он дает разработчикам множество советов по подкастам, он также делится множеством советов по разработке в Twitter, включая JS, CSS, Bash, VSCode и другие. Я также использовал многие приемы, которыми он поделился при разработке, что сэкономило много времени. Твиттер: @wesbos

  6. Матиас Байненс, инженер Google V8 Engine, член TC39. Он расскажет разработчикам, как писать код с точки зрения реализации движка. Он также поделится некоторыми деталями проекта V8 и т. д. Я уже писал статью об устранении циклов for, и многие возражали, а некоторые прямо издевались надо мной. Одно из утверждений состоит в том, что функции высшего порядка не так эффективны, как циклы for. Как новичок, как я могу иметь смелость столкнуться с сомнениями старших разработчиков? Потому что разработчики движка сказали, что разница в производительности на уровне микроязыка не станет узким местом производительности всего вашего приложения. Вы должны сосредоточиться на написании понятного и поддерживаемого кода. Твиттер: @mathias

  7. Брайан Лонсдорф Сетевое имя Доктор Булин Этот парень гений. Он немного застенчив, но когда дело доходит до функционального программирования, в котором он лучше всех разбирается, он всегда может сформулировать свои дикие идеи. Если вы хотите изучить хардкорное функциональное программирование, рекомендуется начать с него. Его обновления в Твиттере нечасты, но когда они появляются, обычно стоит делать заметки. Твиттер: @drboolean

  8. Джейсон Миллер, только что упомянул его. Он инженер в команде Google Chrome и автор Preact. Он написал кучу библиотек, которые в среднем состояли всего из дюжины строк кода. При изучении его кода не нужно прыгать файл за файлом, потому что он находится в одном файле... Он также очень активен в Твиттере. Твиттер: @_developit

  9. Бартош Милевский: Это настоящий бог. Я сказал, что если я попал под его влияние, меня подозревают в том, что я насильно отдал себе деньги. У него есть докторская степень по квантовой физике, позже он занялся разработкой программного обеспечения, стал экспертом по C++ и публиковал монографии по C++. Позже, поскольку я не выносил плохого дизайна C++, я начал писать Haskell и стал экспертом. Недавно я снова обратил свой интерес к теории категорий и начал преподавать теорию категорий программистам. Он также изучает теорию музыки как любитель (я знаю это из его списка лайков на YouTube...). В течение последних нескольких месяцев я несколько раз в неделю по утрам заходил на его канал на YouTube, чтобы послушать, как он рассказывает о теории категорий (которая не требует продвинутых математических знаний). Я вернусь к его учебнику по теории категорий позже. Твиттер: @BartoszMilewski

Пять, дорожная карта обучения функциональному программированию

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

Я предлагаю каждому найти точку интереса, которая стимулирует его рост, не обязательно такую ​​же, как у меня. Вы можете выбрать визуализацию данных, расширенную анимацию, дизайн пользовательского интерфейса/UX (понимание кода и дизайна даст вам уникальное конкурентное преимущество) и многое другое. Заинтересованные в последних двух частях могут следить за Сарой Драснер иMary Louс работой.

Учебник по системе

  1. Functional-Light JavaScriptтолько что упомянутого Кайла Симпсона. Эта книга и книга Эрика ЭллиоттаComposing SoftwareЛучший учебник для начала работы с функциональным программированием JS. Знания, полученные в этих двух учебниках, позволят вам легко справиться с практическими потребностями функционального программирования на работе. При нормальных обстоятельствах функциональный код, разрешенный в вашем проекте, может находиться только в этом диапазоне, и другим будет сложно поддерживать его, если он более хардкорный.

  2. Professor Frisby's Mostly Adequate Guide to Functional ProgrammingАвтор Брайан Лонсдорф. Он был доктором Булианом, когда писал код, и профессором Фрисби, когда писал книгу... К концу этой книги вы будете иметь более 90% знаний о приложениях функционального программирования.

  3. Professor Frisby Introduces Composable Functional JavaScriptАвтор по-прежнему Брайан. Уроки по Умнику. Хотя содержание курса пересекается с книгой выше, его все же стоит прочитать. Брайан читает лекции оживленно, что довольно мило.

  4. Learn You A Haskell for Great GoodОдин из лучших ресурсов для изучения Haskell. Что отличает этот учебник от других руководств, так это то, что он написан с юмором и юмором, что заставит вас смеяться, когда вы его читаете. Читатель учебника по умолчанию не прошел обучение функциональному программированию, поэтому кривая обучения для новичков более щадящая.

  5. Category Theory for ProgrammersУчебник по теории категорий Бартоша Милевски.Адрес видеоурока. Эта серия руководств предназначена для программистов, поэтому не беспокойтесь слишком сильно о том, что вы не поймете ее в начале и это затруднит начало работы. Однако, если вы хотите изучить ее позже, вам все равно придется потратить немного энергии, чтобы найти материалы для чтения, ведь теория категорий — это своего рода высоко абстрактное знание. В той части учебника, которая включает в себя код, будут использоваться C++ и Haskell, и читатель должен немного знать C++.

Другое стоит изучить

  1. How to Deal with Dirty Side Effects in Your Pure Functional JavaScriptЭта статья была недавно опубликована в JavaScript Weekly. После того, как я понял некоторые концепции FP, я вернулся к этой вводной статье и многому научился, и стало яснее, почему каждый шаг FP выполняется именно так. Фактический смысл приложения заключается в создании эффектов, таких как запрос с сервера контента и последующее отображение его в браузере, все это эффекты, но функциональное программирование не допускает побочных эффектов, то есть они не разрешены. генерироваться в процессе расчета.Функция, то как писать программы? Эта статья пытается шаг за шагом решить, как устранить побочные эффекты в программе, только после завершения расчета, а затем выпустить эффект. В этой статье не будут разбрасываться понятиями, а будут решаться проблемы с обычным кодом, шаг за шагом, вы поймете Функторы, Аппликативные Функторы и Монады, прежде чем узнаете об этом. Пока вы понимаете обычный JS, вы можете понять код этой статьи.

  2. A Million Ways To FoldПрезентация Брайана Лонсдорфа. Когда я опубликовал «Как избавиться от циклов for в JS-коде», одним из возражений было то, что метод написания, который я показал, был не очень гибким, и когда появилось новое требование, позвольте мне послушно вернуться к циклам for. Я понимаю, что некоторые разработчики заняты собственно разработкой, и кажется, что изучение чего-то слишком базового для разработки бесполезно, поэтому я не учусь накапливать. На этом примере я понимаю, что незнание основ CS может ограничить воображение. В этом докладе Брайан знакомит с F-алгеброй и катаморфизмом в теории категорий. Неважно, если вы не видели эти термины, просто знайте и понимайте этот разговор, и вы поймете,Все вычисления, которые могут быть выражены с помощью цикла for, могут быть выражены с помощью функции сокращения.. Некоторые люди также скажут, что нижний уровень сокращения также реализован с помощью цикла for!Это как если бы я сказал тебе построить дом из кирпичей вместо песка, ты сказал бы мне, что кирпичи сделаны из песка.

  3. State Monad in JavaScriptПри написании приложений с чистыми функциями обработка состояния может быть громоздкой. Состояние — это алгебраический тип данных (Algebraic Data Type), предназначенный для решения задач управления состоянием в функциональном программировании. Этот класс будет использоватьcrocksПройдя этот курс, вы сможете продолжить самостоятельное изучение других типов данных и служебных функций черепков.

  4. Safer JavaScript with the Maybe TypeФункциональное программирование не использует if else для обработки null, а вместо этого использует тип данных Maybe. Maybe позволяет вам создавать функции, не беспокоясь об обработке нулей.

  5. The Quantum Electrodynamics of Functional JavaScriptПрочитав эту статью, вы поймете комбинаторную логику и церковное кодирование. Эта статья только знакомит с принципом, по этой статье кто-то написал две библиотеки:church, реализуйте кодирование Qiu Qi с помощью JS.combinators-js, реализовать все комбинаторы на JS. Знание этих вещей не поможет вам написать код, так же как знание квантовой физики не поможет вам построить мосты.

  6. Блог Реджинальда БрейтуэйтаПредыдущий пост также взят из этого блога. Я собирался перечислить все, что я видел, но это немного громоздко. Вы можете читать самостоятельно.

Шесть, ошибки

  1. Постарайтесь узнать слишком много сразу. Как бы вы ни старались, человеческое время и энергия ограничены, а контент, который вы можете изучить за один раз, ограничен. Я также изучил Python и Django на этапе обучения, прежде чем нашел работу по разработке, которая заняла много времени и не сработала. Было интересно посмотреть на машинное обучение после работы, и на это ушло время. У меня была плохая математическая база, поэтому я пошел в Академию Хана на бакалавриат по статистике и линейной алгебре. Позже я не мог идти в ногу с энергией, поэтому я отложил это. Я могу бросить вызов этому снова в будущем, но я все еще должен делать это шаг за шагом.

  2. Тратить время на изучение вещей, которые не подходят для изучения на текущем этапе. Когда я проходил курс Эндрю Мида по Node в марте прошлого года, однажды я получил от него электронное письмо, в котором говорилось, что у него есть новый полный курс, и теперь вы можете купить его по самой низкой цене. Я просмотрел введение. Фреймворк JS одновременно решает интерфейс, серверную часть и базу данных. Это нормально. После обучения я могу делать полный стек. Потом я поехал изучать Метеор на месяц. В то время моя база JS была не очень хороша, когда я изучал этот высокоуровневый фреймворк, я просто запомнил кучу API.

  3. Независимо от потребностей рынка талантов, слепо изучайте технологические стеки, которые временно недоступны. До того, как я нашел работу в сфере разработки, мой период обучения был относительно долгим, основная причина заключалась в том, что я всегда чувствовал, что недостаточно усвоил и многое не освоил. Но некоторые технологии, которые я изучил в то время, не требовались большинству работодателей, например, Rx.js и GraphQL. Хотя я не жалею, что изучил эти две техники, я не думаю, что мне нужно так сильно давить на себя, когда я не работаю. Думаю, мало кто из работодателей будет требовать от новичка без опыта работы писать Rx.js и GraphQL, да и отечественных компаний, использующих эти две технологии, очень мало.

Семь, что изучать дальше

  1. Я изучил только верхушку айсберга в Haskell и теории категорий, и я буду продолжать учиться. Изучение Haskell — это просто просмотр руководств, написание небольшого кода, а затем попытка использовать его для написания простых приложений.

  2. визуализация данных. Я время от времени посещал занятия по D3 на Frontend Masters, но еще не практиковался. В D3 тоже слишком много API, и на освоение уходит немного больше времени.

  3. Основы КС. В апреле и мае этого года я серьезно собирался получить онлайн-степень CS, и я только что нашел его.OSSU. Но я нетерпелив. Я изучил более продвинутые уровни через JS. В базовом курсе я должен использовать Racket, чтобы изучить базовое написание функций. Я пытался пропустить некоторые курсы, но некоторые знания зависят от предыдущих курсов, пропущено. Т понять. Потом я почувствовал, что прогресс идет слишком медленно, и остановился. Но мне еще предстоит изучить основы CS, включая сеть, алгоритм, базу данных, низкоуровневый язык и т. д. Как я выяснил, незнание основ может ограничивать воображение разработчиков. В нужное время я вернусь в ОмГУ, чтобы продолжить учебу и попытаться закончить курс.

постскриптум

Исходя из своего более чем года учебы и опыта работы, хотелось бы дать несколько советов друзьям, готовым заняться фронтендом.

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

Будьте готовы продолжать учиться. Это лучшее время для учащихся, вы действительно можете узнать все, что хотите, в Интернете (сложное создание ядерного оружия и ракетная техника могут не ...). Ответы на большинство ваших вопросов можно найти в Google и Stack Overflow. Если вы не можете его найти, вы можете спросить, а если другие не могут на него ответить, значит, вы многому научились. Бакалавриат CS, безусловно, поможет вам начать раньше, но без степени CS начать еще не поздно. В недалеком будущем, если кто-то спросит меня о моем образовании, помимо моего реального образования, я с уверенностью скажу им, что мое высшее образование — это ОНСУ (Университет открытого исходного кода).


Постскриптум ко второй публикации

Теперь я не могу вставать в четыре утра каждое утро. Обычно вставать можно с 6:00 до 6:30 со вторника по пятницу и с 4:00 до 4:30 с субботы по понедельник.

Я все еще учусь сейчас, я просто чувствую, что информационная перегрузка не может быть изучена. Раньше я читал много ресурсов, но теперь я этого не делаю. Даже годовая подписка на Frontend Masters не просматривается уже несколько месяцев. Но думаю я только начинаю, сначала изучу азы CS. Учебники по приложениям — это бездонные ямы, особенно передняя часть.