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

Крупные компании ищут лучших в своем деле специалистов на разные должности.
Я могу себе представить требования к backend, потому что backend сложнее. Там нужно учитывать количество пользователей, контролировать нагрузку, управлять памятью. Там разного рода масштабирования, linux и sql. Там много всего можно перечислять. Много зрелых и объемных технологий, на изучение которых требуется много времени и сил.
А вот требования к frontend разработчику высокого уровня мне представить сложно. Тут один достаточно простой (по сравнению) ЯП, приходящие модные технологии вроде babel, webpack и TypeScript, которые еще сильнее упрощают работу и какой-нибудь фреймворк. Есть особенности работы браузеров, но их не так много и они по большей части решаются тем же babel. Фронтенд не масштабируется, не реплицируется. В целом, если его очень хорошо протестировать, то разработчик уверен на 99.9%, что все работает на всех браузерах и на всех утройствах. Здесь не может быть ситуации, когда пришло слишком много пользователей или память на сервере закончилась. Тут нет мониторинг систем.
Судя по вакансиям, зарабатывают и те и другие примерно одинаково.
Но если взять список технологий, которыми нужно владеть, то в случае с frontend все гораздо проще.
Объясните мне, пожалуйста, какими знаниями должен обладать сильный frontend разработчик и почему сегодня frontend и backend оцениваются как равные по сложности сферы.
  • Вопрос задан
  • 4613 просмотров
Пригласить эксперта
Ответы на вопрос 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
Python, AsyncIO, AMQP
ИМХО бэк сложнее в плане логики, фронт сложнее в плане обилия всякого непредвиденного дерьма.
Ответ написан
Robur
@Robur
Знаю больше чем это необходимо
Что умеет выдающийся Frontend разработчик?

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

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

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

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

Похожие вопросы