Как не быть динозавром.

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

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

Что случилось?

Сейчас 2019 год, мне 37 лет. Я работаю более 15 лет профессионально веб-разработчиком и веб-дизайнером. После школы я пошел в школу дизайна и выучился на дизайнера. Но я также всегда интересовался кодированием. В начале 90-х я уже писал код на GW-Basic. Я помню, как писал свои первые строчки кода в последнем классе начальной школы. Позже я изучил HTML и даже немного PHP 3. В школе дизайна я также изучал Flash и ООП на Lingo. Когда мой класс получил задание написать простую программу для игры в кости, я написал полную игру Монополия. Просто потому, что написание кода было бесконечным путем открытий, чудес и дофамина.

За годы работы в качестве разработчика я увидел, что ландшафт вокруг меня кардинально изменился. Когда я начал разрабатывать и кодировать в начале 2000-х, CSS, немного javascript, а затем jQuery были всем, что мне нужно, чтобы научиться быть фронтендером. Я также добавил некоторый бэкэнд-код (PHP и даже Coldfusion в темную эпоху), чтобы иметь возможность интегрировать интерфейсный код с бэкэндом. Так что в течение многих лет я мог разрабатывать проект, кодировать его и интегрировать. В какой-то момент меня назвали разработчиком полного стека. Жизнь была простой. Еще проще, когда появились такие постпроцессоры, как SCSS. Я подумал: «Я понял, братан!»

Так что же изменилось?

Я с удовольствием писал SCSS, JS и немного PHP, но примерно в 2012 году мир вокруг меня начал меняться. Я видел все больше и больше статей о модных фреймворках, таких как AngularJS, в Twitter. В какой-то момент казалось, что новые фреймворки выпускаются каждый день. Меня это естественно привлекло, но я не мог угнаться за этим и был немного ошеломлен кажущейся сложностью некоторых из этих фреймворков. И еще я немного страдала метатезиофобией.

Однажды я посетил встречу, на которой какой-то парень с энтузиазмом продемонстрировал AngularJS. Он составил список сотрудников больницы, щелкнув по нему, можно открыть список их сертификатов и навыков. Очень простая страница. И объем кода, который был отправлен, чтобы заставить эту простую страницу работать, превышал 1 МБ.

Вот и все для меня. Этот новый материал был чрезмерно сложным, пугающим и, что самое главное: я мог написать этот список аккордеонов менее чем на 1 КБ ванильного JS. Или, может быть, даже без JS только в CSS и HTML ... Мой здравый смысл подсказывал: «Какого черта вы используете что-то такое для чего-то такого простого ?!»

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

Почему я так долго стоял на месте

В конце 2015 года, когда я уже опаздывал на вечеринку, я заболел. Сильное выгорание, за которым последовал большой рецидив через год, когда я все еще выздоравливал. Когда через некоторое время я почувствовал себя немного лучше и вернулся в офис MyOnlineStore, все изменилось. Появились два новых разработчика фронтенда. С новыми репозиториями, новым кодом, новыми словами, всем новым!

Уже был 2017 год. Я не знал, с чего начать. Я не осмелился попросить о помощи из-за неуместной гордости. Я писал код еще до того, как родились мои новые коллеги ... и теперь я должен пойти к этим ребятам и признать, что я понятия не имел, что делаю?

Но я пытался ... Я пытался угнаться за этим в течение нескольких месяцев, а потом я подумал: «Я не понимаю! к черту это дерьмо! »

Я занимался дизайном и 50/50 на протяжении всей своей карьеры, так что пришло время попрощаться с одним из них и сосредоточиться на другом. А поскольку я так испугался The New Frontend World, я сбежал в дизайнерский отдел MyOnlineStore. Это было в начале 2018 года.

