Выбираем профессию frontend- и backend-разработчика: принципы и отличия

Содержание:

Работа фронтенд-разработчиком

Фронтенд-специалист может работать:

  • В штате студии или компании, находясь в офисе со всем необходимым оборудованием (компьютер с интернетом и необходимым программным обеспечением);
  • Также в компании, но удаленно из дома;
  • На фрилансе, выполняя проекты по договорной цене от разных заказчиков (обычно это больше верстка, чем разработка UI с нуля).

Наиболее популярный тип работы — офисная, так как в студии или компании фронтенд-разработчик взаимодействует с другими сотрудниками, будь то дизайнер, менеджер, бэкенд-специалист и т. д.

Востребованность специалиста

Frontend-разработчики востребованы в России, так как существует множество студий, которые реализуют веб-проекты (приложения или сайты). Конкретно оценить востребованность данного специалиста можно по статистическим показателям.

Мы зашли на самый популярный сайт по поиску работы в России — HeadHunter и посмотрели количество вакансий по запросу «фронтенд-разработчик». Вышло 2 300 вакансий по всей стране, что довольно много. Больше всего работы в Москве, Санкт-Петербурге и Новосибирской области.

Требования работодателей

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

Основные требования и обязанности специалиста:

  • Знание JavaScript;
  • Углубленные знания HTML, CSS, адаптивного дизайна;
  • Понимание кросс-браузерной совместимости;
  • Владение React.JS и соответствующей экосистемой;
  • Тестирование интерфейсов на разных платформах;
  • Работа с системой контроля версий Git;
  • Понимание фронтальной оптимизации UI;
  • Четкое понимание работы сетевых протоколов (HTTP, TCP/IP, UDP);
  • Навыки работы с CMS-системами;
  • Постоянное взаимодействие с бэкендом.

Также в обязанности фронтенд-специалиста может входить верстка (на SCSS, JSX, SVG), работа с интерфейсами (REST: JSON RPC, JSONP), а также с документоориентированными базами данных (PostgreSQL, MongoDB, Redis). Но эти требования встречаются лишь в некоторых вакансиях и только при опыте работы от трех лет и больше (для разработчиков минимум среднего уровня).

Поиск работы

Легче всего найти работу на самых популярных платформах по поиску вакансий — HeadHunter и Trud. Также рекомендуется посмотреть актуальные вакансии в подразделах крупнейшего русскоязычного IT-сайта Habr в ветке вакансий.

Как и почти любая работа в сфере информационных технологий, frontend позволяет найти работу за границей при среднем знании английского языка. Большинство разработчиков и так его знают, поэтому высокая квалификация во фронтенде — отличный шанс устроиться в заграничную компанию, некоторые из них обеспечивают переезд и проживание в своих странах.

Оплата труда

Ступеньки карьеры и перспективы

Начинающий фронт-энд разработчик должен обладать навыками верстальщика. Далее карьера может развиваться в нескольких направлениях:

специализация в бэк-энд разработках (Python, РНР) приведёт его к профессии бэк-энд разработчика;
увлечение пользовательским интерфейсом — к профессии фронт-энд разработчика;
внимание к дизайнерской части проекта — к профессии дизайнера;
совместное владение навыками фронт-энд и бэк-энд разработчика — к профессии фулл-стак разработчика. 

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

Интересные факты о профессии

Типы разработчиков

Гуру — это профессионал с богатейшим опытом работы, обладает навыками практически во всех IT-профессиях. В сложнейших ситуациях умеет сконцентрироваться, быстро вникнуть в суть проблемы и единолично решить её. Занимает должность технического директора и имеет большой авторитет у сотрудников.

Теоретик — специалист, который подкован теоретическими знаниями в области информационных технологий. Постоянно учится новому сам и учит других. Будучи сильным в теории, оказывается слабым специалистом на практике.

Мистер рефракторинг — специалист по переписыванию программного кода, который постоянно стремится к совершенству. Он занимается переписыванием не только чужих, но и своих кодов, причём полностью. В связи с чем всегда нарушает сроки проектов.  

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

Экспериментатор — специалист, который находится в курсе всех новейших технологий и инструментов в сфере IT. Он постоянно стремится использовать новинки в своей работе.

