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

Current

Responsibility: Building API controllers in ASP.NET Core. Working with Entity Framework Core. Writing unit tests (xUnit/NUnit). Learning dependency injection.

Key skills:

Apache Kafka Need
ASP.NET Core Need
Elasticsearch / OpenSearch Need
GraphQL Design Need
MySQL / MariaDB Need
PostgreSQL Need
RabbitMQ Need
Redis Need
REST API Design Need
Algorithms & Complexity Need
Async Programming Need
Generics & Parametric Polymorphism Need
API Documentation Need
Database Indexing Need
Code Quality & Refactoring Need
Database Migrations Need
Multithreading Need
Query Optimization Need
Design Patterns Need
OOP & SOLID Principles Need
Data Modeling & Schema Design Need
API Versioning Strategies Need
Caching Strategies Need
Data Structures Need
Type Safety & Type Systems Need
Transactions & Concurrency Need

Middle

2-5 years

Next

Responsibility: Designing microservices on ASP.NET Core. Setting up middleware pipeline. CQRS with MediatR. Working with Azure Service Bus/RabbitMQ. Code review.

Key skills:

Apache Kafka Need
ASP.NET Core Need
Connection Pooling Need
CQRS Need
Elasticsearch / OpenSearch Need
GraphQL Design Need
gRPC & Protocol Buffers Need
MySQL / MariaDB Need
PostgreSQL Need
RabbitMQ Need
Rate Limiting & Throttling Need
Redis Need
REST API Design Need
Terraform Need
Algorithms & Complexity Need
Async Programming Need
Generics & Parametric Polymorphism Need
API Documentation Need
Database Indexing Need
Code Quality & Refactoring Need
Database Migrations Need
Multithreading Need
Query Optimization Need
Message Broker Patterns Need
Design Patterns Need
OOP & SOLID Principles Need
Data Modeling & Schema Design Need
API Versioning Strategies Need
Caching Strategies Need
Data Structures Need
Type Safety & Type Systems Need
Transactions & Concurrency Need
Database Sharding Need

Senior

5-8 years

Responsibility: .NET application architecture (Clean Architecture, Vertical Slices). Performance optimization (BenchmarkDotNet). Minimal API. gRPC services. .NET Aspire.

Key skills:

Apache Kafka Need
ASP.NET Core Need
Clean Architecture Need
Code Review Need
Connection Pooling Need
CQRS Need
DDD Tactical Patterns Need
Docker Need
Elasticsearch / OpenSearch Need
Git Advanced Need
GitHub Actions / GitLab CI Need
GitHub Copilot Need
GraphQL Design Need
gRPC & Protocol Buffers Need
JWT / OAuth2 / OIDC Need
Kubernetes Core Need
Microsoft Azure Need
MySQL / MariaDB Need
OpenTelemetry Need
OWASP & Application Security Need
PostgreSQL Need
Prometheus & Grafana Need
RabbitMQ Need
Rate Limiting & Throttling Need
Redis Need
REST API Design Need
TDD & BDD Need
Terraform Need
TestContainers Need
Unit Testing Need
Algorithms & Complexity Need
Async Programming Need
Microservices Decomposition Need
Generics & Parametric Polymorphism Need
API Documentation Need
Database Indexing Need
Integration Testing Need
Code Quality & Refactoring Need
Database Migrations Need
Multithreading Need
Query Optimization Need
System Design Fundamentals Need
Message Broker Patterns Need
Design Patterns Need
Secure Coding Practices Need
OOP & SOLID Principles Need
Data Modeling & Schema Design Need
API Versioning Strategies Need
Caching Strategies Need
Structured Logging Need
Data Structures Need
Type Safety & Type Systems Need
Transactions & Concurrency Need
Database Sharding Need

Lead / Staff

7-12 years

Responsibility: System architecture on .NET. Migration strategy to .NET 8/9. Standards for C# development. Orleans/Dapr for distributed systems.

Key skills:

Apache Kafka Need
ASP.NET Core Need
Clean Architecture Need
Code Review Need
Connection Pooling Need
CQRS Need
DDD Tactical Patterns Need
Docker Need
Elasticsearch / OpenSearch Need
Git Advanced Need
GitHub Actions / GitLab CI Need
GitHub Copilot Need
GraphQL Design Need
gRPC & Protocol Buffers Need
JWT / OAuth2 / OIDC Need
Kubernetes Core Need
Microsoft Azure Need
MySQL / MariaDB Need
OpenTelemetry Need
OWASP & Application Security Need
PostgreSQL Need
Prometheus & Grafana Need
RabbitMQ Need
Rate Limiting & Throttling Need
Redis Need
REST API Design Need
TDD & BDD Need
Terraform Need
TestContainers Need
Unit Testing Need
Algorithms & Complexity Need
Async Programming Need
Microservices Decomposition Need
Generics & Parametric Polymorphism Need
API Documentation Need
Database Indexing Need
Integration Testing Need
Code Quality & Refactoring Need
Database Migrations Need
Multithreading Need
Query Optimization Need
System Design Fundamentals Need
Message Broker Patterns Need
Design Patterns Need
Secure Coding Practices Need
OOP & SOLID Principles Need
Data Modeling & Schema Design Need
API Versioning Strategies Need
Caching Strategies Need
Structured Logging Need
Data Structures Need
Type Safety & Type Systems Need
Transactions & Concurrency Need
Database Sharding Need

