Frontend 2018: многообразие фреймворков и недостаток миддлов
Frontend — довольно конкурентная среда. Здесь легко начинать карьеру, но сложно перейти в разряд middle. Вдобавок возникает вопрос, в каком направлении развиваться, если каждый день появляются новые фреймворки и темы для холиваров?
О том, как выглядит и куда движется современный frontend, я расспросил Сергея Попова, члена программного комитета нашей FrontendConf, которая пройдет в конце мая в Москве в рамках РИТ++. Попутно мы поговорили про то, как происходит отбор докладов, и какие тут возникают трудности.
— Что для тебя frontend?
— Для меня frontend — это не только JavaScript, но и верстка интерфейсов. Ко всему, что не касается хардкорного программирования, зачастую формируется несколько снисходительное отношение. Но без решения таких задач не будет никаких сайтов (как и без бэкенда). Я как раз в большей степени отвечаю за интерфейсную часть, в частности за верстку, а не за хардкорный JavaScript.
— Что сейчас происходит в этом сегменте?
— Все составляющие фронтенда сегодня очень активно развиваются. Существует огромное количество фреймворков и подходов к решению задач. В последние годы этот «зоопарк» уже достигает абсурда — люди начинают выбирать технологии просто потому, что у них больше звездочек на GitHub. В решении технологических задач весомую роль начинает играть понятие моды (в первую очередь, на названия тех же фреймворков). Но такова отрасль. Во фронтенде только один язык — JavaScript. Мы, в отличие от бэкенда, не можем пользоваться другими языками (у них есть PHP, Python, Ruby; они могут использовать Node.js как серверный язык программирования и тому подобное). И нам приходится разрабатывать надстройки — фреймворки, позволяющие писать на JavaScript проще и лучше.
— Многообразие фреймворков — одна из базовых особенностей фронтенда?
— Мне кажется, да. Но сложно говорить, хорошо это или плохо. Мы же никогда не жили с фронтендом, для которого есть несколько языков или только один фреймворк. Возможно, если бы выбор был меньше, с разработкой было бы проще, потому что весь сегмент общался бы на одном «наречии». Но с точки зрения сообщества множество интересных мнений по разным фреймворкам — это даже хорошо. Есть о чем поговорить.
Раз фреймворки появляются, а люди переходят с одного фреймворка на другой, отталкиваясь не от моды, а от своей задачи (бизнесу ведь всегда нужно обоснование таких преобразований), значит все это многообразие действительно кому-то нужно.
— А ты сам сталкивался с необходимостью перехода с одного фреймворка на другой?
— Почти. На предыдущем месте работы мы в какой-то момент просто уперлись в производительность. Изначально все было написано на нативном JavaScript, но с выходом очередной фичи мы поняли, что дальше развивать продукт на этом ядре мы не можем. Инициировали диалог с руководством, объяснили, во что уперлись; что должны сделать, чтобы решить проблему, как именно это поможет. В итоге все ядро переписали на React. Все заняло примерно три-четыре месяца при мне и еще около полугода после моего ухода, и в конечном счете стоило затраченных усилий.
— Заметны ли какие-нибудь тенденции в развитии фреймворков в целом?
— Честно говоря, я не слежу за мелкими фреймворками. Из крупных у нас были Angular и React; появился Vue. Поначалу к нему отнеслись скептически, но потом он начал набирать популярность. Если бы все, кто его изучал, сейчас писали бы именно на Vue, у этого фреймворка была бы самая большая доля на рынке.
Но другие фреймворки тоже не стоят на месте — выходят новые версии. Плюс на рынке остается огромное количество старых фреймворков и библиотек, которые до сих пор используются.
Мне кажется, в ближайшее время три лидера будут между собой бороться за рынок. Однако это не означает, что завтра не возникнут обстоятельства, в результате которых появится новый фреймворк или придется отказаться от одного из старых. Frontend — достаточно нестабильное поле.
— А какой фреймворк ты сам предпочитаешь?
— Высказывать личные предпочтения по поводу использования того или иного фреймворка можно, попробовав как минимум и Vue, и React, и Angular. Я писал только на React, поэтому не могу говорить объективно.
— Как развивается сегмент с точки зрения кадров? В какую сторону, условно говоря, ветер дует?
— Активно развивается верстка в целом. Специалисты становятся лучше, они больше углубляются в UI/UX — в этом смысле мы движемся в сторону Запада, где зачастую нет выделенного верстальщика, а есть дизайнер, который разрабатывает интерфейсы с точки зрения UI/UX, и есть frontend-разработчик, создающий логику.
Бывает также, что эти функции совмещает один человек. Но пока в большинстве своем у нас наблюдается иное разделение — на рынке достаточно много верстальщиков и frontend-разработчиков, но мало тех, кто занимается UI/UX (еще меньше тех, кто компетентен во всех трех областях, поэтому они очень дорого стоят).
На мой взгляд, специалистам, которые занимаются версткой, надо больше углубляться в сторону UI/UX, ведь это тоже важная часть интерфейса, как и JavaScript. Лично у меня в какой-то момент произошел дисбаланс, которого теперь я советую избегать. Почти пять лет я занимался фактически только версткой — изучил JavaScript на уровне подключения и использования готовых плагинов JQuery, и мне этого хватало. Так я чуть не потерял связь с фронтендом, превращаясь в простого верстальщика.
Осознав это, я начал развиваться параллельно в нескольких направлениях. И теперь, когда у меня есть свободное время, я продолжаю заниматься UI/UX — хоть на рынке пока мало компаний, которым нужен frontend, совмещенный с UX. Откровенно говоря, развитием надо было заняться раньше.
— Считается, что квалифицированного frontend-разработчика искать чуть ли не сложнее, чем бэкендера. Это так?
— С квалификацией кадров у нас действительно все сложно. Как человек, непосредственно связанный с образованием, могу сказать, что самая главная наша проблема сегодня — нехватка хороших разработчиков уровня middle и выше. Уже сейчас чувствуется, что не хватает сеньоров, и с каждым годом это будет заметнее.
Но источник проблемы — на первых ступенях. Ребята, которые заканчивают обучение, не могут найти работу и получить опыт. Многие из них — потенциально хорошие разработчики, которые через два-четыре года могут дорасти до middle, а через 5-7 лет — до senior. Но джуниора без опыта брать никто не хочет. Всем нужны как минимум middle: из-за отсутствия доверия менее квалифицированным специалистам. А ни миддлов, ни сеньоров у нас не будет, пока мы не начнем выращивать джуниоров (самостоятельно они могут вырасти не совсем правильно). В какой-то момент мы просто упремся в потолок — джуниоры не развиваются, новым миддлам взяться неоткуда, а все хорошие middle уже к тому моменту уже дорастут до сеньоров.
Я считаю, что те, кто отрицает проблему, еще просто не прочувствовали ее на себе. Наш рекрутинг постоянно сталкивается с этим при поиске разработчиков уровня middle и senior. На позицию middle чаще приходят те, чьи навыки больше соответствуют junior. И чем дальше, тем хуже.
— И что делать?
— Мы пытаемся на уровне своей компании предпринимать какие-то шаги. Например, сделали аутсорс по верстке. Ребята, которые окончили наш интенсив, получают от нас задачи и набираются опыта. И впоследствии их охотнее берут на работу.
Но это решение — локальное, в рамках нашего же проекта, и не для всего потока джуниоров. Нам ведь тоже надо продать свои услуги, а когда мы говорим заказчику, что проект будут делать джуниоры, появляются вопросы. В одиночку мы отраслевые проблемы не решим.
— Может, как-то использовать отраслевые мероприятия?
— К сожалению, то, что происходит на конференциях, уместнее назвать монологом. Можно рассказать свою точку зрения, найти отдельных энтузиастов, пообщаться с ними. Но донести мысль до всего сообщества так, чтобы оно начало как-то меняться, — маловероятно.
Я как-то выступал с докладом о новичках — о том, что им надо давать шанс. И мы даже нашли несколько людей, которые взяли джуниоров, запустив проект, помогающий новичкам в поиске работы. Но за год мы решили проблему для 30 — 40 специалистов. То есть получилось очень локальное решение — не масштабов отрасли.
Но об этом можно и нужно говорить, постоянно напоминать, чтобы тебя услышали.
— В чем причина такого «ужаса» перед джуниорами?
— Выращивание специалиста — это затраты. Непонятно, насколько хорошо он будет развиваться. Многие боятся, что как только джуниор вырастет, он уйдет. Но, на мой взгляд, это немного странно, поскольку фронтендеры постоянно меняют место работы. Это уже стало нормой.
Кроме того, боятся потенциальных проблем с качеством. Но, давайте откровенно, половина ресурсов в интернете и так достаточно низкого качества. Это наша общая проблема: и бизнеса, и разработчиков. Мы все вместе тянем веб на дно, когда забываем о том, что надо думать о качестве — и иногда не в угоду бизнесу.
Я не раз вступал в диалог с сообществом на тему того, что джуниорам надо доверять, ведь с каждым годом специалистов становится все больше (объективно порог вхождения во frontend ниже, чем в тот же backend), и им всем надо развиваться.
— Что сегодня необходимо изучить frontend-разработчику, помимо JavaScript?
— JS-разработчикам надо понимать, что они должны уметь верстать. Почему-то многие не любят этого делать, некоторые считают, что это не входит в обязанности frontend-разработчика, но это неправда (в соответствии с названием профессии frontend занимается интерфейсом в целом, а туда входит и верстка, и UX).
На мой взгляд, для JS-разработчика важнее всего понять, что нельзя зацикливаться на одном фреймворке и или начинать изучать JS с фреймворка. Сейчас появились отдельно React-, Angular- и Vue-разработчики и все меньше JS или frontend-разработчиков. Но это тупиковый путь. Мы уже через это проходили — в свое время у нас множились JQuery-разработчики, способные написать 10 тыс. строк кода на JQuery, но не готовые сделать то же самое на JavaScript (хотя по сути JQuery — это просто библиотека, которая помогает быстрее писать на JS).
Надо учить сам JavaScript, тогда любой фреймворк или библиотека станут просто инструментом для написания кода, а разработчик сможет легко переходить из команды в команду с разными стеками.
— А как вы относитесь к развитию специалистов в направлении fullstack-разработки?
— Честно говоря, скептически. Ни в коем случае не хочу обидеть fullstack-разработчиков (я знаю реально крутых специалистов с очень большим опытом работы), но я считаю, что каждый должен быть профессионалом в своей области.
Я занимаюсь версткой почти 10 лет. На данный момент знаю в этой сфере почти все (конечно, есть некоторые вещи, которые я не пробовал, но я знаю о том, что они есть и как их можно применить). И мне немного странно видеть, когда человек с трехлетним опытом работы причисляет себя к fullstack — вряд ли за три года можно изучить все технологии. Квалификация тех, кто занимается этим 15 и более лет, вопросов не вызывает. Но я считаю, что лучше развиваться в чем-то одном, поскольку чем дальше ты движешься, тем ценнее ты как специалист в этой сфере. Хотя на рынке есть те, кому больше нравится именно fullstack; и на таких специалистов есть спрос.
— А что в последний год изменилось во фронтенде технологическом плане?
— Безусловно, появились новые технологии. На прошлой конференции я только рассказывал про CSS Grid Layout, а сейчас он уже полностью принят. Развивается CSS Houdini.
Очень большой рывок сделал Vue. Но пока непонятно, это рывок в популярности или в качестве. Еще год назад на рынке условно выделялись те, кто пишут на Angular или React, и те, кто изучают Vue, теперь же Vue захватывает свою долю рынка, и есть мнение, что через год он полностью его поглотит (знающие люди говорят, что это лучший фреймворк).
Как мне кажется, в этом году важной тенденцией был еще больший отказ от поддержки старых браузеров. В начале года Microsoft «похоронила» Windows Phone 8.1 — последнюю ОС, где единственным браузером был Internet Explorer. Теперь официально нет ОС, в которой не было бы, например, Edge. Это не означает, что все перестали пользоваться IE и перешли на современные браузеры. Однако это важный шаг к убийству старых браузеров, которые на самом деле тормозят отрасль.
Большинство возникающих проблем упираются именно в кросс-браузинг. Они решаемы, но использовать на 100% современные технологии мы не можем именно из-за поддержки старых систем.
— Как в условиях борьбы моды и технологий твой программный комитет отбирает доклады?
— Решению по каждому докладу предшествует достаточно долгое обсуждение темы — в первую очередь, с докладчиком. Мы пытаемся понять, что услышим в итоге: реальный опыт или абстрактные рассуждения. И причину, по которой проблема решалась именно так.
К примеру, доклады о смене фреймворков. У какого-то человека при решении конкретной проблемы возникла потребность в смене фреймворка. Он его сменил и рассказывает, почему, на что и как это решило его проблему. Со стороны программного комитета мы пытаемся добиться от докладчика истины, стараемся максимально раскрыть тему доклада через беседы со спикером и обсуждения внутри программного комитета. Так отбираются только те доклады, которые действительно могут быть интересны публике, а не просто рассуждения на салфетках.
— У каких докладов больше шансов?
— В этом году мы стараемся отказываться от «справочных» докладов. Любой frontend-разработчик должен быть способен самостоятельно зайти на сайт библиотеки в раздел документации, понять изложенное там и начать работать. Конференция концентрирует в себе конкретные проблемы и способы их решения. Она позволяет искать единомышленников и помогать именно на практике. По сути это обучение через опыт.
Вообще программа очень разнородная. Наша задача как раз и состоит в том, чтобы сделать ее максимально интересной для всех, кто имеет отношение к фронтенду. И с каждым годом программный комитет работает все слаженнее, а отбор докладов проходит все жестче.
— Многие доклады на конференцию уже поданы. Можно ли по ним выявить вопросы, которые волнуют отрасль больше всего?
— Сложно выделить какие-то тенденции. Все доклады рассказывают о чем-то новом. Мне не очень понравилось численное превосходство докладов про JavaScript. Да, среди них много действительно хардкорных историй, но я сам ближе все-таки к интерфейсной части, чем к программированию, да и отрасль рассматриваю как взаимодействие всех элементов. Поэтому мне не нравится, что очень мало докладов про CSS, UI/UX, инструменты и т.п.
Есть несколько докладов про рефакторинг, что в принципе необычно. Люди не так часто говорят на эту тему, поскольку этим никто не любит заниматься. Но раз такие темы есть, значит проекты развились настолько, что приходится их рефакторить. И это говорит об уровне развития сообщества.
На западе сейчас очень популярна тема доступности интерфейсов. Об этом будут говорить и у нас. Прошел отбор доклад про то, как делать свой open source-проект — хотя в целом в нашей стране культура open source-проектов развита не сильно.
— Как вы думаете, в какую сторону FrontendConf следует развиваться дальше?
— Мне кажется, надо двигаться в сторону англоязычности. Хотелось бы иметь поток англоязычных докладов и приглашать туда спикеров с европейских конференций, чтобы наше сообщество развивалось в соответствии с мировыми стандартами. Но РИТ++ всегда был больше ориентирован на внутренний рынок, поэтому сложно сказать, нужно ли такое развитие самой конференции.
Друзья, очередной фестиваль конференций РИТ++ состоится уже совсем скоро — 28-29 мая в Сколково. В этом году он объединит в себе FrontendConf, BackendConf, RootConf, WhaleRider, Aletheia Business и съезд русскоязычных IT-сообществ. В общей сложности запланировано более сотни докладов и 35 митапов!