Спагеттикодер  — это специалист, работающий очень быстро, но результат его работы всегда оставляет желать лучшего. Его коды называют спагетти-кодом или лапшой. Не всегда это происходит от неопытности. Иногда — из-за сжатых сроков  или излишнего давления руководства. Но на всякого лапшакодера найдётся свой Мистер рефракторинг. Так что не так всё плохо в этом лучшем из миров! 

Автор Флюра Ягофарова

Что должен знать хороший frontend-разработчик?

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

На самом деле это то же самое, что забивать гвозди микроскопом. Верстальщик сможет сверстать готовый макет от дизайнера, пользуясь html и CSS. В отдельных случаях он «прикрутит», куда требуется, в плагин или библиотеку JavaScript.

У фронтенда задача на порядок более сложная и комплексная. Поэтому и знания у него должны быть соответствующие:

  1. Frontend Frameworks;

  2. HTML и CSS;

  3. JavaScript;

  4. JQuery

  5. Работа с препроцессорами CSS;

  6. Дизайн;

  7. Кросс-браузерная разработка;

  8. Системы управления контентом и платформы для электронной коммерции;

  9. Тестирование и отладка;

  10. Системы контроля версий Git и Version.

При этом хорошему фронтенд-разработчику требуется разбираться и в принципах поисковой оптимизации (SEO), различать виды верстки (адаптивная, мобильная, отзывчивая), понимать принципы оптимизации продукта под различные операционные системы и браузеры (если речь о создании сайтов).

Выходим за пределы серверной части

Вот где действительно становится интересно. Почти все браузеры начали реализовывать в себе движки JavaScript. На мой взгляд, именно AJAX изменил ход веб-приложений. Google первым освоил его с помощью своего почтового клиента и картографических приложений.

Мир серверной MVC, генерирующей HTML + JavaScript. Код JS разбросан по страницам. JavaScript в основном используется для улучшения UX за счет сокращения циклов просмотра сервера (Server View Cycles). Такие вещи, как отправка формы, проверка ввода и т.д. обрабатываются клиентским кодом.

Это самая распространенная архитектура в истории веб-приложений. Большинство приложений B2C, SEO-дружественных веб-сайтов, особенно созданных с помощью CMS — Content Management Systems, используют его. Количество клиентского кода зависит от потребностей приложения.

Эта архитектура как таковая никогда не была действительно стандартизирована и поэтому не имеет названия. Она развивалась инкрементном стиле и до сих пор считается расширением Web MVC. ASP.NET MVC, Java Struts, Python Django, Ruby ROR, PHP CodeIgniter — некоторые из широко используемых сред, широко использующих серверную MVC или Web MVC.

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

Фронтенд-разработка на практических примерах

В процессе своей практической деятельности фронтэнд-разработчик может получать от веб-дизайнера макеты будущего сайта либо сервиса или другие задания, на основании которых он создаёт клиентскую часть, выполняя:
— вёрстку дизайна сайта, создание шаблонов его будущих страниц с помощью HTML и CSS;
— настройку работы слайдеров, кнопок, онлайн-форм и прочего запланированного функционала (специалист по frontend-разработке либо использует готовые скрипты из библиотек, либо создаёт свои);
— проверку работы созданного функционала;
— оптимизацию скриптов для ускорения загрузки страниц и т. д.

Также фронтендер может консультировать по вопросам реализации того либо иного функционала. При этом в отличие от обычного верстальщика, знающего HTML+CSS, frontend-разработчик способен программировать интерактивные элементы на web-страницах и хорошо владеет языком программирования JavaScript, а также рядом других технологий. Но давайте остановимся на этом подробнее.

