Понимает базовую сложность O(n), O(1) при работе с массивами и списками в React-компонентах. Избегает вложенных циклов при рендеринге списков через map(), использует key для оптимизации reconciliation алгоритма React.
Роли · Frontend Developer (React) · Junior
Что должен уметь Junior }
26 ключевых навыков, всего 56. Ожидания по каждому навыку и что меняется на следующем уровне.
На этой странице — что ожидается от Junior }, навык за навыком. Ключевые навыки оценивают руководитель и коллеги в цикле ревью; остальные учитываются только в самооценке. Основные области: Основы программирования, Frontend Development, Облако и инфраструктура.
Ключевые навыки для Junior
Сгруппированы по областям. Метка справа — ожидаемая глубина: Осведомлённость, Применение, Продвинутый или Эксперт.
Основы программирования · 6
Понимает async/await и Promise для работы с API в React-компонентах. Использует useEffect для загрузки данных, обрабатывает состояния loading/error/success при fetch-запросах, знает базовый TanStack Query для кеширования ответов.
Следует настроенным правилам ESLint и Prettier в React-проекте, пишет чистые функциональные компоненты. Использует осмысленные имена для компонентов, хуков и переменных, разделяет компоненты по ответственности, добавляет базовые TypeScript-типы.
Применяет базовые React-паттерны: компонентная композиция, props drilling, условный рендеринг. Понимает разделение на презентационные и контейнерные компоненты, использует children и render props для переиспользования логики.
Работает с массивами и объектами в state React-компонентов, понимает иммутабельность при обновлении состояния через useState и Zustand. Корректно использует spread-оператор и методы массивов для обновления UI.
Использует базовые TypeScript-типы в React-компонентах: интерфейсы для props, типизация useState и событий. Понимает разницу между type и interface, применяет React.FC, типизирует обработчики событий onChange, onClick.
Frontend Development · 18
Понимает концепцию визуального регрессионного тестирования для React-компонентов. Создаёт stories в Storybook для основных состояний компонентов, запускает базовые visual diff тесты через Chromatic или Percy для обнаружения непреднамеренных изменений UI.
Применяет базовые принципы accessibility в React-компонентах: семантические HTML-элементы, alt для изображений, aria-label для интерактивных элементов. Использует Radix UI для доступных UI-примитивов, проверяет базовую навигацию с клавиатуры.
Пишет базовые тесты React-компонентов с React Testing Library и Vitest: рендеринг, проверка текста и элементов через screen queries, базовые user interactions (click, type). Следует принципу testing-library: тестировать поведение, а не реализацию.
Понимает основы bundle optimization в React/Vite проектах: code splitting через React.lazy и Suspense, dynamic imports для тяжёлых библиотек. Анализирует bundle size через vite-plugin-visualizer, избегает импорта целых библиотек (lodash vs lodash-es).
Использует готовые компоненты дизайн-системы на Radix UI в React-приложении: кнопки, формы, модалки, навигацию. Понимает принципы композиции компонентов, применяет правильные варианты и размеры согласно дизайн-гайдлайнам.
Владеет основами современного CSS для React: flexbox и grid для лейаутов, CSS custom properties для переменных, media queries для адаптивности. Применяет CSS Modules или Tailwind CSS для изоляции стилей в компонентах.
Понимает метрики Core Web Vitals (LCP, FID/INP, CLS) и их влияние на React-приложение. Использует Lighthouse и React DevTools для базового анализа производительности, применяет Image component в Next.js для оптимизации LCP.
Использует CSS-in-JS на базовом уровне. Создаёт простые компоненты по дизайну. Понимает базовые концепции и следует component guidelines.
Загружает данные в React-компонентах через TanStack Query: базовые useQuery для GET-запросов, обработка loading и error состояний. Понимает кеширование и staleTime, использует fetch или axios для HTTP-запросов, отображает скелетоны во время загрузки.
Использует Next.js на базовом уровне. Создаёт простые компоненты по дизайну. Понимает базовые концепции и следует component guidelines.
Понимает концепции PWA, включая service worker и настройку манифеста в React-приложениях. Использует Workbox с Create React App для базовых стратегий кэширования. Реализует запросы на установку и офлайн-страницы.
Использует React Core на базовом уровне. Создаёт простые компоненты по дизайну. Понимает базовые концепции и следует component guidelines.
Понимает разницу между SSR, SSG и CSR в контексте Next.js. Использует App Router для создания серверных и клиентских компонентов, применяет generateStaticParams для статической генерации, понимает директивы use client и use server.
Управляет локальным состоянием React-компонентов через useState и useReducer. Использует Zustand для глобального стейта (тема, пользователь, UI-состояния), понимает поднятие состояния (lifting state up) и передачу через props и React Context.
Применяет базовые utility-классы Tailwind CSS для стилизации React-компонентов: отступы, цвета, типографика, flexbox. Использует responsive-префиксы (sm:, md:, lg:) для адаптивной вёрстки, понимает структуру tailwind.config.js.
Работает с базовой конфигурацией Vite для React-проекта: понимает dev server с HMR, TypeScript и JSX поддержку, настройку путей через resolve.alias. Использует стандартные плагины @vitejs/plugin-react, понимает различие dev/build режимов.
Использует базовые Web API в React-компонентах: localStorage/sessionStorage для персистентности, fetch для HTTP-запросов, DOM API через useRef. Понимает жизненный цикл подписок в useEffect, корректно очищает listeners при размонтировании.
Понимает стандарты Web Components (Custom Elements, Shadow DOM). Интегрирует сторонние веб-компоненты в React-приложения. Знает, когда использовать нативные компоненты vs абстракции React.
Облако и инфраструктура · 1
Понимает базовые сетевые концепции для веб-приложений React — HTTP/HTTPS запросы через fetch/axios, конфигурация CORS и паттерны получения данных SSR. Следует рекомендациям команды по настройке API-клиентов, обработке сетевых ошибок и отладке сетевой активности браузера.
Безопасность · 1
Понимает основные уязвимости OWASP Top 10 в контексте React: XSS-предотвращение через автоматическое экранирование JSX, опасность dangerouslySetInnerHTML, CSRF-токены. Использует Content Security Policy headers в Next.js, валидирует пользовательский ввод.
Дополнительные навыки
Команда их не оценивает, но они входят в самооценку и план развития.
Что меняется на Middle
56 навыков получают более высокое ожидание или становятся ключевыми при переходе с Junior на Middle. Сначала самые большие скачки.
- Микрофронтенды: Осведомлённость → Применение · становится ключевым
- Алгоритмы и сложность: Осведомлённость → Применение
- Асинхронное программирование: Осведомлённость → Применение
- Визуальное регрессионное тестирование: Осведомлённость → Применение
- Доступность (Accessibility): Осведомлённость → Применение
- Качество кода и рефакторинг: Осведомлённость → Применение
- Компонентное тестирование: Осведомлённость → Применение
- Оптимизация бандла: Осведомлённость → Применение
- Основы сетей: Осведомлённость → Применение
- Паттерны проектирования: Осведомлённость → Применение
} в открытой матрице компетенций: 56 навыков на 5 уровнях. Матрица бесплатна для специалистов и останется бесплатной.