Увлекательный мир фронтенда
Фронтенд-разработка — это как собирать лего без инструкции: иногда весело и творчески, но порой ты забираешься на кровать и кричишь: »*@#%*, да где же этот пропавший блок?!»
Каждый новый проект во фронтенде — это как уникальный набор лего, и ты никогда не знаешь, какие интересные вызовы подкинет он на этот раз.
В этой статье, опираясь на личный опыт, я расскажу, что такое современный фронтенд, какие задачи решают фронтендеры и что вообще происходит в мире фронтенда.
Немного о себе
console.log("Привет, Хабр!");
Меня зовут Павел Антонов, я фронтенд-разработчик. Моя работа — это создание сайтов, веб-приложений и клиентских интерфейсов, которыми могут пользоваться тысячи людей.
В 2007-м я пришёл в веб как начинающий верстальщик, настроил дома свой первый веб-сервер на операционной системе FreeBSD — и понеслось…
Я жил в небольшом провинциальном городке на окраине страны. Из-за географической отдалённости интернет в то время был, скорее, роскошью, нежели обыденностью, как сейчас. Счастливые обладатели спутникового подключения с повременной тарификацией уже знали, что такое Рамблер, Мейл.ру и другие популярные на тот момент интернет-ресурсы. Тогда я был подростком и застал расцвет локальных сетей. Их было несколько, каждый отдельный район города имел свою небольшую локальную сеть, которая объединяла все компьютеры в соседних домах.
Острой проблемой в локалках был недостаток информационного и развлекательного контента. Находились энтузиасты, которые распространяли контент из «большого» интернета в эти наши локалки. Мне захотелось стать одним из них, и я решил создавать ресурсы в локальной сети. Так я начал изучать HTML и CSS, понемногу осваивал Adobe Photoshop, т. к. именно в нём рисовали макеты с дизайном сайтов. Потом в ход пошли системы управления сайтом, такие как Datalife Engine, Joomla, Drupal и Wordpress. Слова «фронтенд» в те далёкие годы ещё не существовало, и ребята вроде меня носили гордое звание веб-мастера. Тогда нужно было не только нарисовать и сверстать сайт, но и поднять веб-сервер и настроить связку Linux Apache MySQL PHP, чтобы твой сайт корректно работал и был доступен в сети.
Всё это меня так затянуло, что спустя несколько лет я уже имел с десяток очень популярных сайтов в локальной сети — и меня пригласили работать в веб-студию. В студии мы делали много крутых проектов: новостные сайты, аудио- и видеохостинги, тематические ресурсы о различных хобби и даже портал местной городской думы. Так фронтенд стал моей профессией по-настоящему и начал приносить доход примерно с 2013 года.
Сейчас я занимаю позицию руководителя отдела веб-разработки в одном из российских банков. Пишу много кода и управляю небольшой командой других ребят-фронтендеров. Если измерять опыт в грейдах, как сейчас модно, то, скорее всего, я отношусь к senior-разработчикам, но это неточно :)
У разных компаний чаще всего бывают свои критерии по оценке уровня квалификации разработчика, так что какого-то общего подхода здесь нет. В любом случае я считаю все эти грейды просто условностями. Сегодня ты супер-пупер-сеньор-помидор, а завтра появляются новые технологии, библиотеки, фреймворки или языки — и что же, ты снова джун?
И наоборот, зная N фреймворков, ты не становишься крутым разработчиком автоматически — всё дело в опыте и умении применить свои знания. В нашей сфере всё меняется настолько быстро, что обучение не прекращается практически никогда. Как по мне, то главный навык разработчика — это умение решать задачи бизнеса. За это нам и платят. Как бы там ни было, обсуждение грейдов предлагаю продолжить в комментариях — интересно будет узнать мнение коллег по цеху.
Итак, что такое фронтенд?
Фронтенд стал важной частью веб-разработки с появлением самого интернета. Несмотря на это, фронтенд-разработка не обходится без стереотипов. Один из распространённых стереотипов о фронтенде: это просто «красивая обёртка» для веб-приложений и меньшая по значимости и сложности сфера по сравнению с другими областями программирования.
Поначалу так и было. Понятия «фронтенд» не существовало вовсе. Были верстальщики, которые превращали дизайн-макет в вёрстку сайта, и отдельно существовали программисты, заставляющие эти сайты работать. В некоторых случаях разработчик того времени умел и то, и другое.
Нередко нас, фронтендеров, путают с верстальщиками. Одна из причин, по которой возникает такая путанница, — это перекрывающаяся область нашей работы. Верстальщик отвечает за создание визуального представления веб-страницы на основе предоставленного дизайна. По сути, он выполняет лишь вёрстку дизайн-макетов на языке разметки HTML, а затем стилизует её при помощи CSS. Также он может подключить какие-нибудь готовые сторонние JavaScript-библиотеки для создания слайдеров, поп-апов и прочего, но на этом его полномочия заканчиваются.
В современном мире профессия верстальщика почти полностью трансформировалась в отдельные профессии, такие как фронтендер или дизайнер-верстальщик. Однако вакансии на позицию HTML-верстальщик всё ещё встречаются, и, скорее всего, это будет работа в веб-студиях, которые штампуют типовые сайты под управлением CMS (content management system).
В текущих реалиях верстальщик как самостоятельная единица уже никому неинтересен. Но это не означает, что вёрстка не нужна совсем. Любой, кто называет себя фронтендером, просто обязан уметь верстать. Кроме того, некоторые проекты могут требовать от фронтендера выполнение задач, которые в большей степени связаны с вёрсткой. Например, создание адаптивного дизайна или реализация макета, основанного на предоставленных дизайнером файлах.
Изучение вёрстки страниц — это основа основ для фронтендера. Базовое понимание HTML и CSS является начальным блоком любых популярных и не очень курсов по фронтенд-разработке. Помимо этого, знание вёрстки — отличный дополнительный навык для веб-дизайнеров, которые рисуют дизайн-макеты сайтов и веб-приложений.
Фронтенд-разработчики отвечают за создание интерфейсов, которые не только визуально привлекательны, но и обеспечивают удобство использования, широкую функциональность, доступность, взаимодействие с пользователем и совместимость с различными устройствами.
Для создания сложных и насыщенных данными приложений фронтендеру необходимо понимать различные принципы взаимодействия с серверной частью, которая называется «бэкенд».
Взаимодействие между фронтендом и бэкендом осуществляется с использованием стандартного протокола передачи данных — HTTP (Hypertext Transfer Protocol). Фронтенд отправляет HTTP-запросы на сервер, указывая методы (такие как GET, POST, PUT, DELETE) и параметры запроса, а сервер отвечает соответствующими HTTP-статусами и данными.
Часто для взаимодействия фронтенда и бэкенда применяется RESTful API (Application Programming Interface), основанный на принципах архитектуры REST. RESTful API предоставляет унифицированный интерфейс, позволяющий фронтенду отправлять запросы на сервер и получать от него данные в определённом формате (например, JSON или XML).
Фронтенд и бэкенд могут взаимодействовать как синхронно, так и асинхронно. В случае асинхронного взаимодействия фронтенд может отправлять запросы на бекенд и продолжать свою работу, не ожидая немедленного ответа. Это позволяет улучшить производительность и отзывчивость пользовательского интерфейса. Для реализации асинхронщины можно использовать старый добрый AJAX, относительно новый Fetch API, появившийся в 2015 году вместе с выходом стандарта ECMAScript 6 (ES6) или веб-сокеты.
Для обеспечения безопасности взаимодействия фронтенда и бэкенда часто применяются механизмы аутентификации (проверка подлинности пользователя) и авторизации (управление доступом к ресурсам на сервере). Это позволяет обеспечить защиту данных и контроль доступа к функциональности приложения.
Важно понимать, что фронтенд-разработка включает в себя широкий спектр задач, выходящих за рамки только вёрстки, и требует более широкого набора навыков и знаний. Именно поэтому фронтендер не равно верстальщик.
На растущую сложность фронтенда повлиял ряд причин. Рассмотрим некоторые из них:
Рост технологий. С каждым годом появляется всё больше новых технологий, фреймворков, библиотек и инструментов для разработки фронтенда. Это создаёт огромное разнообразие выбора, но и требует от разработчиков постоянного изучения и адаптации к новым решениям.
Развитие веб-стандартов. Стандарты веб-разработки тоже постоянно совершенствуются, чтобы обеспечить более безопасные, производительные и доступные веб-приложения. Следование этим стандартам становится обязательным, что повышает сложность в разработке.
Мобильные устройства и адаптивный дизайн. С появлением мобильных устройств стало важным создавать фронтенд, который отлично работает на различных экранах. Адаптивный дизайн и мобильная оптимизация требуют дополнительных усилий и знаний.
Комплексность приложений. Современные веб-приложения становятся всё сложнее и масштабнее. Они должны обеспечивать богатый пользовательский опыт (UX — user experience), взаимодействие с сервером, обработку данных и множество других функций, что требует более сложных архитектурных решений.
Кроссбраузерность. Разные браузеры могут по-разному интерпретировать и поддерживать стандарты, что создаёт дополнительные сложности в обеспечении единообразного отображения и функциональности приложения в разных браузерах.
Безопасность. С ростом веб-технологий и с возрастающими угрозами безопасности фронтенд-разработчики должны обеспечивать защиту данных и пользователей, что тоже добавляет сложности в процесс разработки.
Все эти факторы делают фронтенд-разработку интересным и сложным процессом, требующим постоянного обучения и развития.
С фронтендом и его задачами немного разобрались, теперь можно вспомнить ярких представителей фронтенда в различных сферах массовой культуры. С ходу в моей памяти возникают персонажи из киноиндустрии.
Фильм «The Social Network» (2010). Этот фильм рассказывает о создании (запрещённой в России) социальной сети и включает сцены, в которых показывается работа программистов и дизайнеров над разработкой интерфейса сайта.
Кадр из фильма
Сериал «Silicon Valley» (2014–2019). Этот комедийный сериал про группу молодых программистов, которые запускают свою собственную стартап-компанию в Силиконовой долине. В сериале исследуются различные аспекты веб-разработки, включая фронтенд.
Кадр из сериала
Это лишь пара примеров, которые я быстро вспомнил. Возможно, вы знаете другие яркие примеры в фильмах или сериалах — напишите о них в комментариях, интересно будет посмотреть, если я что-то пропустил.
Также в популярных социальных сетях, таких как Twitter или Instagram, можно найти фронтендеров, которые делятся своими работами, опытом и взглядами на веб-разработку. Кроме того, на платформах, таких как GitHub и CodePen, фронтендеры могут публиковать свои проекты и взаимодействовать с другими разработчиками.
Кстати, могу поделиться одним из своих NPM-пакетов, который когда-то выкладывал в открытый доступ на Github. Там ещё есть над чем работать, но у меня пока не хватает свободного времени. В любом случае, если кому-то это будет интересно, можете посмотреть код и демо. Также вы вольны использовать, копировать или изменять мой код, как вам захочется.
Про команду
Мы уже немного коснулись взаимодействия с бэкендом, но это вовсе не единственные ребята, с кем одновременно дружит и борется фронтендер. Для разработки качественного продукта создаётся команда из нескольких человек. Конечно, в каждой компании состав специалистов может немного различаться, но, как правило, у каждой команды есть заказчик, дизайнер, фронтендер, бэкендер, тестировщик, продукт-менеджер, аналитик и devops-специалист. Давайте посмотрим на те роли, с которыми фронтендер взаимодействует чаще всего.
Дизайнер. Отвечает за создание дизайна пользовательского интерфейса (UI) и пользовательского опыта (UX). Дизайнер может работать с различными инструментами, такими как Figma, Adobe Photoshop, Adobe Illustrator или Sketch, и может заниматься разработкой макетов, иконок, цветовой схемы и прототипов.
Бэкендер. Отвечает за разработку серверной части веб-приложения, обработку данных, взаимодействие с базами данных и бизнес-логику приложения. Использует языки программирования, такие как C#, Java, Python, Ruby или PHP.
Тестировщик. Помогает убедиться, что созданный проект работает корректно, не содержит ошибок и соответствует ожиданиям пользователей. Роль тестировщика в команде веб-разработки состоит в проверке и контроле качества веб-приложений или веб-сайтов. Тестировщик проводит функциональное тестирование, тестирование совместимости и нагрузочное тестирование чтобы обнаружить и исправить ошибки и проблемы в приложении.
Продуктовые менеджеры. Они определяют стратегию разработки продукта и предоставляют разработчикам задачи и требования для реализации. Отвечают за планирование, координацию и контроль выполнения задач в команде разработки. Управляют сроками, ресурсами и коммуникацией в проекте, обеспечивают взаимодействие между различными участниками команды.
Аналитики. Эти специалисты занимаются анализом поведения пользователей, оценивают эффективность интерфейсов и предоставляют ценные данные для оптимизации веб-приложений.
DevOps-специалисты. Обеспечивают настройку и поддержку инфраструктуры для деплоя и обновления приложения.
Фронтенд-разработчики находятся в постоянном взаимодействии с широким кругом специалистов, работая в команде. Однако иногда возникают недопонимания с коллегами по команде.
Например, нередко между фронтендером и дизайнером может возникать недопонимание, когда требуется найти баланс между визуальной привлекательностью и технической реализацией. Наверняка у многих фронтендеров возникала подобная ситуация, когда дизайнер рисует «простую», по его ощущениям, анимацию, а она выливается в сотни строк кода, и, как говорится, игра не стоит свеч.
Также часто требуется соблюдать так называемый pixel perfect, и вот здесь начинается настоящая битва за пиксели. Поэтому нужно быть готовым к правкам и изменениям в вёрстке, проходя дизайн-ревью. В конце концов, дизайнер взаимодействует не только с нами, но и с заказчиком, и если в дизайне есть тот или иной элемент, то, значит, так надо! Так что запасаемся терпением и верстаем — мы профессионалы, а правки — это опыт и наш хлебушек.
Помимо дизайнеров, у фронтендера случаются разногласия с коллегами из отдела маркетинга и контент-менеджерами, так как эти ребята зачастую не обладают техническими знаниями — и возникают трудности в коммуникации и понимании друг друга.
С командой разобрались, теперь давайте посмотрим, как работает команда на примере из жизни.
Всё пропало!
В один из рабочих дней к нам прибегает наш продакт-менеджер и сообщает о неожиданном сбое в production-среде. Лежит сайт! Клиенты разрывают линию техподдержки, а те, в свою очередь, бегут в команду, ответственную за работу сайта, то есть к нам. Ставится задача «бросить всё, найти и исправить ошибку». Что ж, давайте разбираться.
Открываем сайт — и видим разваленный интерфейс. С шапкой сайта всё хорошо, с футером тоже, а вот контентная часть пуста, и на месте, где должен был красоваться блок «наши продукты», чёрным по белому написано: An unexpected error has occured (Произошла непредвиденная ошибка). И правда беда, продукт-менеджер не обманул. На ум приходит отсутствие данных с сервера.
Первым шагом команда анализирует логи приложения и сервера, чтобы определить, почему данные не поступают на фронт. Возможно, проблема связана с некорректными запросами к серверу или с серверной стороной. Хотя откуда им взяться? Ведь ещё с утра сайт прекрасно работал. Разработчики осуществляют ряд тестовых запросов и проверяют ответы сервера.
Если они обнаруживают, что данные не возвращаются правильно или вовсе не поступают, они обращаются к коллеге бэкенд-разработчику. Бэкенд-разработчик анализирует код серверной части, включая эндпоинты и логику обработки запросов, чтобы выявить возможные причины сбоя. Он также проводит тестирование API и базы данных, чтобы убедиться, что всё работает должным образом.
Однако после всех проверок команда понимает, что ошибка не на сервере. Они переключаются на анализ кода фронтенда и обнаруживают, что отсутствует проверка на наличие данных перед их использованием. Вероятно, это привело к сбою при отсутствии данных, вызвав ошибку и остановку работы приложения.
Для исправления проблемы разработчики добавляют проверки на входящие данные в соответствующие компоненты фронтенда. Они тестируют изменения и убеждаются, что приложение теперь корректно обрабатывает ситуацию, когда данные отсутствуют.
В процессе исследования и исправления ошибки команда выясняет, что причиной сбоя было отсутствие проверки входящих данных на фронтенде.
Как оказалось, контент-менеджеры удалили за ненадобностью пару полей с данными в админке сайта. Серверная часть работает исправно, но в ответе отсутствуют удалённые поля. В данном случае ответственность за ошибку лежит на фронтенд-разработчике, который ранее работал с этим кодом. Он не предусмотрел ситуацию, когда данные не будут приходить с сервера, и не добавил необходимую проверку.
В итоге после внесения изменений в код и проведения тестирования команда успешно исправляет проблему и восстанавливает работу сайта. Команда проводит также ретроспективу, чтобы обсудить произошедшую ошибку и принять меры, чтобы избежать подобных ситуаций в будущем.
Такие ситуации возникают довольно часто, по неопытности фронтенд-разработчиков. Поэтому, если ты начинающий фронтендер, то старайся не забывать о важности проверки наличия входящих данных и их корректности. Иначе о подобных ошибках ты узнаешь только в рантайме на production-сервере и, как водится, в самый неподходящий момент.
Навыки и инструменты
Для решения задач в повседневной работе фронтенд-разработчик использует разные инструменты и технологии. Вот основные из них.
HTML. Язык разметки, основной строительный блок веб-страниц. Знание семантики, элементов форм и структуры HTML-документа важно для создания сайтов и веб-приложений.
CSS. Язык стилей, используемый для описания внешнего вида веб-страниц. Владение CSS позволяет управлять цветами, шрифтами, расположением элементов, анимациями и адаптивным дизайном.
CSS-препроцессоры. Например, Sass, Less или Stylus. Эти инструменты позволяют использовать переменные, миксины и другие функции, упрощающие разработку и поддержку CSS-стилей.
CSS-фреймворки. Например, Bootstrap или Foundation. Фреймворки предоставляют готовые компоненты и стили, которые можно использовать для ускорения разработки.
JavaScript. Язык программирования, используемый для создания интерактивных элементов и логики на веб-страницах. Знание JavaScript позволяет создавать динамические функции, обрабатывать события, выполнять запросы к серверу и работать с DOM.
JavaScript-фреймворки и библиотеки. Например, React, Angular или Vue.js. Знание одного или нескольких фреймворков позволяет создавать сложные пользовательские интерфейсы и эффективно организовывать код.
Тестирование. Знание инструментов и методик тестирования, таких как Jest, Mocha или Jasmine, позволяет писать автоматические тесты для проверки работоспособности и стабильности кода.
Системы контроля версий. Например, Git. Владение Git позволяет управлять версиями кода, эффективно работать в команде с другими разработчиками и восстанавливать предыдущие версии при необходимости.
Инструменты сборки и автоматизации. Например, Webpack, Rollup или Vite. Эти инструменты помогают автоматизировать процессы разработки, такие как сборка, минификация и оптимизация файлов.
Инструменты отладки и инспекции. Например, Chrome DevTools. Эти инструменты позволяют анализировать и отлаживать код, изучать сетевые запросы, изменять стили и многое другое.
Управление зависимостями. Например, NPM или Yarn. Знание этих инструментов позволяет эффективно управлять зависимостями проекта, устанавливать и обновлять пакеты.
Вёрстка и адаптивный дизайн. Знание принципов резиновой и адаптивной вёрстки позволяет создавать веб-страницы, которые хорошо выглядят на разных устройствах и экранах.
Оптимизация производительности. Знание методов оптимизации загрузки и работы веб-приложений, таких как сжатие и кеширование ресурсов, улучшение производительности JavaScript и оптимизация отображения.
Работа с REST API. Знание протокола REST и инструментов для работы с API, таких как Axios или Fetch API, позволяет взаимодействовать с сервером и обмениваться данными.
Это лишь некоторые из ключевых инструментов и технологий, с которыми должен быть знаком каждый фронтенд-разработчик. Конечно, список может изменяться и дополняться в соответствии с требованиями и трендами в индустрии. Давайте обсудим этот список в комментариях — наверняка я что-то упустил.
Мой основной стек — это react/redux и их экосистема, нравится Next JS, styled-components.
Кстати, выбранный разработчиком стек технологий зачастую может стать поводом для холиваров.
Те, кто в теме, поймут :)
В Сети можно встретить яркие споры разработчиков о том, какой фреймворк выбрать React, vue js, Angular или Svelte. Какая библиотека будет управлять состоянием redux, mobx или что-то ещё. Какой препроцессор CSS лучше, и всё в таком духе. Обо всём этом написано куча статей, каждый хвалит своё болото.
Я считаю, что это всего лишь инструменты и при выборе необходимо отталкиваться от бизнес требований и возможностей команды. Для опытных разработчиков не составит особого труда перейти на другой стек, если это потребуется.
Как стать фронтендером
Зачастую в нашу профессию приходят люди, далёкие от IT. Таких примеров довольно много — истории людей, успешно вкатившихся в IT, можно найти здесь же, на Хабре. Определить, кому легче всего вкатиться в область фронтенд-разработки, сложно, так как это зависит от индивидуальных обстоятельств, интересов и предыдущего опыта каждого человека.
Однако тем, у кого есть хоть какой-то багаж знаний по смежной специальности, будет гораздо легче. Например, дизайнерам или бэкендерам. Сроки обучения тоже у всех разные. Совмещать текущую работу и обучение на фронтендера можно — никто не запрещает вам заниматься обучением в свободное от работы время, но нужно понимать, что срок обучения сильно увеличится. Обучение будет гораздо эффективнее, если уделять этому 6–8 часов в день, считай — как на работу ходить.
Для начинающих достаточно начать с основ HTML и CSS, изучить синтаксис и конструкции языка JavaScript, понять, как устроен DOM, освоить один из популярных фреймворков. Также рекомендую изучить базовые команды Git, так как в будущем вы будете работать в команде. Разобраться, как устроены инструменты отладки кода в браузере, — это ваш лучший друг и помощник.
Этого будет достаточно для работы junior-разработчиком. Конечно, на этом останавливаться не нужно, важно помнить, что фронтенд быстро развивается и нужно обучаться постоянно.
В Сети сейчас много информации по изучению фронтенда. Курсы, видеоматериалы в Ютубе, статьи на Хабре. Выбрать можно на любой вкус. Отличным подспорьем в изучении фронтенда станет вот такой роадмап (дорожная карта). Если вы не знаете, с чего начать или что делать дальше, то обратитесь к этой карте, она подскажет путь.
Также не стесняйтесь искать решение своих вопросов на таких сервисах, как Хабр Q&A и StackOverflow. В большинстве случаев вопрос, который мучает вас, сейчас уже решён, если же нет, то не бойтесь спрашивать — сообщество всегда подскажет и поможет. Только не копируйте бездумно код, представленный в решениях, постарайтесь его понять и применить в своём приложении.
Для более опытных ребят рекомендую поизучать различные архитектурные паттерны, лучшие практики разработки (best practices), принципы SOLID, а также хотя бы поверхностно изучить алгоритмы и структуры данных.
Независимо от вашего текущего опыта и грейда полезным будет решение задач по программированию. Это помогает развивать логическое мышление и всегда держать себя в тонусе. Сервисов для этого достаточно, мне нравится Codewars.
Что касается меня, я тоже нахожусь в непрерывном обучении. Несмотря на большой опыт, у меня достаточно пробелов в знаниях и новых технологиях. Сейчас я понемногу изучаю TypeScript. Так сложилось, что на текущем месте работы у нас нет проектов, написанных на TS. Но я понимаю, что TypeScript имеет много сильных сторон по сравнению с JavaScript. Строгая типизация, отлов ошибок при сборке, подсказки в коде и многое другое.
Активно использую и продолжаю изучать Node.js, так как на работе использую Headless CMS и часто приходится дописывать и редактировать контроллеры на стороне бэкенда.
Заключение
Фронтенд-разработка подобна сборке огромного замка из набора лего. На первый взгляд кажется, что собрать замок — это просто и весело. Ты начинаешь с энтузиазмом, собираешь основные элементы, создаёшь основу, добавляешь башни и красочные детали.
Однако по мере того, как твой замок становится всё более сложным и украшенным, возникают трудности. Некоторые детали не сочетаются так, как хотелось бы, другие падают, создавая дыры в структуре. И тут ты понимаешь, что лего-замок — это не просто игра, а серьёзный проект, требующий внимания к деталям, стратегии и терпения.
Так же и с фронтендом: на первый взгляд может показаться, что создание веб-приложения или сайта — это легко и весело. Но по мере добавления новых компонентов, функций и анимаций возникают сложности с совместимостью, производительностью или пользовательским опытом. Ты сталкиваешься с тем, что твои идеи не всегда работают так, как задумано, и приходится искать решения, чтобы собрать всё воедино и создать крепкий и стабильный «фронтенд-замок».
В конце концов, если вложить достаточно времени, усилий и знаний в сборку «фронтенд-замка», результат превзойдёт ожидания: пользователи будут радоваться красивому и функциональному интерфейсу, а ты будешь гордиться своим творением, которое выдерживает испытания временем.
Фронтенд — очень популярное направление в мире ITТ. Мы живём в век цифровизации, и востребованность в специалистах на рынке труда постоянно растёт. Поэтому никогда не поздно начать изучать что-то новое для себя или углубляться в своих знаниях дальше. Если вы ещё не вошли в мир IT— сейчас самое время!