Principal

10+ years

Responsibility: .NET platform strategy. Choosing between .NET and alternatives. Enterprise architecture. Microsoft stack optimization.

Key skills:

Apache Kafka Need
ASP.NET Core Need
Clean Architecture Need
Code Review Need
Docker Need
Elasticsearch / OpenSearch Need
Git Advanced Need
GitHub Actions / GitLab CI Need
GitHub Copilot Need
GraphQL Design Need
JWT / OAuth2 / OIDC Need
Kubernetes Core Need
Microsoft Azure Need
MySQL / MariaDB Need
OpenTelemetry Need
OWASP & Application Security Need
PostgreSQL Need
Prometheus & Grafana Need
RabbitMQ Need
Redis Need
REST API Design Need
TDD & BDD Need
TestContainers Need
Unit Testing Need
Algorithms & Complexity Need
Async Programming Need
Generics & Parametric Polymorphism Need
API Documentation Need
Database Indexing Need
Integration Testing Need
Code Quality & Refactoring Need
Database Migrations Need
Multithreading Need
Query Optimization Need
System Design Fundamentals Need
Design Patterns Need
Secure Coding Practices Need
OOP & SOLID Principles Need
Data Modeling & Schema Design Need
API Versioning Strategies Need
Caching Strategies Need
Structured Logging Need
Data Structures Need
Type Safety & Type Systems Need
Transactions & Concurrency Need

Gap analysis: skills to develop

To reach the next level you'll need to develop:

Apache Kafka

Implements Kafka integration for .NET microservices: event-driven communication patterns, Avro schema registry integration, and exactly-once semantics with transactions. Configures consumer groups for parallel processing with proper offset management. Implements dead letter queues and retry policies for fault-tolerant message processing.

ASP.NET Core

Independently implements tasks with ASP.NET Core. Understands internals and optimizes performance. Writes tests.

Connection Pooling

Optimizes connection pooling in .NET: configures Npgsql connection pool for PostgreSQL, implements connection string building via NpgsqlConnectionStringBuilder, monitors pool via NpgsqlConnection.GlobalStatistics. Configures EF Core pooling via AddDbContextPool.

CQRS

Implements CQRS in .NET projects: uses MediatR with FluentValidation for command validation, creates separate Dapper-based read repositories from EF Core write repositories, configures pipeline behaviors for cross-cutting concerns. Applies Clean Architecture with CQRS.

Elasticsearch / OpenSearch

Independently implements Elasticsearch integration in .NET with NEST/Elastic.Clients.Elasticsearch. Designs index mappings, builds complex queries with bool/nested filters, and implements bulk indexing pipelines for searchable content.

GraphQL Design

Designs GraphQL API: custom scalars, DataLoader for N+1, pagination via Relay. Configures filtering/sorting via Hot Chocolate conventions. Handles errors through error filter middleware.

gRPC & Protocol Buffers

Develops gRPC services on ASP.NET Core: implements all RPC types including bidirectional streaming via IAsyncStreamReader/IAsyncStreamWriter, configures Interceptor for logging and auth, integrates with DI container. Uses Grpc.Net.ClientFactory for typed gRPC clients.

MySQL / MariaDB

Independently designs schemas and optimizes queries with MySQL / MariaDB. Understands indexing and query execution plans. Uses Entity Framework Core effectively.

PostgreSQL

Independently designs schemas and optimizes queries with PostgreSQL. Understands indexing and query execution plans. Uses Entity Framework Core effectively.

RabbitMQ

Independently implements RabbitMQ messaging with MassTransit in .NET: sagas, consumers, retry policies. Configures dead-letter exchanges and priority queues. Writes integration tests with TestHarness for message-driven workflows.

Rate Limiting & Throttling

Implements rate limiting in .NET services: uses System.Threading.RateLimiting with Redis partitioned limiter for distributed scenarios, configures Polly rate limiting policy, implements custom RateLimiterPolicy for complex business rules. Integrates with ASP.NET Core output caching.

Redis

Designs caching in .NET: IMemoryCache (L1) + IDistributedCache/Redis (L2), cache-aside pattern. Implements cache stampede protection via SemaphoreSlim. Configures Redis Sentinel for HA. Monitors hit ratio.

