Frontend разработчик сейчас понятие чертовски широкое.
Думаю, что реально крутой frontend developer умеет следующее:
- Верстать. Доступно, кроссбраузерно, адаптивно, резиново и так далее.
- На отлично знать VanilaJS.
- Уметь собирать проекты: стили, js, шрифты, шаблоны - всё. Webpack, пожалуй - наше всё. Ибо, насколько я помню gulp и grant - таск-менеджеры. А с этой задачей прекрасно справляется npm. Соответственно.
- Уметь настраивать webpack и при этом помнить, что есть готовые решения для сборки.
- Уметь как работать с npm.
- Уметь работать с двумя-тремя популярными фреймворками. Например Vue.js,
Angular.js, React.js + Redux.js. Представлять плюсы и минусы каждого из решений.
- Уметь писать код. Тоже очень широкое понятие. Но, я, пожалуй, остановлюсь на том, что хороший фронтендер должен писать код, придерживаясь code style-а; выделять общие части в отдельные функции/классы и т д; давать адекватные имена переменным/функциям/классам etc. В общем держать свой код в чистоте и порядке.
- Уметь читать чужой код. Это очень непростая работа. Нужна высокая сосредоточенность, внимательность.
- Уметь покрывать свой код тестами.
- Уметь планировать архитектуру клиентской части приложения. Я бы даже сказал, что очень пригодится умение писать UML схемы. Мы же не jquery карусель собрались писать на такой должности.
- Понимать на простом уровне как работает HTTP. Как клиент отправляет данные, как их считывает сервер, как отдаёт ответ, и т д.
- Интересоваться смежными областями. В первую очередь backend. Благо можно не учить php, ведь есть nodejs. Это тот же самый javascript, так что думаю, что шикарный фронтендер должен уметь писать и на nodejs, понимать нюансы его работы.
- Знать больше чем html, css, js. Уметь, например, программировать на python/erlang/ClosureScript/php/c/haskell/подставь своё. Это расширяет кругозор.
- Следить за новинками в своей области и интересующих смежных областях.
- Уметь работать с git.
- Уметь работать с командной строкой. На мой взгляд уметь только cd, ls, mkdir, chmod, chown и touch - не серьёзно.
Думаю, что если ещё посижу, то напишу ещё что-нибудь, но думаю, что основная мысль понятна - нужно уметь и знать много всего.
Список этот может показаться пугающим. Но фишка в том, что всё сразу изучить нельзя. Двигайтесь по пунктам не спеша, разбираясь в тонкостях, нюансах.
Изучение чего-либо процесс не быстрый, но если вам нравится то, что вы делаете, то усилия окупятся обязательно.