Интересные люди

  • Mathias Bynens — разработчик V8, высокопроизводительного JavaScript- и WebAssembly движка от Google с открытым исходным кодом.
  • Jake Archibald — веб-евангелист и представитель браузера Google Chrome, один из лучших экспертов компании, автор множества докладов на уникальные темы.
  • Phil Walton — инженер в Google, работающий над браузером Chrome, имеет опыт разработки с 1998 года и ведет персональный блог.
  • Monica Dinculescu — “emojineer”, работает в Google над проектом Magenta, создавая музыку и изобразительное искусство с помощью машинного обучения.
  • Tim Kadlec — технический консультант по производительности, делающий веб более быстрым, автор нескольких книг и участник конференций.
  • Léonie — специалист по доступности и сооснователь W3C Web Platform WG.
  • Eric Meyer — эксперт в области HTML и CSS, автор множества статей и книг, создатель нескольких полезных инструментов и ресурсов. Более подробно — на его личном сайте.
  • Una — веб-евангелист и директор по дизайну продуктов в Bustle Digital Group.
  • Harry Roberts — независимый веб-консультант по производительности, работающий с крупнейшими международными корпорациями. Приглашенный эксперт Google, отмеченный наградами разработчик, международный докладчик и посол по вопросам эффективности в SHIFT Commerce.
  • Alex Russell — техлид по стандартам команды Chrome, участник группы технической архитектуры W3C и разработчик ECMA TC39 (стандарт JavaScript).
  • Surma — веб-евангелист в Google.
  • Manuel Matuzović — профессиональный веб-разработчик с 2008 года и фрилансер с 2010 года, специалист в HTML, доступности, CSS-верстке и архитектуре.
  • HJ Chen — веб-евангелист в Nexmo.
  • Jen Simmons — дизайнер-евангелист в Mozilla, член рабочей группы CSS, который знает, как CSS Grid меняет веб-дизайн.
  • Martin Splitt — евангелист OSS1 и разработчик в Google.
  • Maximiliano Firtman — независимый разработчик мобильных и веб-приложений, ментор и докладчик, занимающийся прогрессивными веб-приложениями, производительностью, мобильностью и веб-платформой. Автор множества технических статей и книг о программировании.
  • Rachel Andrew — веб-разработчик, член рабочей группы CSS и главный редактор Smashing Magazine.
  • Roma Komarov — frontend-разработчик, специализирующийся на CSS, создатель Hayaku, bemto-компонентов, bemto для Pug.js и так далее.
  • Addy Osmani — руководитель команды Speed Team в Google Chrome, которая делает веб быстрее. Также Addy работает над несколькими проектами с открытым исходным кодом — более подробно на персональном сайте.

Disappearing Frameworks. Assess

В категорию «Исчезающие фреймворки» попадают фреймворки, выполняющую свою полезную работу на этапе компиляции, генерируя чистый JavaScript без тяжелых абстракций наподобие Virtual DOM. Такие фреймворки максимально легковесны, и их производительность на слабом железе заметно выше.

Кандидаты в эту категорию: Stencil, Svelte, Solid и Angular Elements.

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

Такие фреймворки потенциально могут быть использованы в решении задачи переиспользования UI-компонентов между разными большими фреймворками, что позволит, допустим, иметь одну общую кодовую базу UI Kit.

Более подробно познакомиться с подходом Disappearing Frameworks можно в статье Питера О’Шонесси.

Умения, необходимые для frontend разработки

Все на frontend разработке построено с использованием HTML, CSS и клиентских скриптов, таких как JavaScript, — основных элементов интерфейсной разработки. Разработчик интерфейсов объединяет мир дизайна и технологий, воплощает дизайн в жизнь и внедряет frontend в современном, привлекательном способе для взаимодействия с пользователем.

Как правило, услуги frontend веб-разработчика включают:

  • Пользовательский интерфейс
  • Приведение концепции дизайнера в жизнь с помощью HTML, CSS и JavaScript
  • Производство, модификация и обслуживание веб-сайтов и пользовательских интерфейсов веб-приложений
  • Создание инструментов, которые улучшают взаимодействие пользователей с вашим сайтом в любом браузере
  • Внедрение адаптивного дизайна для мобильных версий сайтов
  • Использование своего frontend опыта, взаимодействие с API и многое другое
  • Поддержание управления документооборотом программного обеспечения с помощью инструмента управления проектами, такого как GitHub и средств запуска задач, таких как Grunt and Gulp Консалтинг по передовым методам SEO
  • Тестирование сайта во время разработки для удобства использования и исправления любых ошибок

Что такое фронтенд и чем занимается специалист

Frontend — это разработка интерфейса, с которым взаимодействуют пользователи. Называется она так, потому что это создание наружной части сайта или приложения, а значит, находится снаружи/спереди (front).

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

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

Главные инструменты в этой сфере — языки веб-разметки (HTML, CSS) и программирования (JavaScript):

  • JavaScript используется для создания UI (user interface — интерфейс пользователя) с нуля;
  • На HTML производится основная верстка, где интерфейс переводится на язык, понятный современным браузерам;
  • Через CSS прикрепляются стили к структурированным документам (в случае с frontend это прикрепление стилей к документам HTML).

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

