Select your current position
Pick a role and level — we'll show the growth path, skills and gap analysis.
Development path
Junior
0-2 years
Responsibility: Выполнение задач под руководством старших коллег. Изучение кодовой базы, стандартов и процессов команды. Написание кода по спецификациям, исправление простых багов, написание тестов.
Key skills:
Middle
2-5 years
Responsibility: Самостоятельная разработка фич от декомпозиции до деплоя. Участие в code review. Оптимизация производительности. Менторинг junior-разработчиков. Участие в архитектурных обсуждениях.
Key skills:
Senior
5-8 years
Responsibility: Проектирование архитектуры компонентов и сервисов. Решение сложных технических проблем. Ведение технического долга. Code review как gatekeeper качества. Менторинг middle-разработчиков. Выбор технологий для новых задач.
Key skills:
Lead / Staff
7-12 years
Responsibility: Техническое лидерство команды или направления. Проектирование системной архитектуры. Координация с другими командами. Формирование стандартов и best practices. Участие в найме. Планирование технического roadmap.
Key skills:
Principal
10+ years
Responsibility: Техническая стратегия на уровне компании или домена. Кросс-организационное влияние. Решение системных проблем бизнеса через технологии. Менторинг lead-инженеров. Публичное представление компании.
Key skills:
Gap analysis: skills to develop
To reach the next level you'll need to develop:
Independently implements complex UI components with Angular Core. Optimizes rendering performance. Writes tests. Applies state management tools.
Optimizes Core Web Vitals in Angular: lazy loading via @defer blocks for improved LCP, trackBy in @for for stable CLS, ChangeDetectionStrategy.OnPush for reduced INP, NgOptimizedImage for images.
Implements advanced data fetching patterns: caching via shareReplay, request cancellation via switchMap, pagination and infinite scroll, parallel requests via forkJoin, retry strategies.
Configures advanced PWA features in Angular: caching strategies in ngsw-config.json (freshness vs performance), push notifications via SwPush, background data sync, App Shell for fast startup.
Independently implements complex UI components with RxJS and reactive programming. Optimizes rendering performance. Writes tests. Applies state management tools.
Configures Angular Universal for SSR: server routes, TransferState to avoid duplicate requests, browser-only API handling via isPlatformBrowser, static page prerendering via ng build --prerender.
Applies NgRx for state management: Store for global state, createFeature for feature state, Effects for side effects. Migrates to NgRx SignalStore for simpler cases.
Configures Tailwind CSS for Angular projects: custom theme in tailwind.config, Angular Material integration via @apply, creating reusable utility classes, purge configuration for production.
Configures Angular application builds: choosing between esbuild and webpack builder, customizing angular.json for optimization, configuring environment files, source maps, asset management, and style preprocessors.
Applies modern Web APIs in Angular services: IntersectionObserver for lazy-loading components, ResizeObserver for responsiveness, Clipboard API, Web Storage with typing via generic services.
Creates Angular Elements for use outside Angular: packaging standalone components as Custom Elements, data passing via attributes/properties, event handling via CustomEvent.
Optimizes data processing algorithms in Angular services, choosing appropriate structures for filtering and searching. Applies memoization via Angular signals and computed() to avoid repeated template computations.
Confidently works with RxJS in Angular: switchMap for HTTP requests, combineLatest for stream merging, takeUntilDestroyed for subscription management. Migrates to Angular signals with toSignal/toObservable.
Configures visual testing for Angular components: Chromatic or Percy integration with Storybook, testing various component states, responsive screenshots for different viewports.
Implements accessible Angular components: uses CDK a11y (FocusTrap, LiveAnnouncer, ListKeyManager) for complex patterns, implements keyboard navigation via HostListener, configures angular-eslint accessibility rules. Tests with @angular/cdk/testing and jest-axe.
Configures ESLint with @angular-eslint for code quality. Applies strict TypeScript (strict mode), architectural import rules, automatic formatting via Prettier and lint-staged.
Tests Angular components with dependencies: mocking services via TestBed.overrideProvider, testing reactive forms, components with NgRx via provideMockStore, Angular Testing Library for user-centric tests.
Works with micro-frontends in Angular: configures @angular-architects/module-federation for sharing Angular components, implements dynamic module federation for runtime discovery, creates Angular Elements for cross-framework integration. Manages shared Angular services via dependency injection.
Optimizes Angular application bundles: code splitting via lazy-loaded routes, dynamic imports for heavy libraries, analysis via webpack-bundle-analyzer, removing unused Angular modules and providers.
Uses GoF patterns in Angular context: Observer via RxJS/signals, Strategy via DI tokens, Facade for simplifying service APIs. Applies Container/Presentational component separation.
Independently applies OOP/SOLID in Angular/TypeScript: proper service encapsulation with DI, interface segregation for component contracts, single responsibility in directives and pipes. Understands trade-offs between class-based Angular architecture and reactive programming with RxJS.
Creates reusable Angular components for the design system: custom form controls via ControlValueAccessor, composable components with content projection (ng-content), documentation via Storybook.
Uses advanced CSS techniques: Container Queries for responsive components, CSS Layers for specificity management, animations via Angular Animations API, CSS-in-JS through styleUrls and inline styles.
Chooses optimal data structures for Angular services: Map for caching, Set for unique values, normalized objects for NgRx Store. Properly types collections via TypeScript generics.
Applies advanced typing: generic services, strictly typed forms (Typed Reactive Forms), discriminated unions for component states, typed NgRx actions and selectors.