Уверенно применяет algorithms complexity для compiler engineer при решении нестандартных задач. Самостоятельно выбирает оптимальный подход и инструменты. Анализирует trade-offs и предлагает улучшения существующих решений.
Роли · Compiler Engineer · Middle
Что должен уметь Middle }
12 ключевых навыков, всего 55. Ожидания по каждому навыку и что меняется на следующем уровне.
На этой странице — что ожидается от Middle }, навык за навыком. Ключевые навыки оценивают руководитель и коллеги в цикле ревью; остальные учитываются только в самооценке. Основные области: Основы программирования, Контроль версий и коллаборация, Компиляторы и языки.
Ключевые навыки для Middle
Сгруппированы по областям. Метка справа — ожидаемая глубина: Осведомлённость, Применение, Продвинутый или Эксперт.
Основы программирования · 3
Уверенно применяет code quality для compiler engineer при решении нестандартных задач. Самостоятельно выбирает оптимальный подход и инструменты. Анализирует trade-offs и предлагает улучшения существующих решений.
Уверенно применяет data structures для compiler engineer при решении нестандартных задач. Самостоятельно выбирает оптимальный подход и инструменты. Анализирует trade-offs и предлагает улучшения существующих решений.
Контроль версий и коллаборация · 1
Уверенно применяет code review skill для compiler engineer при решении нестандартных задач. Самостоятельно выбирает оптимальный подход и инструменты. Анализирует trade-offs и предлагает улучшения существующих решений.
Компиляторы и языки · 8
Реализует сложные трансформации AST: constant folding, dead code elimination, inlining. Использует babel/typescript compiler API для трансформации кода. Пишет плагины для ESLint и TSC.
Реализует кодогенерацию для стекового или register-based bytecode. Использует LLVM или QBE для native кодогенерации. Генерирует оптимизированный код для паттернов вызовов функций.
Реализует optimization passes: function inlining, loop unrolling, vectorization hints. Использует dominators, loop analysis и alias analysis. Измеряет влияние passes на размер кода и производительность.
Реализует bytecode compiler + VM интерпретатор для простого языка. Понимает dispatch techniques: switch dispatch, threaded code. Оптимизирует основной interpreter loop.
Реализует baseline JIT компилятор для простого bytecode формата. Понимает tracing JIT vs method JIT архитектуры. Реализует базовые inline caches для динамических вызовов методов.
Реализует LL(k) и LR парсеры, строит AST для языков программирования. Использует генераторы парсеров (ANTLR, yacc/bison). Обрабатывает синтаксические ошибки с error recovery стратегиями.
Пишет LLVM Analysis и Transform passes на C++ API. Генерирует LLVM IR программно для простых конструкций. Использует opt и llvm-dis для анализа и отладки pipeline.
Реализует bidirectional type checking для языков с type annotations. Понимает constraint-based type inference. Пишет type checker для языка с generics и simple subtyping.
Дополнительные навыки
Команда их не оценивает, но они входят в самооценку и план развития.
Что меняется на Senior
55 навыков получают более высокое ожидание или становятся ключевыми при переходе с Middle на Senior. Сначала самые большие скачки.
- Алгоритмы и сложность: Применение → Продвинутый
- Качество кода и рефакторинг: Применение → Продвинутый
- Структуры данных: Применение → Продвинутый
- AST и IR Manipulation: Применение → Продвинутый
- Code Generation: Применение → Продвинутый
- Code Review: Применение → Продвинутый
- Compiler Optimization Passes: Применение → Продвинутый
- Interpreter Design: Применение → Продвинутый
- JIT Compilation: Применение → Продвинутый
- Lexing и Parsing: Применение → Продвинутый
} в открытой матрице компетенций: 55 навыков на 5 уровнях. Матрица бесплатна для специалистов и останется бесплатной.