Оптимизирует алгоритмы обработки данных в Angular-сервисах, выбирая подходящие структуры для фильтрации и поиска. Применяет мемоизацию через Angular signals и computed() для избежания повторных вычислений в шаблонах.
Роли · Frontend Developer (Angular) · Middle
Что должен уметь Middle }
25 ключевых навыков, всего 52. Ожидания по каждому навыку и что меняется на следующем уровне.
На этой странице — что ожидается от Middle }, навык за навыком. Ключевые навыки оценивают руководитель и коллеги в цикле ревью; остальные учитываются только в самооценке. Основные области: Основы программирования, Frontend Development.
Ключевые навыки для Middle
Сгруппированы по областям. Метка справа — ожидаемая глубина: Осведомлённость, Применение, Продвинутый или Эксперт.
Основы программирования · 7
Уверенно работает с RxJS в Angular: switchMap для HTTP-запросов, combineLatest для объединения потоков, takeUntilDestroyed для управления подписками. Мигрирует на Angular signals и toSignal/toObservable.
Настраивает ESLint с @angular-eslint для обеспечения качества кода. Применяет строгий TypeScript (strict mode), архитектурные правила для импортов, автоматическое форматирование через Prettier и lint-staged.
Использует паттерны GoF в контексте Angular: Observer через RxJS/signals, Strategy через DI-токены, Facade для упрощения API сервисов. Применяет Container/Presentational разделение компонентов.
Самостоятельно применяет ООП/SOLID в Angular/TypeScript: правильная инкапсуляция сервисов с DI, разделение интерфейсов для контрактов компонентов, единственная ответственность в директивах и пайпах. Понимает компромиссы между классовой архитектурой Angular и реактивным программированием с RxJS.
Выбирает оптимальные структуры данных для Angular-сервисов: Map для кеширования, Set для уникальных значений, нормализованные объекты для NgRx Store. Грамотно типизирует коллекции через TypeScript generics.
Применяет продвинутую типизацию: generic-сервисы, строго типизированные формы (Typed Reactive Forms), discriminated unions для состояний компонента, типизация NgRx actions и selectors.
Frontend Development · 18
Настраивает визуальное тестирование Angular-компонентов: Chromatic или Percy интеграция со Storybook, тестирование различных состояний компонентов, responsive-скриншоты для разных viewport-ов.
Реализует accessible Angular компоненты: использует CDK a11y (FocusTrap, LiveAnnouncer, ListKeyManager) для сложных patterns, реализует keyboard navigation через HostListener, настраивает angular-eslint accessibility rules. Тестирует с @angular/cdk/testing и jest-axe.
Тестирует Angular-компоненты с зависимостями: мокирование сервисов через TestBed.overrideProvider, тестирование реактивных форм, компонентов с NgRx через provideMockStore, Angular Testing Library для user-centric тестов.
Работает с micro-frontends в Angular: настраивает @angular-architects/module-federation для шаринга Angular компонентов, реализует dynamic module federation для runtime discovery, создает Angular Elements для cross-framework integration. Управляет shared Angular services через dependency injection.
Оптимизирует бандл Angular-приложения: code splitting через lazy-loaded routes, dynamic imports для тяжёлых библиотек, анализ через webpack-bundle-analyzer, удаление неиспользуемых Angular-модулей и провайдеров.
Создаёт переиспользуемые Angular-компоненты для дизайн-системы: кастомные form-контролы через ControlValueAccessor, composable-компоненты с content projection (ng-content), документация через Storybook.
Использует продвинутые CSS-техники: Container Queries для responsive-компонентов, CSS Layers для управления специфичностью, анимации через Angular Animations API, CSS-in-JS через styleUrls и inline styles.
Самостоятельно реализует сложные UI-компоненты с Angular Core. Оптимизирует производительность рендеринга. Пишет тесты. Применяет инструменты для state management.
Оптимизирует Core Web Vitals в Angular: lazy loading через @defer блоки для улучшения LCP, trackBy в @for для стабильного CLS, ChangeDetectionStrategy.OnPush для снижения INP, NgOptimizedImage для изображений.
Реализует продвинутые паттерны получения данных: кеширование через shareReplay, отмена запросов через switchMap, пагинация и бесконечный скролл, параллельные запросы через forkJoin, retry-стратегии.
Настраивает продвинутые PWA-функции в Angular: стратегии кеширования в ngsw-config.json (freshness vs performance), push-уведомления через SwPush, фоновая синхронизация данных, App Shell для быстрого старта.
Самостоятельно реализует сложные UI-компоненты с RxJS и реактивное программирование. Оптимизирует производительность рендеринга. Пишет тесты. Применяет инструменты для state management.
Настраивает Angular Universal для SSR: серверные маршруты, TransferState для избежания дублирования запросов, обработка browser-only API через isPlatformBrowser, prerendering статических страниц через ng build --prerender.
Применяет NgRx для управления состоянием: Store для глобального состояния, createFeature для feature-state, Effects для side effects. Мигрирует на NgRx SignalStore для более простых случаев.
Настраивает Tailwind CSS для Angular-проекта: кастомная тема в tailwind.config, интеграция с Angular Material через @apply, создание переиспользуемых утилитарных классов, purge-конфигурация для production.
Настраивает сборку Angular-приложения: выбор между esbuild и webpack builder, кастомизация angular.json для оптимизации, настройка environment-файлов, source maps, asset management и стилевые препроцессоры.
Применяет современные Web API в Angular-сервисах: IntersectionObserver для lazy-loading компонентов, ResizeObserver для адаптивности, Clipboard API, Web Storage с типизацией через generic-сервисы.
Создаёт Angular Elements для использования вне Angular: упаковка standalone-компонентов как Custom Elements, передача данных через attributes/properties, обработка событий через CustomEvent.
Дополнительные навыки
Команда их не оценивает, но они входят в самооценку и план развития.
Что меняется на Senior
52 навыков получают более высокое ожидание или становятся ключевыми при переходе с Middle на Senior. Сначала самые большие скачки.
- Тестирование доступности: Применение → Продвинутый · становится ключевым
- ChatGPT / Claude: Применение → Продвинутый · становится ключевым
- Code Review: Применение → Продвинутый · становится ключевым
- Docker: Применение → Продвинутый · становится ключевым
- E2E тестирование: Применение → Продвинутый · становится ключевым
- Git Advanced: Применение → Продвинутый · становится ключевым
- GitHub Actions / GitLab CI: Применение → Продвинутый · становится ключевым
- GitHub Copilot: Применение → Продвинутый · становится ключевым
- GraphQL Design: Применение → Продвинутый · становится ключевым
- Performance Budgets: Применение → Продвинутый · становится ключевым
} в открытой матрице компетенций: 52 навыков на 5 уровнях. Матрица бесплатна для специалистов и останется бесплатной.