Из этого выходит, что профессия фронтенд-разработчика требует постоянного обучения и нахождения в курсе событий в индустрии.

Отличие frontend от backend

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

За все обработки и действия, которые производятся на серверах, отвечает другой специалист — бэкенд-разработчик. Так как это разные профессии, в backend используется другой инструментал, включающий языки программирования PHP, Perl, Java, Python, Ruby, фреймворки и SQL для работы с данными. Кстати, на нашем сайте есть обзор профессии PHP-программиста.

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

Достоинства и недостатки

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

Перечень плюсов:

  • Востребованность специалистов;
  • Хорошая зарплата;
  • Довольно низкий порог вхождения по сравнению с другими IT-профессиями, ведь нужен всего один язык программирования, а языки разметки и стилей значительно проще;
  • Есть как работа с исходным кодом, так и дизайнерская составляющая деятельности;
  • Со временем можно изучить бэкенд и стать фуллстэк-специалистом.

Список минусов:

  • Во многих вакансиях по этой специальности есть требования, касающиеся бэкенда;
  • Обязательно взаимодействие с другими сотрудниками (далеко не для всех это минус);
  • Хоть JavaScript и не такой сложный и требовательный, как, например, C++, для того чтобы им уверенно владеть, нужно иметь начальные знания алгебры.

Что следует знать фронтендщику о дизайне и не только

Сетка. Практически все макеты строятся на основе сетки. Зная её, верстать становится проще, а учитывая, что теперь у нас есть grid, это превращается в удовольствие.
Основы Figma. Говорить с дизайнером на одном языке и понимать особенности и отличия вёрстки в Figma и WEB-е.
БЭМ

Неважно, как вы верстаете, будь то CSS-in-JS или CSS-modules, методология позволяет навести порядок в голове и мыслить правильными категориями.
Наследование стилей. Многие CSS свойства наследуются от родительского блока, в Figma это отсутствует.Чтобы не переписывать все стили, не глядя , помните, какие свойства берутся от родителя, а какие объявляются в самом элементе.
Конечные автоматы

Понимать, сколько состояний может быть у того или иного элемента на странице.

Повторю мысль из предыдущих частей: если вам что-то непонятно или интересно — к своему дизайнеру и задавайте вопросы, набирайтесь опыта в построении интерфейсов у профессионалов.

В чем разница между фронтендом и бэкендом

Результаты фронтенд-разработки пользователь видит перед собой. А все то, что делают бэкенд-разработчики, тщательно скрыто от глаз.

Бэкенд-разработчики работают с серверами, хранением данных и всеми теми механизмами, которые спрятаны «внутри» веб-сайта, но обеспечивают качественную работу его «внешней» стороны.

Приведу аналогию с часами. Вот вы смотрите на них – что вы видите? Цифры и стрелки. Вам все нравится, все понятно, красиво, полезно. Можно взглянуть и сразу понять, сколько времени. Циферблат со стрелками – это фронтенд.

Но работают эти часы благодаря чему? Благодаря сложному механизму, который спрятан под циферблатом – всяким шестеренкам, винтикам и болтикам. Это как раз бэкенд.

Любопытные ожидания других людей, с которыми пришлось сталкиваться

— Хочу кодить

— Но ты же фронтендер

Реальность: современный фронт это далеко не только вёрстка или кусочки кода для анимации. Это полноценная разработка и программирование, причём иногда не только на JS.

Ожидание: браузер один или они все одинаковые

Реальность: браузеров много и они все разные

Сейчас эта проблема не так ярко выражена, как, например, во время моего вхождения в сферу. Когда для разных браузеров подключались разные стили, руками проставлялись префиксы в больших количествах, а для простой выборки элемента в JS требовалось писать три различных варианта кода под IE, Safari и Opera. Стандартизация понемногу побеждает, и это круто. Но забывать о кроссбраузерности ещё рано.

Эксперимент 1

В нашем первом эксперименте мы будем использовать CodePen. CodePen это площадка для фронтенда (“песочница”), где вы можете писать HTML и CSS код без создания файлов на вашем компьютере. Там так же есть функция живого предпросмотра, которая обновляется сразу после сохранения кода.

