Что умеет выдающийся Frontend разработчик?

Крупные компании ищут лучших в своем деле специалистов на разные должности.
Я могу себе представить требования к backend, потому что backend сложнее. Там нужно учитывать количество пользователей, контролировать нагрузку, управлять памятью. Там разного рода масштабирования, linux и sql. Там много всего можно перечислять. Много зрелых и объемных технологий, на изучение которых требуется много времени и сил.
А вот требования к frontend разработчику высокого уровня мне представить сложно. Тут один достаточно простой (по сравнению) ЯП, приходящие модные технологии вроде babel, webpack и TypeScript, которые еще сильнее упрощают работу и какой-нибудь фреймворк. Есть особенности работы браузеров, но их не так много и они по большей части решаются тем же babel. Фронтенд не масштабируется, не реплицируется. В целом, если его очень хорошо протестировать, то разработчик уверен на 99.9%, что все работает на всех браузерах и на всех утройствах. Здесь не может быть ситуации, когда пришло слишком много пользователей или память на сервере закончилась. Тут нет мониторинг систем.
Судя по вакансиям, зарабатывают и те и другие примерно одинаково.
Но если взять список технологий, которыми нужно владеть, то в случае с frontend все гораздо проще.
Объясните мне, пожалуйста, какими знаниями должен обладать сильный frontend разработчик и почему сегодня frontend и backend оцениваются как равные по сложности сферы.
  • Вопрос задан
  • 4573 просмотра
Пригласить эксперта
Ответы на вопрос 8
Vlad_IT
@Vlad_IT
Front-end разработчик
linux

Ну, это и фрондендеру нужно часто знать.
ЯП

Я сомневаюсь, что он сейчас сильно проще питона или php, JS очень довольно быстро развивается. А если взять в расчет TypeScript, то тем более.
В целом, если его очень хорошо протестировать, то разработчик уверен на 99.9%

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

Ну вот просто вообще не правда. Я также могу сказать, что в бэке учить нечего, изучил язык, изучил laravel, а sql даже учить не надо, используй ORM. Справедливое высказывание?

Теперь в общем. Во front-end много чего можно изучить
1) Верстка. Хороший front-end'ер должен хорошо верстать, вопреки частому мнению, что этим должен заниматься верстальщик. А верстка это отдельная широкая тема.
2) SVG, для многих интерактивных приложений, очень полезно использовать svg, а там куча своих особенностей, хаков и.т.д.
3) Webgl - довольно сложная тема, не знаю, есть ли в бэке что-то аналогичное по сложности.
4) Canvas - не просто знать, а уметь рисовать то, что желаешь.
5) Фрейморки, а там тебе для каждого свое разветвление.
6) Асинхронное программирование, которое для многих php-шников кажется непонятным.
7) ООП, т.к. в JS завезли классы, да и TypeScript часто нужно использовать.
8) Шаблоны проектирования - не только для бэкенда.
9) Webpack+gulp - ну это было.

Буду дополнять, если что-то еще в голову придет.
Ответ написан
Как человек, делающий и фронт и бэк говорю - бэк проще. На беке ты не паришься вообще с "особенностями" браузеров - у тебя их нет. У тебя вообще практически нет особенностей. У тебя нет необходимости держать в голове пяток яп и разметку(JS, TS, HTML+CSS, CoffeScript, LESS, SCSS) - у тебя есть твой PHP(PYTHON, JAVA) - только один яп. Отдельно идут инструменты сборки - gulp, grunt, webpack - ничего этого нет да и ненужно. Есть композер, который тянет зависимости и все. Тебе ненужно писать километровые конфиги, что бы собрать твое приложение. Линукс тоже знать совсем необязательно - все отлично можно делать и на винде. Ну или развернуть вагрант(докер). Код можно писать где угодно - а вертеться все будет на линуксе. А вот насчет тестирования бэк уделывает фронт на раз-два. Если ты полностью прогнал тестирование (phpunit, codeception) то ты на 99.999% уверен что все пойдет как надо. А вот со фронтом все не так. Ты физически не можешь протестировать ВСЕ браузеры.
Но есть одно большое но. это конечно мое ИМХО, но всеже - фронт делать интереснее))
P.S. Забыл упомянуть фреймворки и либы, которые мастхев знать на фронте - React, Vue, Angular и(только камнями не кидайте) jQuery.
P.P.S Контрольный в голову. Сделали мы клиенту сайт на vue. Сдали, клиент доволен. А потом приходит и говорит - ребята, а на ie8 не работает. А мне очень надо, у меня крупный клиент(бюджетная организация), а у них у всех xp с ie8... (для справки - vue на ie8 не заведется).
Ответ написан
saboteur_kiev
@saboteur_kiev
software engineer
> Я могу себе представить требования к backend, потому что backend сложнее.
Нет