REST API Design

Designs RESTful API: versioning via Asp.Versioning, content negotiation, pagination via cursor/offset. Documents via Swashbuckle/NSwag. Handles errors through ProblemDetails (RFC 7807). Implements HATEOAS.

Terraform

Writes Terraform configurations for .NET service infrastructure: Azure App Services, SQL databases, Service Bus, Key Vault. Uses modules for environment replication (dev/staging/prod). Works with remote state (Azure Storage backend). Uses workspaces for multi-environment management. Imports existing Azure resources into Terraform.

Algorithms & Complexity

Independently applies algorithmic thinking in C#: selects efficient LINQ operations for data processing, understands parallel algorithm patterns with TPL, evaluates collection algorithm trade-offs. Analyzes computational complexity of hot code paths in .NET services.

Async Programming

Independently applies async programming in C#/.NET: proper async/await with ConfigureAwait, ValueTask for hot paths, IAsyncEnumerable for streaming data. Understands trade-offs between Task and ValueTask, async state machine overhead.

Generics & Parametric Polymorphism

Designs advanced C# generic abstractions: applies covariance/contravariance on interfaces (IEnumerable<out T>, IComparer<in T>), implements generic repository and specification patterns. Uses constraints combinations (where T : class, IComparable<T>, new()) for precise API contracts. Understands generic type caching (typeof(T)), reflection over generic types, and builds fluent generic builders with method chaining.

API Documentation

Designs API documentation: OpenAPI spec generation via Swashbuckle, XML docs, Swagger examples. Automates freshness checks. Documents auth flows and error codes.

Database Indexing

Independently designs schemas and optimizes queries with database indexing. Understands indexing and query execution plans. Uses Entity Framework Core effectively.

Code Quality & Refactoring

Independently applies code quality practices in C#/.NET development. Writes clean code using modern C# features with proper LINQ usage and async patterns. Understands trade-offs between abstraction layers and performance in .NET applications. Reviews code for proper disposal patterns, null safety, and architectural boundary adherence.

Database Migrations

Independently designs schemas and optimizes queries with database migrations. Understands indexing and query execution plans. Uses Entity Framework Core effectively.

Multithreading

Independently applies multithreading in C#/.NET: Task Parallel Library for complex async workflows, Channels and pipelines for producer-consumer patterns, ConcurrentBag/Queue for thread-safe collections, understanding of SynchronizationContext and ConfigureAwait. Solves typical concurrency tasks independently.

Query Optimization

Independently designs schemas and optimizes queries. Understands indexing and query execution plans. Uses Entity Framework Core effectively.

Message Broker Patterns

Works with messaging in .NET: configures MassTransit with consumer/saga, uses NServiceBus for enterprise messaging, applies Azure Service Bus with sessions for ordered processing. Implements retry policies via Polly and configures dead letter handling.

Design Patterns

Independently applies design patterns in C#/.NET: mediator with MediatR for CQRS, decorator for cross-cutting concerns, repository and unit of work for data access, specification pattern for query building. Understands trade-offs between patterns and YAGNI in .NET applications.

OOP & SOLID Principles

Independently applies OOP/SOLID in C#/.NET: proper interface contracts for services, abstract base classes for shared behavior, dependency injection via built-in DI container. Understands trade-offs between inheritance and interface-based polymorphism in .NET architecture patterns.

Data Modeling & Schema Design

Independently designs schemas and optimizes queries for data modeling. Understands indexing and query execution plans. Uses Entity Framework Core effectively.

API Versioning Strategies

Implements versioning: multiple API versions simultaneously via ApiVersion, deprecation via Sunset header. Automates compatibility checks. Plans migration path.

Caching Strategies

Independently implements caching strategies in .NET: distributed caching with StackExchange.Redis, output caching, response caching middleware. Understands cache stampede prevention, write-through vs write-behind patterns, and cache warming.

Data Structures

Independently selects appropriate data structures in C#: Dictionary vs SortedDictionary for different access patterns, List vs LinkedList for collection operations, ConcurrentBag for thread-safe scenarios. Understands trade-offs between value types and reference types for memory allocation.

Type Safety & Type Systems

Independently applies C# type system features — nullable reference type analysis, generic variance in interfaces, and source generators for type-safe boilerplate. Understands trade-offs between record types and classes for domain modeling. Applies type-safe patterns with System.Text.Json and strongly-typed options in code reviews.

Transactions & Concurrency

Independently designs schemas and optimizes queries with transactions and concurrency. Understands indexing and query execution plans. Uses Entity Framework Core effectively.

Database Sharding

Works with sharded databases in .NET: uses Elastic Database Client Library for Azure SQL sharding, implements tenant-based routing via IDbContextFactory, configures EF Core with dynamic connection strings. Applies Unit of Work pattern for shard-aware transactions.