Используя CodePen, вы убиваете двух зайцев сразу. С одной стороны вы практикуете HTML и CSS. C другой стороны вы создаете основу для портфолио с иллюстрациями вашего прогресса. Мы так же будем использовать Dribbble, который полон вдохновляющего дизайна.

Идите на Dribbble и найдите дизайн, код для которого вы сможете написать за пару часов. Я выбрал несколько примеров, с которых вы можете начать: , , , и . Я выбирал дизайны, ориентированные в первую очередь на мобильную разработку, потому что они менее сложны, чем их аналоги для обычных экранов. Тем не менее вы вольны выбрать вариант для десктопов.

Когда вы определились с дизайном, идите и попробуйте сверстать его на CodePen. Если вы застряли, помните что StackOverflow (англ.) ваш друг. Другой полезной практикой будет пойти на такие сайты, как Medium, AirBnB и Dropbox и при помощи инструментов разработчика (англ.) посмотреть как реализована разметка и стили. Так же взгляните на некоторые примеры на CodePen. Я прикрепляю несколько хороших ссылок:

  • Меню приложения
  • Виджет Twitter
  • Простое плоское меню

Не стоит расстраиваться если ваша копия будет отличатся от оригинала. Продолжайте практиковаться с разными дизайнами и со временем вы заметите существенные улучшения.

Если у вас нет за плечами опыта в дизайне, вероятнее всего, ваш дизайнерский глазомер не настроен. Фронтенд-разработчик с хорошим дизайнерским чутьем будет в состоянии отличить хороший дизайн и сверстать его идеально. Я написал статью несколько недель назад о том, как (рус.).

Dependency Injection. Adopt

Мы рекомендуем использовать паттерн DI и вместе с ним IoC-контейнеры. Кажется, что DI не сильно распространен во фронтенд-разработке за пределами Angular, но у нас в компании этот паттерн получил широкий охват, в том числе на проектах с React, где мы используем собственный фреймворк Tramvai.js, который построен на DI.

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

Нужно понимать, что DI повышает порог входа в проект. В некоторых случаях, особенно если у вас множество простых и уникальных задач, когда меньше возможности что-либо переиспользовать, смысл использовать DI уменьшается.

Наш коллега Сергей Нестеров сделал доклад Dependency injection в React-приложении — советуем посмотреть.

PM — Project manager

менеджера проектовPMPM

  • постановка общих целей проекта;
  • разработка планов для достижения этих целей;
  • ведение сроков проекта, отчетов о текущем состоянии;
  • управление ресурсами проектов (сотрудники и техническое оснащение);
  • улучшение координации взаимодействия между членами команды проекта;
  • отслеживание эффективности проекта и следования намеченному графику;
  • проведение оценки рисков для проектов;
  • организация различных собраний для обсуждения целей, текущего прогресса, положительных и негативных моментов проекта.
  • английский Upper Intermediate и выше, так как ПМ коммуницирует со стороной заказчика от лица команды;
  • широкие технические знания, но не сильно глубокие, чтобы можно было понимать, кто чем занимается, как происходит работа в целом, не сильно углубляясь;
  • навыки управления проектами и участвующими в них командами;
  • сильнейшие коммуникационные навыки, так как работа PM в основном состоит из коммуникаций с членами команды, руководством;
  • развитые навыки ведения переписки. К примеру, часто нужно посылать письма на email заказчика от лица команды, компании, и письмо неправильно составленное или с ошибками никто не оценит;
  • аналитический склад ума, который будет полезен при решении проблем, возникающих во время работы над проектом;
  • навыки тайм-менеджмента, использование которых позволит держать проекты в рамках графика и бюджета (ведь время=деньги);
  • навыки планирования ресурсов и задач.

700$1200-4500$В кого можно вырасти:

  • delivery manager (DM) — прямое продолжение PM-a, стоит сразу над группой PM-ов и координирует их проекты на более высоком уровне;
  • program manager — координирует несколько взаимосвязанных проектов, но я сам не сильно понимаю различие с DM-ом;
  • chief technical officer (CTO) — технический директор, несущий ответственность за разработку продуктов и улучшение их процессов создания;
  • chief executive officer (CEO) — главный исполнительный директор;
  • account manager (AM) — менеджер по работе с клиентами;
  • переучиться и перейти в другую специальность ))

Чем дизайнер может помочь фронтенд-разработчику

