Недавно я разговаривал с другом из бэкенд-разработки о том, сколько часов провожу за программированием и изучением кода в свободное время. Он показал отрывок из книги Дяди Боба «Чистый код». Там разработчики, которые репетируют код перед запуском в работе, сравниваются с музыкантами, которые много часов готовят инструменты к концерту.
Мне понравилась аналогия, но я не уверен, что готов полностью подписаться на такое; это тот самый тип
Усталость от фронтенда очень реальна. Я видео много постов об усталости от JavaScript, но мне кажется, что проблема распространяется за пределы этого конкретного языка.
Для ясности: это не очередная тирада о том, как всё плохо и быстро меняется — мне нравится, что технология развивается так быстро. Но я в равной степени я могу оценить, насколько проблема может подавлять и временами полностью промывать
Насколько я могу сказать, здесь два уровня проблемы.
Во-первых, фронтенд-разработчик думает, что в его арсенале полагается иметь следующее:
- HTML (писать с листа, семантическая разметка)
- CSS (масштабируемая и модульная архитектура)
- CSS-методологии (BEM, SMACSS, OOCSS)
- CSS-препроцессоры (что-то вроде LESS, SCSS, PostCSS)
- Современный CSS (Flexbox, Grid)
- JS
- Современный JS (ES6, Typescript)
- Фреймворки JS (Angular, React, Vue [вставьте сюда последние]
- JS-методологии (функциональное программирование, ООП)
- JS-библиотеки (Immutable, Ramda, Lodash)
- Принципы отзывчивого дизайна
- Тестирование (TDD)
- Фреймворки для тестирования (Jasmine, Karma)
- SVG
- WebGL
- Техники анимации
- Доступность
- Удобство использования
- Производительность
- Инструменты для сборки (Grunt, Gulp, скрипты NPM)
- Сборщики модулей (WebPack, Browserify)
- Экосистема NPM
- Знание различных трюков браузера
- Методологии Agile
- Сестемы контроля версий (обычно Git)
- Основы графического дизайна
- Навыки межличностного общения, тайм-менеджмент
- Базовое понимание всего, о чём говорят в бэкенде
И поверх этого вы возитесь, или пока присматриваетесь к вещам вроде этого:
- Сервис-воркеры
- Прогрессивные веб-приложения (PWA)
- Веб-компоненты
Второй пункт — это то, с чем вы не работаете ежедневно и вам не выделяют рабочего времени на их изучение, так как же вы собираетесь убедиться, что в вашем распоряжении есть все инструменты?
Термин вроде «прогрессивное веб-приложение» может прозвучать довольно обескураживающе для разработчика. Новые техники и технологии ведут к чувству усталости — усталости от фронтеда (источник картинки)
Теперь, как потребитель информации вы можете:
- Подписаться на ряд различных почтовых рассылок по разработке
- Изучить свой твиттер-фид
- Посетить еженедельное образовательное занятие на работе для разработчиков фронтенда
- Открыть нерабочий канал Slack, где общается горстка разработчиков
- Следовать онлайновым руководствам (в надежде, что они не устарели)
- Использовать обучающий видеокурс на сайте вроде Frontend Masters
- Купить книги по веб-разработке (в надежде, что они не устарели)
- Посетить митапы
- Посетить конференции
- Посетить обучающие курсы
Как автор вы можете:
- Писать статьи в блоги/журналы
- Выступать с докладами
- Запустить подкаст
- Участвовать в open-source проектах
- Открыть собственные сторонние проекты
Недавно я обнаружил, что моё внимание разделяется натрое: я писал код, слушая в наушники вполуха разговоры о коде и обсуждая программирование в чате Slack. Я решил, что это предел — все мои отверстия были забиты кодом и я был умственно опустошён.
Хотя это явно экстремальный случай, но я уверен, что некоторые из вас испытывали нечто похожее. Кроме всего этого, у вас вероятно есть работа на полный день, друзья, хобби. Неудивительно, что столь многие из нас ощущают выгорание и сомневаются в правильном выборе профессии.
Некоторые из моих знакомых-фронтендщиков выражали желание закончить всё это и перейти на работу, где можно отключаться в пять часов. Но что-то внутри меня подсказывает, что эта работа привлекает определённый тип людей, и даже если вы станете агентом недвижимости, всё равно захотите быть лучшим агентом, насколько это возможно. Будете посещать митапы в агентстве недвижимости, а в свободное время отслеживать тенденции изменения стоимости домов. Много месяцев назад я работал в финансах и по-прежнему изучал их по вечерам и читал книги, чтобы стать самым продвинутым, насколько возможно, в выбранной отрасли.
Мы не одиноки в таком поведении. Многие профессии требуют уделять им много времени и изучения за пределами работы. Проблема с фронтенд-разработкой может быть в том, что технология развивается настолько быстро, что возникает ощущение несправедливости, словно кто-то расширяет футбольные ворота во время матча. Похоже, что каждый божий день я получаю письмо с уведомлением, что очередная технология "XYZ" мертва. Что никак не может быть правдой, потому что в таком случае я остался бы без рабочих инструментов.
Экосистема постоянно изменяется, и я думаю, это хорошо. Лично мне нравится постоянно изучать программирование и подталкивать себя, но нужно признать, что временами это переходит рамки.
Имею в виду вышесказанное, вот несколько вещей, которые я стараюсь держать в памяти, чтобы не дать голове взорваться. Некоторые общие советы, как избежать этой усталости.
Мы все в одной лодке
Все известные мне программисты, как на работе, так и за её пределами, — одни из умнейших людей, которых я знаю. Но все они чувствуют себя перегруженными. У большинства есть некий «список пожеланий» с технологиями, которые он пытается освоить. Может быть, имеется горстка людей наверху, знающих весь свой список, но большинство из нас находятся именно в такой позиции.
Мы всё ещё уверены, что Google и Stack Overflow помогут, и у нас слишком много открытых вкладок с ответами на вопросы по веб-технологиям. Вы не одиноки!
Нужно понять, что ты не становишься плохим разработчиком оттого, что ещё не попробовал все эти модные штучки.
Да, даже «знаменитые технари» в той же лодке.
Невозможно знать всё. И рок-звёзды программирования, на которых вы подписаны в твиттере, по-настоящему хороши только в нескольких областях каждый. Вы заметите, что это именно те области, которые сделали их знаменитыми за хорошую осведомлённость. И снова, будут исключения, но все они такие же люди как мы. :)
Синдром самозванца есть у каждого из нас
Я знаю нескольких отличных фронтенд-разработчиков, которые не хотят претендовать на вакансию, потому что считают чем-то вроде мошенничества претендовать на работу, не соответствуя всем заявленным требованиям. Процитирую одного из них:
«90% джуниров, которых я вижу, заставляют меня чувствовать себя далеко позади. В реальности это настолько сильно меня беспокоит, что я думаю о том, как сохранить нынешнюю должность, и просто пытаюсь заработать побольше денег, потому что есть чувство, что с этими деньгами я и уйду»
Факт в том, что большинство требований к вакансиям — фарс. Мой друг Бард хорошо проиллюстрировал это на одной картинке, которая даёт перевод текста в вакансии фронтенда.
Перевод описания вакансии
Просто помните, всё будет нормально. На каждой работе я поначалу чувствовал недостаточное погружение, но в конце концов вы привыкаете к их инструментам и рабочему процессу, вы обучаетесь и становитесь лучшим разработчиком для этого.
Не бойтесь учиться на работе, лучший способ освоить новые навыки — ежедневно использовать их.
Если у вас синдром самозванца, скорее всего, вы на самом деле приличный разработчик, потому что иначе у вас не хватило бы способностей самоанализа, чтобы осознать это.
Придерживайтесь основ
Легко отвлечься на блестящие новые штучки, но если базовые принципы слабы, то ваша разработка может не выдержать проверки временем.
Как хороший друг однажды сказал мне:
«Внимание к основам всегда было моей мантрой. Если ты можешь создать хорошую вещь и решить проблемы, то всё остальное неважно. Инструменты меняются и всегда будут меняться»
Например, когда React взлетел к славе, он всегда как будто работал в связке с ES6, и я сконцентрировался на изучении этих изменений или добавлений к языку, а не на особенностях самого фреймворка. Когда React умер и исчез, со мной остались знания, которые я приобрёл о последнем стандарте JavaScript. С многими функциями вы можете поиграться прямо в Chrome, так что необязательно запускать Babel и вязнуть в болоте зависимостей.
Не нужно изучать всё
Это действительно самое главное. Думаю, что нас убивают вовсе не новые фреймворки, библиотеки и модули, а именно наша вера в то, что мы должны все их изучить.
С опытом я пришёл к мнению, что лучше всего фокусироваться на чём-то одном — в данный момент я копаюсь в функциональном программировании JavaScript в ES6.
В моём списке много вещей, которые хотелось бы изучить, но я стараюсь не отвлекаться. Например, было бы хорошо освежить мои знания по доступности, поиграться с Polymer и углубиться в некоторые из последних техник CSS вроде Grid, но если я научну читать о слишком многих темах одновременно, то не усвою всю информацию. Другие вещи никуда не исчезнут, я займусь ими когда придёт время.
Избегайте спешки, пытаясь потребить всё по данной теме. Не спешите и убедитесь, что совершенно поняли её.
Если вы похожи на меня, то список тем для изучения у вас будет всё время расти, но не бойтесь его сокращать. Не каждая тема стоит потраченного на неё времени, и следует научиться распознавать, что стоит изучения, а что может исчезнуть в течение нескольких лет. Уделить время изучению шаблонов проектирования и технологий архитектуры всегда будет более полезно в долговременной перспективе, чем прыжки по модным фреймворкам. Всё закончится тем, что вскоре вам придётся снова играть в бинго с умными словечками.
Большинство компаний не используют последние технологии
Постоянно появляется много новых вещей, веб развивается с ошеломляющей скоростью, но обычно проходит длительное время, прежде чем компании реально начинают внедрять эти новые технологии. Большинство компаний подождёт некоторое время, пока технология созреет и докажет себя на практике.
Angular создан шесть лет назад, и я впервые начал работать с ним в стартапе, который выбрал этот фреймворк для себя три года назад. Reactjs существует более трёх лет, а моя текущая компания начала использовать его перед Рождеством. Уверен, что большинство других фреймворков родились и исчезли за это время. Если бы я занялся ими, я был бы сумасшедшим.
В сфере CSS Flexbox был доступен с 2010 года — шесть лет назад! Поддержка браузеров до сих пор неполная. Мы начали использовать его в продакшне недавно в этом году, но я не вижу, чтобы другие особо использовали его.
Мой тезис в том, что не нужно спешить с изучением всего подряд. Когда технология быстро развивается, ваш работодатель может развиваться гораздо медленнее. Не нужно скакать впереди лошади, просто держи в поле зрения траекторию её движения.
Чем больше ты знаешь, тем лучше ты понимаешь, что ничего не знаешь, и это нормально
Это абсолютно нормально. Когда ты начинал, ты не знал, чего именно не знаешь. Потом изучил некие вещи и подумал, что ты гений. Затем шаг за шагом эта фантазия исчезает. Ты начинаешь понимать, как на самом деле много вещей вокруг, которых ты не знаешь.
По существу, чем больше опыта, тем шире бездна. С этим нужно смириться, иначе она поглотит тебя. Если что, это чувство должно дать тебе уверенность, что ты двигаешься в правильном направлении. В нашей профессии фронтенда ты никогда не будешь комфортно сидеть на троне из накопленных знаний.
Не трать всё свободное время на учёбу
Несложно почувствовать, что ты настолько позади всех, что нужно постоянно программировать и учиться. Это билет в деревню выгорания. Установи определённое время для развития своих навыков и подумай, можно ли переговорить с начальником насчёт того, чтобы выделить это время, а в остальные часы работай над любимым делом.
Некоторые из моих прозрений насчёт программирования пришли в тренажёрном зале. Физические упражнения чрезвычайно важны для вашего ума, как и для тела. Попробуйте 20-30 минут в день, чтобы держать не терять концентрацию и предотвратить выгорание.
Уделите время семье и друзьям — не тратьте с ними время на пустую говорильню.
Здесь рынок разработчика
В наше время не нужно беспокоиться о том, чтобы найти работу. В данный момент мы находимся в очень удачной позиции, когда вакансий больше, чем разработчиков. Не знаю, как долго это продлится, но получайте пользу!
Вы можете получить работу, не обладая полными знаниями. Я обнаружил, что во время интервью превосхожу 99% народу, которые только болтают.
В крайнем случае, помните о золотом запасе легаси-кода. Если вы из тех, которые любят программировать по старинке, всегда найдутся компании, которые застряли на старом ПО, и им нужны разработчики.
Заключение
Надеюсь, что некоторые из этих наводок помогут избежать некоторых разочарований, которые могли вас настигнуть. Самое худшее — это дойти до предела и полностью выгореть, потому что если такое произойдёт, очень трудно будет вернуть былую страсть, из-за который вы начали заниматься программированием в первую очередь.
Дэвид Бернер — разработчик фронтенда из Великобритании, который программирует с 1998 года, когда ещё были прозрачные разделительные gif'ы и теги <blink>. Он писатель, спикер и программист, увлечённый тем, чтобы двигать веб вперёд. В ы можете найти его бессвязные истории об этом (и любых вопросах фронтенда) на Fed || Dead.
Автор: m1rko