> Там нужно учитывать количество пользователей, контролировать нагрузку, управлять памятью.
Во фронте тоже нужно это учитывать

> Там разного рода масштабирования, linux и sql.
Во фронте много js, json, xml, CS, много зрелых технологий на изучение которых требуется много времении сил, много новых технологий.

> А вот требования к frontend разработчику высокого уровня мне представить сложно. Тут один достаточно простой (по сравнению) ЯП, приходящие модные технологии вроде babel, webpack и TypeScript, которые еще сильнее упрощают работу и какой-нибудь фреймворк.
А как же webassembly, html5, RMTP, и другое медиа? Флэш сейчас уступил место JS и HTML5, но это только расширяет возможности использования.

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

> Фронтенд не масштабируется, не реплицируется.
Так можно говорить, если переложить всю работу на бэкенд. А правильно - грамотно распределять что делает фронтенд, что делает бэкенд и оптимизировать передачу данных. Это оба специалиста должны сотрудничать.

> В целом, если его очень хорошо протестировать, то разработчик уверен на 99.9%, что все работает на всех браузерах и на всех утройствах. Здесь не может быть ситуации, когда пришло слишком много пользователей или память на сервере закончилась.
Ну как это не может? Вы знаете все устройства, где запустится ваше вебприложение? А если на смарттв? А если на нонейм планшете? А если это голосовой чат в веб-приложении на 50 человек?

> Тут нет мониторинг систем.
Зато есть понимание метрик, их сбора, и отправки на бэкенд или куда-то еще?

Вдобавок фронтенд, в отличие от бэкенда, ОЧЕНЬ быстро прогрессировал за последние несколько лет. Настолько быстро, что хороших специалистов крайне сложно найти - они просто не успевают изучить все, что на них падает. Бэкенд постабильнее, там печатные книги успевают выйти в 10-м издании.
Ответ написан
Комментировать
@yayashitoya
Я могу себе представить требования к backend, потому что backend сложнее. Там нужно учитывать...Там много всего можно перечислять. ...Много зрелых и объемных технологий, на изучение которых требуется много времени и сил.
А вот требования к frontend разработчику высокого уровня мне представить сложно.


И потому то мы и имеем тысячи простых по функционалу веб-сайтов, в которых браузер тупит на пустом месте?
Ответ написан
Комментировать
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Фронтенд не масштабируется, не реплицируется.

Точно так же при необходимости масштабируется (route splitting, time to interactivity, critical path) и реплицируется (CDN).

В целом, если его очень хорошо протестировать, то разработчик уверен на 99.9%, что все работает на всех браузерах и на всех утройствах.

В целом это утверждение справедливо для чего угодно, хоть для бэкенда, хоть для игр:)
Чтобы его хорошо протестировать, нужен выделенный QA, который умеет в автоматизированное тестирование. И все равно потом приходит кастомер с каким-нибудь UC Browser и ругается, что ничего не работает.

Тут нет мониторинг систем.

Есть. Raygun, Sentry, Rollbar, Bugsnag.
Ответ написан
Комментировать
Jump
@Jump
Системный администратор со стажем.
Там нужно учитывать количество пользователей, контролировать нагрузку, управлять памятью.
Не обязательно.

А вот требования к frontend разработчику высокого уровня мне представить сложно.
Ну например контролировать нагрузку, управлять памятью. Зачастую еще и о юзабилити думать.

В целом, если его очень хорошо протестировать, то разработчик уверен на 99.9%, что все работает на всех браузерах и на всех утройствах.
Это в бэкэнде можно быть уверенным, потому что он работает на вашем сервере! А фронтэнд работает в чем придется вы физически не сможете протестировать его на всех браузерах и всех устройствах ибо этих сочетаний миллионы. Вы точно тестировали в шестой опере на celerone под WinXp?

Здесь не может быть ситуации, когда пришло слишком много пользователей или память на сервере закончилась.
Какой-то идиот влепил кривой скрипт и подвесил браузер и всю систему клиенту. Скрипты исполняются в браузере клиента! Тут думать надо. Это вам не бэкэнд, где вы можете творить что вам заблагорассудится!
Ответ написан
AgeofCreations
@AgeofCreations
Hardware, SEO.
ИМХО бэк сложнее в плане логики, фронт сложнее в плане обилия всякого непредвиденного дерьма.
Ответ написан
Robur
@Robur
Знаю больше чем это необходимо
Что умеет выдающийся Frontend разработчик?

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

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

И тут не сильно важно - фронт, бек, мобилки, или еще что.
А обсуждать знание языков/технологий/платформ это не уровень "выдающегося" разработчика, это уровень крепкого миддла который наконец то хорошо овладел инструментарием.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы