Матрица компетенций: Разработчики#
О матрице#
Данная матрица описывает требования к компетенциям разработчиков для 20 позиций, сгруппированных по уровням. Каждый уровень оценивается по 4 критериям.
Технологический стек:
- Основной: C#, .NET Framework/Core
- Дополнительный: C++ для работы с nanoCAD API
- Ключевые навыки: Алгоритмы, многопоточность, асинхронное программирование, высокопроизводительный код
- Инструменты: Visual Studio/Rider, Mercurial (hg), CI/CD, профайлеры
- Предметная область: Инженерные сети (ВК, ОВ, ГС, НВК и др.), BIM стандарты
- Тестирование: unit-тесты, TDD, высокое покрытие критичного кода
INTERN (позиции 01-02)#
Общие компетенции уровня INTERN#
| Критерий | Ожидания |
|---|---|
| Технические навыки | • [Критичный] Понимание основ ООП (инкапсуляция, наследование, полиморфизм) • [Критичный] Понимание принципов SOLID • [Критичный] Базовые структуры данных (List, Dictionary, HashSet) и их complexity • [Критичный] Базовые алгоритмы (поиск, сортировка, обход графов: DFS/BFS) • Знакомство с Visual Studio/Rider, Mercurial • [Nice-to-have] Начальное знакомство с инженерными сетями • Пишет простой код под контролем наставника |
| Автономность | • Требуется постоянное руководство наставника • Выполняет микрозадачи • [Критичный] Задает много вопросов, активно учится • Финальные решения принимает наставник |
| Влияние | • Работает над отдельными микрозадачами • [Критичный] Фокус на обучении и адаптации • Получает feedback по своему коду |
| Бизнес-impact | • Минимальный вклад (простые баги, тесты) • [Критичный] Изучает продукт и его назначение |
Примеры задач: Исправление простых багов, написание unit-тестов, документирование кода, изучение существующего кода.
Срок на позициях 01-02: Максимум 6 месяцев (полная ставка) или 12 месяцев (0.5 ставки). После — повышение до позиции 03 или расставание.
Позиция 01: Стажер-разработчик 2 категории#
Фокус: Обучение основам, адаптация в команде.
Позиция 02: Стажер-разработчик 1 категории#
Фокус: Завершение стажировки, демонстрация готовности к Junior.
Отличия от 01:
- Более уверенное выполнение микрозадач
- Меньше вопросов по базовым вещам
- Начинает участвовать в простых code review
JUNIOR (позиции 03-06)#
Общие компетенции уровня JUNIOR#
| Критерий | Ожидания |
|---|---|
| Технические навыки | • Уверенное применение SOLID на практике • Применение основных паттернов (Singleton, Factory, Observer, Strategy) • Применение алгоритмов и структур данных на практике • Работа с Visual Studio/Rider, Mercurial (commit, branch, merge) • Основы многопоточности (Thread, lock, thread safety) • Написание unit-тестов для своего кода • [Nice-to-have] Понимание 1-2 разделов инженерных сетей |
| Автономность | • Самостоятельно реализует типовые задачи • Берет ответственность за свои задачи (доводит до done) • Просит помощи при сложных задачах • Реалистично оценивает свои задачи с помощью наставника |
| Влияние | • Работает над задачами в рамках фичи • Участвует в code review (получает и дает feedback) • Может помочь стажерам |
| Бизнес-impact | • Вносит вклад в реализацию фич • Понимает основную цель продукта • Знает, что продукт для проектировщиков |
Критерии перехода между позициями#
| Переход | Что требуется |
|---|---|
| 03 → 04 | • Может самостоятельно реализовать фичу среднего размера (1-2 недели) • Качественные unit-тесты • Понимание async/await на базовом уровне |
| 04 → 05 | • Предлагает несколько вариантов решения задачи с trade-offs • Знание алгоритмов средней сложности (деревья, DP) • Async/await на практике |
| 05 → 06 | • Ведёт фичи от начала до конца с минимальным контролем • Работа с nanoCAD API (базовый уровень) • Предлагает свои решения с обоснованием • Активно помогает позициям 03-04 |
Позиция 03: Младший разработчик 4 категории#
Фокус: Типовые задачи с наставником, освоение инструментов и процессов.
Отличия от 02 (Intern):
- Самостоятельно реализует типовые задачи от постановки до тестов
- Участвует в code review (не только получает, но и дает feedback)
- Берет ownership за свои задачи
Позиция 04: Младший разработчик 3 категории#
Фокус: Растущая самостоятельность, базовый async.
Отличия от 03:
- Больше самостоятельности в типовых задачах
- Понимание async/await на базовом уровне
- Качественные unit-тесты с граничными случаями
Позиция 05: Младший разработчик 2 категории#
Фокус: Алгоритмы средней сложности, растущая экспертиза.
Отличия от 04:
- Знание алгоритмов средней сложности (деревья, графы, DP)
- Асинхронное программирование (Task, async/await)
- Может работать над небольшими фичами целиком
Позиция 06: Младший разработчик 1 категории#
Фокус: Верхняя граница Junior, готовность к Middle.
Отличия от 05:
- Самостоятельно решает простые и большинство средних задач
- Понимание основ работы с nanoCAD API
- Предлагает свои решения с обоснованием
- Полный ownership (от анализа до готовности к релизу)
Примеры задач Junior: Реализация алгоритмов, добавление фич под руководством, рефакторинг с применением SOLID и паттернов, исправление багов с написанием тестов.
MIDDLE (позиции 07-10)#
Общие компетенции уровня MIDDLE#
| Критерий | Ожидания |
|---|---|
| Технические навыки | • Асинхронное программирование (TPL, async/await, async streams) • Работа с nanoCAD API, понимание архитектуры • Проектирование расширяемых решений (SOLID, паттерны) • Тщательное тестирование (unit-тесты, моки) • Понимание архитектуры приложения • [Nice-to-have] Понимание 2-3 разделов инженерных сетей + один из путей развития: A) Technical Depth: Многопоточность, оптимизация, concurrency patterns B) Breadth/Operational: CI/CD, автоматизация тестирования, практики качества C) Legacy Modernization: Рефакторинг, работа с техдолгом, миграция |
| Автономность | • [Критичный] Полностью самостоятелен в типовых задачах • Декомпозирует задачи самостоятельно • Проявляет инициативу в улучшениях • [Критичный] Полный ownership за свои фичи • Самостоятельно оценивает и планирует свою работу |
| Влияние | • [Критичный] Работает над целыми фичами • Проводит code review для Junior • Может быть наставником для Junior • Предлагает улучшения процессов |
| Бизнес-impact | • [Критичный] Реализует фичи, приносящие ценность пользователям • Понимает потребности инженеров-проектировщиков • Участвует в оценке задач и планировании |
Критерии перехода между позициями#
| Переход | Что требуется |
|---|---|
| 07 → 08 | • Уверенная работа в своей области, минимум вопросов • Качественное code review (находит логические ошибки) • Проактивное улучшение процессов |
| 08 → 09 | • Экспертиза в своей области, к нему обращаются за советом • Начало менторинга Junior • Его технические предложения регулярно принимаются командой |
| 09 → 10 | • Может вести небольшие проекты (техлид) • Активный менторинг (вырастил хотя бы одного Junior) • Готовность к переходу на Senior |
Позиция 07: Разработчик 4 категории#
Фокус: Полная самостоятельность, работа над фичами целиком.
Отличия от 06 (Junior 1 кат.):
- Полностью самостоятелен в типовых задачах
- Работает над целыми фичами, а не отдельными задачами
- Предлагает альтернативные решения в технических дискуссиях
- Может быть наставником для Junior
Примечание: С этой позиции доступна роль Тимлида.
Позиция 08: Разработчик 3 категории#
Фокус: Уверенная работа, начало code review.
Отличия от 07:
- Полная самостоятельность во всех задачах своей области
- Предлагает варианты решений для сложных задач
- Проактивно выявляет и решает проблемы
Позиция 09: Разработчик 2 категории#
Фокус: Экспертиза в области, менторинг.
Отличия от 08:
- Экспертиза в своей области, к нему обращаются за советом
- Активный менторинг Junior
- Его технические предложения регулярно принимаются командой
Позиция 10: Разработчик 1 категории#
Фокус: Техлидство небольших проектов, готовность к Senior.
Отличия от 09:
- [Критичный] К нему обращаются за консультациями по техническим вопросам
- [Критичный] Вырастил хотя бы одного Junior до самостоятельности
- Может вести небольшие проекты как техлид
- Делится знаниями (технические доклады)
Примеры задач Middle: Разработка фич с тестовым покрытием, интеграция с nanoCAD, настройка CI/CD, менторинг Junior, техлидство небольших проектов.
SENIOR (позиции 11-14)#
Общие компетенции уровня SENIOR#
| Критерий | Ожидания |
|---|---|
| Технические навыки | • [Критичный] Проектирование архитектуры модулей и подсистем • Уверенная работа с C++ и нативным кодом • Знание лучших практик, паттернов, компромиссов • Тестовые стратегии, архитектура тестирования • [Nice-to-have] Экспертное знание 3+ разделов инженерных сетей + один из путей развития: A) Performance: CLR internals, lock-free алгоритмы, оптимизация памяти B) Build & Quality: Архитектура CI/CD, tooling, engineering standards C) Legacy Modernization: Стратегический рефакторинг, миграционные стратегии |
| Автономность | • [Критичный] Полная автономность в любых задачах • [Критичный] Ownership за целые подсистемы • Предвидит проблемы и предотвращает их • Планирует работу подсистемы, предвидит риски со сроками |
| Влияние | • [Критичный] Его решения становятся стандартами команды • [Критичный] Менторинг Middle специалистов • [Критичный] Ведет проекты от идеи до релиза • Формирует технические стандарты команды • Эффективно доносит технические решения до команды |
| Бизнес-impact | • [Критичный] Реализует ключевые фичи и проекты • [Критичный] Влияет на продуктовые решения • Вклад значителен и подтверждён конкретными результатами |
Критерии перехода между позициями#
| Переход | Что требуется |
|---|---|
| 11 → 12 | • Архитектурные решения на уровне модулей • Менторинг Middle • Принимает ключевые технические решения |
| 12 → 13 | • Архитектурные решения на уровне подсистем • Устанавливает технические стандарты • Менторинг других Senior |
| 13 → 14 | • [Критичный] Влияет на всю команду/продукт • [Критичный] Архитектор систем уровня продукта • К нему обращаются все в команде за консультациями |
Позиция 11: Старший разработчик 4 категории#
Фокус: Проектирование решений, влияние на команду.
Отличия от 10 (Middle 1 кат.):
- [Критичный] Проектирует архитектуру модулей
- [Критичный] Менторинг Middle специалистов
- Ведет проекты от идеи до релиза
- Формирует технические стандарты команды
Позиция 12: Старший разработчик 3 категории#
Фокус: Архитектурные решения, рост других.
Отличия от 11:
- Архитектор на уровне модулей и крупных компонентов
- Устанавливает технические стандарты
- Определяет технические направления развития
Позиция 13: Старший разработчик 2 категории#
Фокус: Техлидство проектов, менторинг Senior.
Отличия от 12:
- Архитектор на уровне подсистем
- Менторинг других Senior
- Принимает ключевые архитектурные решения
Позиция 14: Старший разработчик 1 категории#
Фокус: Стратегические решения, технический авторитет.
Отличия от 13:
- [Критичный] Архитектор систем уровня продукта
- [Критичный] Влияет на всю команду/продукт
- К нему обращаются все в команде за консультациями
- Ведет несколько проектов или крупные инициативы
Примеры задач Senior: Архитектура подсистем, решение сложных проблем производительности, техлидство проектов, менторинг Middle, формирование стандартов.
STAFF (позиции 15-18)#
Общие компетенции уровня STAFF#
| Критерий | Ожидания |
|---|---|
| Технические навыки | • [Критичный] Лучше всех в отделе знает техническое ядро продукта • [Критичный] Архитектор на уровне продукта • [Критичный] Решает системные проблемы, требующие экспертизы в нескольких областях или кросс-командной координации • Видение технического развития продукта на 1-2 года • [Nice-to-have] Эксперт в предметной области (инженерные сети, BIM) |
| Автономность | • [Критичный] Определяет технические направления развития продукта • [Критичный] Ownership за архитектуру критичных подсистем • Принимает решения с долгосрочными последствиями • [Критичный] К нему обращаются все Senior-ы за консультациями |
| Влияние | • [Критичный] Влияет на весь отдел (10-20 человек) • [Критичный] Менторинг и развитие Senior инженеров • [Критичный] Принимает критичные архитектурные решения • Формирует технические стандарты отдела • Пишет понятные технические документы (RFC, design docs) • [Nice-to-have] Выступает на локальных митапах |
| Бизнес-impact | • [Критичный] Влияет на техническую стратегию продукта • [Критичный] Вклад критичен для успеха продукта • Работает с product-менеджерами напрямую • Решает проблемы, блокирующие развитие продукта |
Критерии перехода между позициями#
| Переход | Что требуется |
|---|---|
| 15 → 16 | • Кросс-командное влияние • Решает системные проблемы, требующие экспертизы в нескольких областях • Формирует стандарты отдела |
| 16 → 17 | • Техническая стратегия продукта • Влияние на весь отдел • Развивает Senior инженеров |
| 17 → 18 | • Видение развития на 1-2 года • Критичен для успеха продукта • Готовность к Principal |
Позиция 15: Ведущий разработчик 4 категории#
Фокус: Лучший инженер отдела, решает сложнейшие проблемы.
Отличия от 14 (Senior 1 кат.):
- Влияние на весь отдел (не только команду)
- Кросс-командное влияние
- Решает системные проблемы, требующие экспертизы в нескольких областях
Позиция 16: Ведущий разработчик 3 категории#
Фокус: Кросс-командное влияние, формирование стандартов.
Отличия от 15:
- Формирует технические стандарты отдела
- Менторинг Senior инженеров
- Принимает критичные архитектурные решения
Позиция 17: Ведущий разработчик 2 категории#
Фокус: Техническая стратегия, развитие Senior.
Отличия от 16:
- Определяет техническую стратегию продукта
- Видение развития на 1-2 года
- Вклад критичен для успеха продукта
Позиция 18: Ведущий разработчик 1 категории#
Фокус: Лучший инженер отдела, готовность к Principal.
Отличия от 17:
- Лучше всех знает техническое ядро продукта
- К нему обращаются все Senior-ы за консультациями
- Работает с product-менеджерами напрямую
Примеры задач Staff: Техническая стратегия продукта, архитектура критичных компонентов, исследование новых технологий, решение самых сложных проблем, кросс-командные инициативы, менторинг Senior-ов.
Примечание: Позиции 15-18 — это обычно 2-4 человека в отделе из 15-20 инженеров.
PRINCIPAL (позиции 19-20)#
Общие компетенции уровня PRINCIPAL#
| Критерий | Ожидания |
|---|---|
| Технические навыки | • [Критичный] Глубокая экспертиза в архитектуре всех продуктов департамента • [Критичный] Спроектировал ключевые компоненты продуктов • [Критичный] Видение развития на 2-3 года вперед • [Nice-to-have] Эксперт в предметной области и BIM стандартах • [Критичный] Определяет технологическую стратегию департамента • Влияет на выбор технологий для новых продуктов |
| Автономность | • [Критичный] Определяет техническую стратегию всех продуктов • [Критичный] Ownership за архитектуру и техническое здоровье продуктов • Полная свобода в технических решениях • [Критичный] К нему обращаются все (включая руководителей и Staff) |
| Влияние | • [Критичный] Влияет на весь департамент (20-50 человек) • [Критичный] Развивает технических лидеров • [Критичный] Принимает стратегические технические решения • Формирует техническую культуру департамента • [Критичный] Является финальным арбитром в сложных технических спорах • Презентует стратегические решения руководству |
| Бизнес-impact | • [Критичный] Влияет на стратегию всех продуктов • [Критичный] Критичен для конкурентоспособности продуктов • Работает с топ-менеджментом напрямую |
Позиция 19: Главный разработчик 2 категории#
Фокус: Технический лидер, глубокая экспертиза.
Отличия от 18 (Staff 1 кат.):
- Влияние на весь департамент (не только отдел)
- Определяет техническую стратегию нескольких продуктов
- Развивает Staff и Senior инженеров
- Работает с топ-менеджментом
Позиция 20: Главный разработчик 1 категории#
Фокус: Стратегия всех продуктов, влияние на индустрию.
Отличия от 19:
- Видение развития департамента на 2-3 года
- Инициирует трансформационные изменения
- [Nice-to-have] Участие в профессиональном сообществе (конференции, митапы)
- Открывает новые возможности для бизнеса
Примеры задач Principal: Техническая стратегия департамента, архитектура новых продуктов, формирование технической культуры, стратегическое партнерство.
Примечание: Позиции 19-20 — это обычно 1-2 человека в департаменте из 20-50 инженеров.
Специфичные технические области#
Работа с nanoCAD API#
| Уровень | Ожидания |
|---|---|
| INTERN (01-02) | Знакомство с API, чтение документации |
| JUNIOR (03-06) | Использование готовых API, простые операции чтения/записи |
| MIDDLE (07-10) | Уверенная работа с API, создание сложных объектов, понимание объектной модели |
| SENIOR (11-14) | Работа с C++ частью, оптимизация взаимодействия, понимание внутреннего устройства |
| STAFF/PRINCIPAL (15-20) | Архитектурное проектирование интеграции, экспертиза в nanoCAD ecosystem |
Знание инженерных сетей (nice-to-have)#
Знание предметной области приветствуется, но не является блокирующим требованием.
| Уровень | Приветствуется |
|---|---|
| INTERN | Базовое понимание назначения продукта |
| JUNIOR | Базовое понимание 1 раздела |
| MIDDLE | Хорошее знание 2-3 разделов |
| SENIOR | Экспертное знание 3+ разделов |
| STAFF/PRINCIPAL | Всесторонняя экспертиза |
Алгоритмы и производительность#
| Уровень | Ожидания |
|---|---|
| INTERN | Базовые алгоритмы (поиск, сортировка), O-нотация |
| JUNIOR | [Критичный] Базовые алгоритмы (поиск, сортировка, DFS/BFS), O-нотация, алгоритмы средней сложности |
| MIDDLE | Сложные алгоритмы (деревья, графы, DP), профайлинг, оптимизация узких мест |
| SENIOR | Высокопроизводительные алгоритмы, глубокая оптимизация (память, CPU, GC) |
| STAFF/PRINCIPAL | Архитектор высокопроизводительных систем, продвинутые техники (SIMD, lock-free) |
Многопоточность и асинхронность#
| Уровень | Ожидания |
|---|---|
| INTERN | Понимание концепций |
| JUNIOR | Основы (Thread, lock, thread safety), async/await |
| MIDDLE | Task, TPL, concurrency patterns, ConcurrentCollections |
| SENIOR | Lock-free алгоритмы, Interlocked, memory barriers |
| STAFF/PRINCIPAL | Архитектура многопоточных систем, стратегия concurrency |
Тестирование и качество#
| Уровень | Ожидания |
|---|---|
| INTERN | Понимание важности тестирования |
| JUNIOR | [Критичный с 03] Unit-тесты для своего кода, покрытие основных сценариев |
| MIDDLE | TDD, моки, интеграционные тесты, тестирование async кода |
| SENIOR | Архитектура тестирования, тестовые стратегии, тестируемый дизайн |
| STAFF/PRINCIPAL | Стратегия тестирования продукта, формирование культуры качества |
Паттерны поведения для ключевых переходов#
Переход JUNIOR → MIDDLE (позиция 06 → 07)#
Ключевой сдвиг: От “выполняю под руководством” к “работаю полностью самостоятельно”
| До (06) | После (07) |
|---|---|
| Реализует задачи по готовому дизайну | Самостоятельно проектирует решение |
| Спрашивает “как это сделать?” | Приходит с вариантами решений |
| Обращается за помощью при новых задачах | Обращается только в сложных случаях |
| Участвует в обсуждениях | Активно влияет на технические решения |
Gateway-критерии (без них повышение невозможно):
- ✅ Ведёт фичи от начала до конца с минимальным контролем
- ✅ Полный ownership за свои фичи (доводит до конца)
Переход MIDDLE → SENIOR (позиция 10 → 11)#
Ключевой сдвиг: От “хорошо делаю свою работу” к “влияю на команду и архитектуру”
| До (10) | После (11) |
|---|---|
| Проектирует решения для задач | Проектирует архитектуру модулей |
| Менторит Junior | Менторит Middle |
| Влияет на решения в команде | Формирует стандарты команды |
| Экспертиза в своей области | Ownership за целые подсистемы |
Gateway-критерии:
- ✅ Спроектировал архитектуру модуля или подсистемы
- ✅ Вырастил хотя бы одного Junior до самостоятельности
Переход SENIOR → STAFF (позиция 14 → 15)#
Ключевой сдвиг: От “лучший в команде” к “влияю на весь отдел”
| До (14) | После (15) |
|---|---|
| Архитектор на уровне продукта | Определяет технические направления |
| Влияет на свою команду | Влияет на весь отдел (10-20 человек) |
| К нему обращаются в команде | К нему обращаются Senior-ы из других команд |
| Решает сложные проблемы | Решает системные проблемы, требующие экспертизы в нескольких областях |
Gateway-критерии:
- ✅ Кросс-командное влияние (impact за пределами своей команды)
- ✅ Решает системные проблемы, требующие экспертизы в нескольких областях или кросс-командной координации
Переход STAFF → PRINCIPAL (позиция 18 → 19)#
Ключевой сдвиг: От “лучший в отделе” к “влияю на весь департамент”
| До (18) | После (19) |
|---|---|
| Техническая стратегия продукта | Техническая стратегия всех продуктов |
| Влияет на отдел | Влияет на департамент (20-50 человек) |
| К нему обращаются Senior-ы | К нему обращаются все, включая руководителей |
| Решает сложнейшие проблемы | Определяет технические направления департамента |
Gateway-критерии:
- ✅ Влияние на весь департамент
- ✅ Техническая стратегия продуктов
Использование матрицы#
Для оценки сотрудника:#
- Определите текущую позицию и уровень
- Оцените соответствие по 4 критериям
- Проверьте gateway-критерии для следующей позиции
- Все 4 критерия должны соответствовать
Для планирования развития:#
- Прочитайте требования следующей позиции
- Выявите пробелы в компетенциях
- Составьте план развития
- Отслеживайте прогресс каждые 3-6 месяцев
Типичные ошибки при оценке#
| Ошибка | Правильный подход |
|---|---|
| “Он закрыл 50 задач — точно Senior!” | Смотрим на сложность, качество, влияние на команду |
| Оценка по единичным случаям | Ищем паттерн на протяжении 3-6 месяцев |
| Игнорировать “невидимую” работу | Учитываем менторинг, code review, помощь коллегам |
| Сравнивать несравнимое | Учитываем сложность модулей, состояние кодовой базы |
Примечание: Эта матрица — руководство, а не жесткие правила. Учитывайте контекст и индивидуальные обстоятельства при оценке.