Skip to content

Latest commit

 

History

History
274 lines (171 loc) · 14.8 KB

FE-profile.md

File metadata and controls

274 lines (171 loc) · 14.8 KB

Профили разработчиков Front-end

Введение

В 2023 году в Bereke Bank была обновлена организационная структура, в результате чего в команде разработки появились новые роли. Структура стала прозрачнее и позволяет разработчикам развиваться в разных направлениях.

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

Список профилей разработчиков

Общие требования к разработчикам

  • Понимание принципов и подходов к разработке программного обеспечения
  • Коммуникабельность и умение работать в команде
  • Умение работать с документацией
  • Умение читать и понимать код

Junior Frontend Developer

Junior Frontend Developer — это разработчик, который только начинает свой путь в разработке. Он знаком с основами разработки и может выполнять простые задачи.

Требования к Junior Frontend Developer

HTML

  • Основы HTML, включая понимание DOCTYPE
  • Работа с основными тегами, такими как head, meta
  • Знание семантической разметки и её важности
  • Подключение скриптов и стилей, понимание defer и async
  • Владение техникой работы с таблицами (table, td, tr, th)
  • Создание и управление формами (form, inputs, method, submit, reset, validation)

CSS

  • Основы CSS и различные способы подключения стилей
  • Понимание и применение CSS-селекторов
  • Владение концепцией CSS Box model и box-sizing
  • Использование свойств, таких как float, display, position, z-index
  • Понимание различий между visibility: hidden и display: none
  • Работа с фонами и изображениями, включая форматы картинок
  • Применение transition, transform, медиа запросов, псевдоклассов и псевдоэлементов
  • Использование CSS-препроцессоров и CSS-фреймворков

JavaScript

  • Основы JavaScript, его применение в современной разработке
  • Объявление переменных, понимание типов данных
  • Работа с операторами, условиями, циклами, switch, функциями
  • Понимание области видимости переменных, использование let и const
  • Основы работы с DOM и BOM, манипуляции с DOM-элементами
  • Подписка на события, работа с формами
  • Понимание и использование AJAX, cookie, localStorage, sessionStorage

Фреймворки и библиотеки

  • Базовые знания одного из популярных фреймворков или библиотеки (например: React, Vue или Angular)

Модульная архитектура и инструменты

  • Понимание модульной архитектуры (CommonJS, AMD, ES2015)
  • Опыт работы с инструментами сборки (webpack, browserify)

Сетевое взаимодействие

  • Знание HTTP-заголовков, методов запросов, основных кодов статусов ответов

Разработка и инструменты

  • Понимание процессов код-ревью, CI/CD
  • Опыт работы с системами контроля версий (git)
  • Взаимодействие с инструментами для дизайнеров (Figma, Invision, Sketch)

Дополнительные знания для React

  • Основы JSX, компоненты, props, state
  • Управление данными и событиями, включая useState, useEffect

Базовое понимание TypeScript

  • Типы, интерфейсы, классы

Middle Frontend Developer

Middle Frontend Developer — это разработчик, который уже имеет опыт работы в команде и может выполнять сложные задачи. Он знаком с основными инструментами разработки и может принимать участие в разработке архитектуры приложения в рамках команды.

Общие требования к Middle Frontend Developer такие же, как и к Junior Frontend Developer, но с более глубоким пониманием и опытом работы.

Требования к Middle Frontend Developer

Web Performance

  • Оптимизация производительности веб-страниц

Advanced CSS

  • Применение CSS препроцессоров, PostCSS, css-in-js
  • Понимание специфичности и приоритизации CSS-селекторов
  • Работа с flexbox и CSS grid
  • Применение методологий (BEM, OOCSS, SMACSS)
  • Использование CSS фильтров

JavaScript и TypeScript

  • Преобразования типов, создание объектов через new
  • Работа с JSON, setTimeout, setInterval, requestAnimationFrame
  • Понимание EventLoop и работы с массивами
  • Применение Promises, деструктуризация, аргументы функций по умолчанию, rest, spread
  • Работа с классами, наследование, super, static
  • Использование fetch, async/await, try/catch
  • Дженерики, декораторы, модули, пространства имён

DOM

  • Навигация и поиск по DOM-элементам
  • Управление размерами и прокруткой страницы
  • Работа с событиями: bubbling, stopPropagation, preventDefault
  • AJAX и Web APIs: Базовое применение XMLHttpRequest

Инструменты и процессы разработки

  • Уверенное знание фреймворков или ванильного JavaScript
  • Работа с Webpack, Vite и другими инструментами сборки
  • Понимание принципов DRY, KISS
  • Понимание CORS, JSDoc, GitFlow и CI/CD процессов
  • Опыт прохождения и проведения код-ревью
  • Использование профайлеров браузера и Browser Developer Tools

