Любой крупный сайт или интернет-сервис, как правило, состоит из двух частей: программного кода, который выполняется на сервере, и интерфейса, с которым взаимодействует пользователь в браузере. Именно фронтенд-разработчик отвечает за это взаимодействие: создаёт HTML-страницы на основе дизайн-макетов и пишет скрипты, которые эти страницы «оживляют».
Интерфейсы современных сайтов становятся всё более сложными, а устройства, с помощью которых люди выходят в сеть, всё более разнообразными. Поэтому фронтендер должен быть настоящим ниндзя и постоянно совершенствовать своё ремесло: быть в курсе всех новинок, «фишек» и трюков, уметь адаптировать поведение сайта, чтобы пользоваться им было одинаково удобно с ноутбука, планшета или смартфона, с помощью мышки или пальцев.
Эта профессия интересна потому, что можно создавать внешний вид сайта и взаимодействовать с людьми. Фронтенд-разработчики стоят между пользователем и всеми остальными программистами. И если они свою работу делают для пользователя, то все остальные программисты, по сути, делают свою работу для специалистов фронтенд-разработки. При желании, такой разработчик, кстати, может стать отличным менеджером.
Что должен знать и уметь каждый фронтендер
Профессия фронтендера держится на двух основных вещах: вёрстке страниц сайтов (HTML+CSS) и программировании пользовательского интерфейса (JavaScript). Поначалу сайты были простыми, и всем фронтендом занимались верстальщики. Но потом появился JavaScript, появились динамические интерфейсы, и верстальщики превратились во фронтенд-разработчиков. Сегодня интерфейсы становятся всё более сложными, и эта тенденция постепенно разворачивается вспять: фронтенд-разработчик опять всё больше превращается в верстальщика, который работает над внешним видом страниц, а JavaScript-программисты становятся отдельной «кастой».
Одной из базовых задач фронтендера является вёрстка сайтов — написание HTML-кода и CSS-стилей для представления информации в виде, понятном браузерам, и придания сайту нужного внешнего вида.
Как правило, фронтендер получает от продуктового дизайнера дизайн-макет и превращает его в готовую HTML-страницу. Иногда макеты не отражают всех деталей, и фронтендеру нужно быть немного дизайнером, чтобы уметь правильно интерпретировать задумку, учитывать все нюансы и технические детали.
Раньше большой проблемой было сверстать сайт так, чтобы он выглядел одинаково во всех браузерах. Каждый браузер по своему понимал HTML-код. Сегодня практически все браузеры исполняют стандарты консорциума W3C, и по сути код должен соответстовать этим стандартам. В то же время сегодня появились разнообразные нетбуки, планшеты, мобильные телефоны, и фронтендеру приходится заботиться о том, чтобы сайт хорошо отображался на разных типах устройств.
Главный язык программирования для фронтенд-разработчика — JavaScript. Сегодня он лидирует в мире по числу репозиториев — хранилищ с кодом в самом популярном месте — GitHub. И эти цифры растут. Все ведущие IT-компании мира используют JavaScript. Раньше JavaScript конкурировал с Python, но сейчас конкуренция сошла на нет, Python стал в основном языком учёных.
JavaScript — это отдельный мир, вокруг которого уже выстроилась целая плеяда метаязыков и фреймворков. Сейчас можно легко найти начинающего программиста, который скажет, что не знает JavaScript, но знает jQuery, Backbone JS или Angular, хотя последние — всего лишь библиотеки, написанные на JavaScript.
Чтобы стать хорошим фронтенд-программистом, желательно получить фундаментальные знания по специальности. В университете студентам нередко приходится выполнять непонятные практические задания из области программирования, которые дают им преподаватели. Но практика — это практика, она априори полезна.
Кроме того, фронтенд-разработчику обязательно нужно самообразование. Принцип такой: «Не важно, где ты учишься: учись ещё!». Это непреложная истина, поскольку только самообразование позволяет оставаться «на острие» технологического прогресса. Ни одна система фундаментального образования не даёт действительно актуальных сведений о технологиях: она только закладывает основу. А технологии эволюционируют каждый день — и интернет даёт возможность быть в курсе всех перемен.