Как не быть динозавром.
Это история о том, как я стал опытным старшим фронтенд-разработчиком и как мне пришлось начинать все сначала. Как это казалось, мне пришлось начинать все сначала. Как учиться.
Эта история в основном об изучении 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
Привет 👋