Здесь я собрал некоторые пункты, наличие которых в проекте помогло бы мне верстать.

История изменения макетов. Часто при работе над макетом неожиданно обновляются требования к продукту, и в макет вносят изменения. Фронтендщику ставят задачу на перевёрстку, но, на первый взгляд, все выглядит, как раньше. Только при более детальном исследовании выясняется, что поменялся, например, порядок иконок социальных сетей в футере, изменились некоторые отступы в контентной области или изменились некоторые тексты на странице. Чтобы это выяснить, приходится делать скриншот макета и сопоставлять его с текущей вёрсткой сайта. В Figma на данный момент нет системы контроля версий, поэтому всё ложится на плечи команды. И только коммуникация помогает решить данную проблему.
Стайлгайд проекта. Страница со всеми состояниями интерактивных элементов, страница с типографией, страница с формами и примерами их заполнения и прочее, что позволит атомарно подойти к блокам. Хорошо проработанный стайлгайд проекта —  залог успеха. Главное держать его в актуальном состоянии и не нарушать его.
Доступность интерфейса

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

Внедрение доступности будет гораздо тяжелее, если вообще возможно.
Детально проработанная адаптивность. Полное понимание, как будет вести себя макет при его сжатии и расширении. Это решит проблему с промежуточными состояниями между брейкпоинтами и упростит создание любого типа верстки.
Структура проекта в Figma. Многие разработчики жаловались мне, что невозможно открыть Figma, потому что на одной вкладке отображаются все страницы проекта. Правильная структура хранения проекта облегчит работу с ним как дизайнеру, так и разработчику.
Названия у цветов и шрифтов. Когда у всех цветов и типов шрифтов есть имена, фронтенд разработчику не придётся их придумывать. Идеально, если имена содержат только буквы, цифры и знаки «$» и «_», при этом первый символ не является цифрой. Это необязательно, но позволит использовать названия прямо в коде, что облегчит их применение и поддержку в актуальном состоянии.
Консистентность между версиями. Это, скорее, просьба к дизайнерам. Разрабатывая макет мобильной версии сайта, старайтесь помнить, что это всё-таки сайт, а не мобильное приложение. Хочется видеть консистентность между десктопной и мобильной версиями. В некоторых проектах мобильная и десктопная версии настолько отличались, что приходилось делать разные версии с нуля, а это забирает в два раза больше времени на разработку.

Как это было у нас

Как вылечить зоопарк?

Для справки: наш основной инструмент — React, но мы также развиваем экспертизу и в Angular.

  1. как-то зафиксировать, формализовать требования к разработке;
  2. побудить разработчиков следовать этим правилам.

Что нужно заложить в шаблон приложения

  • определение архитектуры, подбор технологий/инструментов;
  • создание каркаса приложения, сборка;
  • создание и настройка общих механизмов: обработка ошибок, модальные окна, уведомления, маршрутизация, запросы к серверу;
  • определение набора элементов интерфейса;
  • поиск/создание, настройка, стилизация компонентов интерфейса с нужными функциями;
  • обработка форм, валидация;
  • вёрстка;
  • реализация функционала по заказу клиента (бизнес-логика);
  • ревью кода;
  • ведение документации.

Какие из этих задач ваши разработчики могу решить в течение нескольких минут?

  • готовую структуру папок;
  • настроенный маршрутизатор (routes);
  • сконфигурированное хранилище redux;
  • модуль запросов к серверу;
  • готовые механизмы показа различных типов лоадеров, уведомлений и модальных окон через redux; 
  • модуль обработки ошибок (серверных и пользовательских) с выводом сообщений пользователю;
  • шаблонные страницы;

Выбор библиотеки компонентов

Готовые библиотеки

Плюсы готовых библиотек:

  • сразу есть готовый функционал;
  • есть готовые решения многих проблем;
  • при определённых условиях быстро внедряются.

Минусы готовых библиотек:

  • редко удаётся найти сразу полностью подходящее решение (требуется время на поиск, доработки, внедрение);
  • доработки компонентов собственными силами возможны до определённых пределов;
  • запрос нового функционала невозможен или занимает неопределённое время, что обычно неприемлемо для коммерческой разработки. Функционал приходится дорабатывать самостоятельно;
  • исправление багов компонентов занимает неопределённое время, даже в коммерческих библиотеках. Приходится вносить исправления самостоятельно.

