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

Во-первых, фон

У нас небольшая консультация по внешнему интерфейсу, и помимо создания продуктов с нуля, нас зовут помочь компаниям решить проблемы с их кодом Angular или React. В последнее время часть «проблем» росла и росла.

У каждой компании, которую мы встречаем, есть проблемы с производительностью, неуправляемый код, пропущенные вехи и разработчики, которые увольняются направо и налево. Тесты и КИ? Хе. Половина из них никогда не слышали об инструментах сборки. Даже среди тех немногих, кто, кажется, выпускает код, менеджеры разработчиков признают, что единственный способ выполнить поставленные руководством задачи — удалить огромные части запланированных функций.

Что, черт возьми, происходит?

Поэтому мы начали задавать вопросы и осматриваться. Что удивительно? У крупных компаний все хорошо. У них есть четкое разделение между командами, и наличие обученной команды, посвященной внешнему интерфейсу, является нормой. Это небольшие «гибкие» компании с 1–3 разработчиками интерфейса, которые продолжают с треском терпеть неудачу.

Эти небольшие команды обычно состоят из бывших разработчиков серверов, только что окончивших школу младших школьников и руководителя группы, у которого «30% свободного времени и который действительно хочет писать код». В большинстве случаев они «учились на ходу», и у них никогда не было опытного фронтенд-разработчика, который бы наблюдал за проектом, его настройкой и архитектурой или обеспечивал наставничество. Что еще хуже, не один менеджер разработчиков полагался на «ниндзя интерфейса», который (при ближайшем рассмотрении) оказался преступно невежественным.

Как это работало раньше?

Аналогичный сдвиг произошел около 8 лет назад, когда в наш мир пришла мобильная связь, новая сложная технология со своими особенностями и областью знаний. Так как же все эти небольшие компании справляются с нативной мобильной связью? У скольких из всех компаний с неудачными проектами внешнего интерфейса, с которыми мы встречались, была команда нативных мобильных разработчиков? Нуль.

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

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

И все же, держу пари, в соседнем офисе вы найдете 2-3 разработчиков, работающих над огромным приложением Angular, имея лишь смутное представление о «цикле дайджеста», Webpack, Flexbox или о том, как настроить CI. О, и один из них, вероятно, потратил последние 2 месяца на написание классной утилиты, доступной в обычном пакете NPM.

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

Является ли фронтенд более сложным, чем любая другая технология? Или, может быть, это так же сложно, как и другие, но не рассматривается как таковое?

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

Гордые помнят фронтенд со времен своего разработчика в 2006 году. Для них это связка JavaScript и HTML, собранная вместе за несколько часов. Сложные инструменты сборки, большие фреймворки и бесконечное количество сторонних библиотек — это не то, что они готовы принять как необходимое или сложное.

Мы буквально спорили с менеджером по исследованиям и разработкам в стартапе среднего размера, который не мог понять, почему jQuery недостаточно: «В 2007 году я построил сложное SPA, используя только jQuery».

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

  • «Как я могу нанять отличного разработчика интерфейса, если здесь никто не может взять у него интервью и оценить его?»
  • «Мы наняли кого-то, но мы действительно не знаем, хорош ли он».
  • «По-настоящему хорошие люди не хотят работать в одиночку».

Самопроверка

Если вы думаете: «Мы полностью понимаем, что такое интерфейс, и у нас нет ни одной из этих проблем», спросите себя:

  • Ваш внешний код находится в том же репозитории, что и ваш внутренний код?
  • Ваш код для iOS и Android тоже находится там?

Вы сказали «Да» первому и «Нет» второму? Время спросить себя, почему.

Что произойдет дальше?

Пройдут ли месяцы или годы, прежде чем сорванные сроки и плохие продукты убедят руководство небольших компаний в том, что интерфейс уже не тот, что раньше?

Когда они смирятся с мыслью, что к фронтенду нужно относиться так же, как и к мобильным приложениям — как к отдельному проекту и предметной области? Или понимаете, что фронтенд сложен и требует специальной команды профессионалов и достаточного времени?

До тех пор у нас останутся неудобные встречи, объясняющие, почему зверь Angular и jQuery, который команда создавала (как они узнали) в течение последних 6 месяцев (и который загружается в Chrome на последнем MacBook занимает 30 секунд), должен быть переписан на React за 2 месяца. Если бы только они остановились и как следует обучили свою команду.

Да здравствует фронтенд!

Комментарии к ХН

Первоначально опубликовано на 500tech.com 28 апреля 2016 г.