К сожалению, после года разработки (UX) дизайна я обнаружил, что это был неправильный выбор. После нескольких лет интенсивной терапии и бегства прямо в черную дыру, которая была еще одним потенциальным выгоранием, я пришел к выводу, что дизайн не для меня. Я умею проектировать, но не могу справиться со стрессом, который с этим связан. Я чувствовал, что должен отвечать и бороться за все свои дизайнерские решения. А поскольку моим UX-дизайном в основном руководили инстинкты, это было действительно сложно для меня. Вдобавок ко всему это было очень личным. Может быть, я смогу справиться с этим сегодня или в ближайшем будущем, со всем, чему я научился с тех пор, но не тогда. Это сильно усилило мою неуверенность.

А затем, в конце 2018 года, я решил вернуться к фронтенд-разработке. Вот и я, фронтенд-динозавр в современном мире.

Как набрать скорость?

Теперь я столкнулся с большой проблемой. Я не хотел вымереть, как настоящий динозавр, и придерживаться своих старых привычек, так как же мне ускориться после нескольких лет паузы в мире, который изменился (и все еще меняется) так быстро? Первое, что мне пришлось преодолеть, - это отвращение к The New Frontend World ™ ️. Я попытался взглянуть на React и все другие новые инструменты свежим и непредвзятым взглядом.

Пока я был в мире дизайна, многое изменилось не только в нашей кодовой базе, но и в The New Frontend World ™ ️. Инструменты, которые мы использовали, улучшились или были заменены лучшими альтернативами. Инструменты и кодовая база стали более прочными и зрелыми.

Затем появилась новость: React Hooks вот-вот выйдет в React 16.8. Это сделало код настолько более читабельным, что я начал думать: Хм, может быть, я смогу это сделать.

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

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

Например, в классах oldskool я писал это для увеличения счетчика:

this.setState({ count: this.state.count + 1 })

Где хуки позволяют мне это делать:

setCount(count + 1)

Готов поспорить, что если вы читаете это, вы почувствуете, что вторая версия проще, даже если у вас мало опыта программирования (реагирования).

После этого «вызов принят!» указать самое сложное препятствие, которое нужно было преодолеть: как справиться с чувством «я должен начать все сначала». Мне казалось, что я ничего не знаю. Я был Джоном Сноу.

Разбирайся с демонами…

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

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

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

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

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

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

Хорошо, вызов принят! С чего начать?

Сначала я составил список всех инструментов, которые мы используем. Мне нужно было изучить несколько вещей: Typescript, Babel, Webpack, React, Apollo, Redux, GraphQL, Yarn и многие другие. Этот список был несколько ошеломляющим, пока я не начал разбивать их на две группы: вещи, которые мне нужно было изучить с самого начала, и вещи, которые я мог выяснить позже. Оказалось, что первый список не такой уж и большой и гораздо более выполнимый.

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

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

Я всегда старался время от времени уделять время личностному росту, но время от времени это были лишь несколько свободных часов. Однако в течение нескольких месяцев наша компания MyOnlineStore проводит так называемые дни доставки, когда мы, разработчики, можем делать все, что захотим, если это так или иначе связано с работой. Для меня это отличный способ узнать то, чему я, естественно, не мог бы научиться в повседневной работе. Когда я работаю в нашей обычной кодовой базе, я просто запускаю yarn dev, запускается сборник рассказов и все. Но в эти дни отгрузки я создаю новые репозитории, устанавливаю пакеты и все настраиваю сам. Это отличный способ узнавать новое.

Заключение

Не торопитесь: хорошее требует времени.

Будь собой.

Будьте крутыми.

Если вам понравился этот блог, пожалуйста, дайте нам знать, поставив нам несколько аплодисментов, ретвитов или лайков.

Если вы думаете, что работа в MyOnlineStore будет чем-то для вас, вот наши вакансии (NL).

Если у вас есть вопросы об этом блоге, посмотрите, чем я занимаюсь в свободное время, или просто хотите связаться, вы можете найти меня в Bad Decision Works Instagram

Вы можете найти больше наших блогов на Medium

Привет 👋