Дополнительные знания и навыки

  • Базовые знания Linux и ООП

Senior Frontend Developer

Senior Frontend Developer — это разработчик, который имеет большой опыт работы в команде и может выполнять сложные задачи. Он знаком с основными инструментами разработки и может принимать участие в разработке архитектуры приложения в рамках команды и организации. Менторство и обучение других разработчиков — это одна из его основных задач.

Общие требования к Senior Frontend Developer такие же, как и к Middle Frontend Developer, но с более глубоким пониманием и опытом работы.

Требования к Senior Frontend Developer

SEO

  • Понимание принципов и практик оптимизации под поисковые системы

Web Components

  • Знание и применение shadowDOM

Мультимедиа

  • Глубокое понимание и опыт работы с видео и аудио потоками

Server-Side Rendering (SSR)

  • Понимание принципов и применение SSR

CSS/Компоненты

  • Декомпозиция интерфейса на компоненты, возможно, с применением CSS Modules, БЭМ

JavaScript++ и TypeScript

  • Продвинутое понимание и использование побитовых операторов, объектов, массивов
  • Работа с датой и временем, контекстом (call, apply, bind)
  • Использование eval, обработка ошибок (try/catch), RegExp
  • Продвинутое понимание ES6+, включая классы, модули, async/await
  • Продвинутое понимание и опыт работы с TypeScript

DOM и Стили

  • Изменение аттрибутов и DOM-свойств, стилей

Web APIs и Коммуникации

  • Расширенные возможности XMLHttpRequest
  • Общение между окнами разных доменов через postMessage, WebSockets, SSE

Фреймворки и Технологии

  • Понимание философии используемых технологий или фреймворков
  • Конфигурирование и развертывание средств сборки (Webpack, Vite etc.)

Паттерны и Оптимизация

  • Знание основных паттернов проектирования (MV*, Factory, Pub-Sub etc)
  • Оптимизация производительности JavaScript и работы с DOM, включая мобильные браузеры

SPA и Локализация (i18n)

  • Реализация Single Page Applications (SPA), понимание когда и зачем их использовать
  • Иммутабельность, локализация

Безопасность и API

  • Защита от CSRF, понимание REST и SOAP

Документация и Тестирование

  • Документирование проекта, Unit-тесты, рефакторинг
  • Продвинутое автоматическое тестирование (e2e-тесты, Snapshot/screenshot based testing)
  • Продвинутый уровень работы с git

React и Redux

  • Тестирование компонентов, настройка проекта (Webpack, Vite, hooks)
  • Использование useReducer, useLayoutEffect, usePortals, компонентных паттернов
  • Selectors, Normalized state

Tech Lead Frontend

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

Он заинтересован в развитии команды и помогает другим разработчикам в решении сложных задач.

Общие требования к Tech Lead Frontend такие же, как и к Senior Frontend Developer, но с более глубоким пониманием и большим опытом работы.

Требования к Tech Lead Frontend

Оптимизация отрисовки страницы

  • Понимание и умение оптимизировать reflows и repaints

CSS-Архитектура

  • Разработка и поддержка CSS-архитектуры проекта

JavaScript ООП и Прототипы

  • Использование Object.defineProperty, геттеров/сеттеров, Object.freeze
  • Понимание ООП в JS в функциональном и прототипном стилях
  • Работа с прототипами, замыканиями, модулями

Дополнительные JS Концепции

  • Понимание и применение генераторов.

DOM и Window

  • Управление узлами: поиск, добавление, удаление.
  • Понимание координат в окне.

Расширенные API

  • Знание или углубленные навыки в областях canvas, WebRTC, WebGL, Web Audio API
  • Разработка Service Workers, Progressive Web Apps

Архитектура и Проектирование

  • Полный цикл разработки web-приложений/сервисов/сайтов
  • Проектирование архитектуры, ведение проекта, менторство
  • Понимание внутреннего устройства JS, включая V8, event loop, утечки памяти
  • Функциональное программирование в JS

Isomorphic и SSR Приложения

  • Разработка и оптимизация isomorphic (universal) apps и SSR.

Кеширование и Веб-Приложения

  • Управление кешем веб-страниц, в том числе Back-Forward cache в SPA.
  • Понимание работы веб-приложения от запроса до ответа сервера.

Тестирование и TDD

  • Разработка с применением feature toggle, TDD
  • Понимание структур данных и алгоритмов

Type-Safe Проекты

  • Способность создавать и поддерживать type-safe проекты