Собственные разработки

Плюсы собственных разработок:

  • любой функционал по заказу;
  • оперативное внедрение новых фич и исправление багов;
  • учитывают особенности разработки компании.

Минусы собственных разработок:

  • необходимы ресурсы на разработку и поддержку;
  • проектам приходится ждать требуемый функционал, иногда по несколько дней/недель в случае со сложными компонентами (календари и т.п.);
  • требуется экспертиза в нескольких направлениях (проработка требований, разработка, тестирование, документация).

Что в итоге у нас получилось

  • определение архитектуры, подбор технологий/инструментов;
  • создание каркаса приложения, сборка;
  • создание и настройка общих механизмов: обработка ошибок, модальные окна, уведомления, маршрутизация, запросы к серверу;
  • определение набора элементов интерфейса;
  • поиск/создание, настройка, стилизация компонентов интерфейса с нужными функциями;
  • обработка форм, валидация;
  • вёрстка;
  • реализация функционала по заказу клиента (бизнес-логика);
  • ревью кода;
  • ведение документации.
  • реализация функционала по заказу клиента (бизнес-логика);
  • ревью кода;
  • ведение документации по проекту.

Где обучиться профессии с нуля?

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

Название

Описание

Идет в университете Нетология. Подходит для новичков. Обучают 10 технологиям: HTML, CSS, JavaScript, JSX, XHR и AJAX, React, VirtualDOM, Flexbox, React Router. Студенты выполняют более 100 практических работ. Помогают с поиском работы.

Подходит новичкам и студентам с базовым уровнем. Учат верстать, в том числе адаптивные макеты, писать скрипты на JS, использовать фреймворки. Отдельные уроки посвящены карьере в программировании, какие навыки востребованы, как искать заказы и работу.

Учат основным front-end технологиям. Предлагают пройти стажировку. Сотрудничают с разными компаниями, которые могут предлагать студентам вакансии.

Учиться на курсах можно из любой точки мира, поскольку занятия идут в формате вебинаров – через интернет. Преподавателям можно задавать вопросы в чате. По практическим работам вы получаете обратную связь.

MVC предков — Первоисточник

Отделение данных от представления является основной темой графических пользовательских интерфейсов (как веб-ориентированных, так и настольных). С MVC — Model View Controller, отделение представления (View) от доменной области (Model) было основной мотивацией проектирования. И, без сомнения, MVC была плодотворной работой, которая повлияла на будущие поколения.

MVC был представлен для Smalltalk-80. В MVC объект View отображает данные, хранящиеся в объекте Model. Прежде чем мы сможем полностью изучить потоки данных в MVC, мы должны понять среды прикладных программ того времени (около 1970-х годов):

  • Этот MVC был предназначен только для настольных приложений. Веб еще не родился. Мы говорим о десятилетии до этого.
  • Забудьте о Web. Сложных операционных систем с графическим интерфейсом не существует.
  • Это означает, что прикладное программное обеспечение было очень близко «железу» систем.

Эти ограничения имели важные последствия для MVC. Обязанностью объекта Controller стало реагирование на пользовательские вводы, такие как клавиатура или мышь, и их преобразование в действия над моделью. Кроме того, отсутствие графических элементов в операционных системах означает, что Представление (View) не соответствует тому, что на экране.

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

После всего сказанного о MVC, следующее изображение должно иллюстрировать потоки данных в MVC. В этом примере у нас есть простой счетчик с кнопкой увеличения и уменьшения. Состояние счетчика поддерживается Моделью. Также мы заменили две кнопки на одну, чтобы было проще.

С точки зрения связей:

  1. View и Controller содержат прямую ссылку на Model, но не наоборот. Это означает, что Model не зависит от пользовательского интерфейса и может меняться, не беспокоясь о проблемах пользовательского интерфейса.

  2. Модель реализует шаблон Observer, и на него подписывается один или несколько объектов View. Когда Model изменяется, она вызывает событие, и View обновляется после реакции на событие.

В MVC есть два разных потока данных. Во View-потоке Model не участвует. Это только изменение пользовательского интерфейса. Показ эффекта нажатия кнопки или реакция на событие прокрутки мыши — пример View-потока.

Сегодня мы больше не используем этот MVC и поэтому иногда его называют классическим MVC или MVC предков (father’s MVC).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector