Понимает базовые алгоритмические концепции в C#: простые LINQ-операции, базовая сортировка и поиск в коллекциях, алгоритмы на основе циклов для обработки данных. Следует руководству команды по выбору алгоритмов и применяет стандартные операции коллекций .NET.
Роли · Backend Developer (C#/.NET) · Junior
Что должен уметь Junior }
26 ключевых навыков, всего 70. Ожидания по каждому навыку и что меняется на следующем уровне.
На этой странице — что ожидается от Junior }, навык за навыком. Ключевые навыки оценивают руководитель и коллеги в цикле ревью; остальные учитываются только в самооценке. Основные области: Основы программирования, Backend Development, Базы данных.
Ключевые навыки для Junior
Сгруппированы по областям. Метка справа — ожидаемая глубина: Осведомлённость, Применение, Продвинутый или Эксперт.
Основы программирования · 9
Понимает основы асинхронного программирования в C#: синтаксис async/await, паттерны на основе Task, базовое использование CancellationToken. Следует командным конвенциям сигнатур async-методов и избегает распространённых ошибок как async void и дедлоки.
Понимает синтаксис дженериков C#: объявляет generic-классы, методы и интерфейсы с type-параметрами (List<T>, Dictionary<TKey,TValue>). Применяет базовые constraints (where T : class, where T : struct, where T : new()). Корректно использует встроенные generic-коллекции и избегает boxing, выбирая generic API вместо non-generic.
Понимает базовые принципы качества кода для C#/.NET-разработки. Следует командным стандартам кодирования и рекомендациям анализаторов Roslyn. Пишет простые, чистые методы по конвенциям именования C#. Принимает обратную связь на код-ревью и учится у устоявшихся паттернов проектирования.
Понимает основы многопоточности в C#/.NET: основы Task и async/await, базовое понимание потокобезопасности и ключевого слова lock, ConcurrentDictionary и потокобезопасные коллекции. Следует командным конвенциям async-паттернов в ASP.NET Core.
Понимает базовые паттерны проектирования в C#/.NET: Singleton, Factory, паттерн Repository в ASP.NET Core, основы внедрения зависимостей со встроенным DI-контейнером. Следует командным конвенциям использования паттернов в архитектуре .NET-решений.
Понимает базовые концепции ООП в C#: классы, интерфейсы, наследование, инкапсуляция. Применяет простые принципы SOLID, следуя конвенциям .NET-проекта. Следует командным паттернам дизайна классов сервисов/репозиториев и настройки внедрения зависимостей.
Понимает базовые типы коллекций .NET: List, Dictionary, HashSet для типичных операций. Следует командным конвенциям для классов моделей данных и структур сущностей. Применяет простые структуры данных для CRUD-операций и обработки запросов/ответов API.
Понимает основы системы типов C# — типы значений vs ссылочные типы, nullable reference types и ограничения дженериков. Следует принятым в команде соглашениям по аннотациям типов, абстракциям на основе интерфейсов и паттернам строго типизированной конфигурации.
Backend Development · 6
Использует кэширование в .NET на базовом уровне: IMemoryCache, IDistributedCache с Redis. Следует командным паттернам для реализации cache-aside и настройки TTL. Понимает базовые концепции инвалидации кэша и конвенции именования ключей.
Понимает основы Kafka для .NET-сервисов: настройка клиента Confluent.Kafka, базовые паттерны producer/consumer и концепции topic/partition. Следует командным практикам сериализации сообщений и конфигурации consumer groups в C#-приложениях.
Использует ASP.NET Core на базовом уровне. Выполняет простые задачи по готовым шаблонам. Понимает базовые концепции и следует принятым в команде практикам.
Использует Elasticsearch / OpenSearch на базовом уровне. Выполняет простые задачи по готовым шаблонам. Понимает базовые концепции и следует принятым в команде практикам.
Использует RabbitMQ с MassTransit/EasyNetQ в .NET-приложениях на базовом уровне. Публикует и потребляет простые сообщения по установленным паттернам. Понимает типы exchange, очереди и базовые концепции маршрутизации.
Использует Redis через StackExchange.Redis/IDistributedCache. Кеширует часто запрашиваемые данные с TTL. Понимает базовые структуры: strings, hashes, sets. Настраивает подключение через appsettings.json.
Базы данных · 7
Создаёт индексы через EF Core Fluent API и миграции. Понимает B-tree и hash индексы. Использует EXPLAIN для проверки. Знает о влиянии индексов на INSERT/UPDATE.
Пишет миграции через EF Core: Add-Migration, Update-Database. Создаёт таблицы, колонки, индексы. Понимает идемпотентность миграций. Тестирует на dev-среде перед production.
Понимает N+1 проблему в EF Core и решает через Include/ThenInclude. Использует AsNoTracking для read-only запросов. Анализирует сгенерированный SQL через logging.
Проектирует схемы через EF Core: Entity classes, связи Navigation Properties, owned types для value objects. Понимает нормализацию. Использует Fluent API для конфигурации.
Понимает ACID и уровни изоляции. Использует DbContext SaveChanges как unit of work. Обрабатывает concurrency через RowVersion/Timestamp. Знает разницу между optimistic и pessimistic locking.
Пишет SQL-запросы для CRUD через Entity Framework Core / Dapper. Создаёт таблицы, индексы, foreign keys. Понимает нормализацию до 3NF. Использует MySQL Workbench для анализа.
Работает с PostgreSQL через EF Core (Npgsql): маппинг сущностей, LINQ-запросы, raw SQL через FromSqlRaw. Понимает типы PostgreSQL: UUID, JSONB, arrays. Использует pgAdmin.
API и интеграции · 4
Документирует API через XML-комментарии и Swagger аннотации: summary, remarks, response types. Поддерживает Swagger UI. Описывает параметры и примеры.
Понимает версионирование API. Использует Asp.Versioning: URL segment, query string, header-based. Поддерживает backward compatibility. Знает семантическое версионирование.
Создаёт GraphQL-схемы через Hot Chocolate: типы, queries, mutations. Реализует resolvers. Понимает разницу с REST. Тестирует через Banana Cake Pop.
Создаёт REST endpoints через ASP.NET Core Minimal API или Controllers: MapGet/MapPost, [HttpGet]/[HttpPost], model binding. Возвращает правильные HTTP-статусы через Results/IActionResult. Валидирует через FluentValidation.
Дополнительные навыки
Команда их не оценивает, но они входят в самооценку и план развития.
Что меняется на Middle
72 навыков получают более высокое ожидание или становятся ключевыми при переходе с Junior на Middle. Сначала самые большие скачки.
- Паттерны Message Brokers: Осведомлённость → Применение · становится ключевым
- Шардирование БД: Осведомлённость → Применение · становится ключевым
- Connection Pooling: Осведомлённость → Применение · становится ключевым
- CQRS: Осведомлённость → Применение · становится ключевым
- gRPC и Protocol Buffers: Осведомлённость → Применение · становится ключевым
- Rate Limiting и Throttling: Осведомлённость → Применение · становится ключевым
- Terraform: Осведомлённость → Применение · становится ключевым
- Алгоритмы и сложность: Осведомлённость → Применение
- Асинхронное программирование: Осведомлённость → Применение
- Дженерики и параметрический полиморфизм: Осведомлённость → Применение
} в открытой матрице компетенций: 70 навыков на 5 уровнях. Матрица бесплатна для специалистов и останется бесплатной.