.NET BACKEND DEVELOPER ROADMAP
Learning Developer Basics
Make sure that you are aware of the very basics as listed below.
- Understand how the internet works.
- HTTP / HTTPS Protocols.
- API Concepts.
- HTTP Status Codes.
- Learn Object Oriented Programming Concepts. Improve your Problem-Solving Skills.
- Learn Basic Data Structures & Algorithms.
- Be Fluent in looking up solutions on the Internet.
- Become Comfortable with ChatGPT Prompts
- Learn GIT in depth.
- Explore GitHub with some practical usage.
Into the World of .NET
To get started with .NET, learn the following basics.
- You should learn about the .NET Ecosystem.
- Learn Basic C# Syntaxes and Language Features. C# 12 is the latest language version that shipped with .NET 8.
- Start with the ground basics, by building a simple .NET Console App. Learn about variables, if, else, while, and all the basic stuff.
- Become an expert in using .NET CLI commands.
- Master IDEs like Visual Studio or Code Editors like Visual Code.
- Understand NuGet Package Management.
- Focus only on .NET 6 or above. Ideally, .NET 8 is what you should be looking at.
Advanced C#
Now that you are familiar with the basics, let’s get going.
- Understand NuGet Package Management.
- Learn the Basics of Clean Code Practices.
- Understand various C# Project Templates.
- Use .NET CLI Practice Writing De-Coupled Code.
- Understand Interfaces, Dependency Injection, and Dependency Inversion.
Learn SOLID Principles
- Design Patterns are important. Be aware of at least a few.
- Engage in Peer Reviews / Open Source Contributions to get more feedback.
- Do Not Complicate Code, Keep it Simple, Silly (KISS).
- Read a lot of code! There are tons of open-source C# projects on GitHug.
- Write Unit Tests.
Database Fundamentals
A very crucial step in your learning path.
- Learn about Database design and related concepts.
- You need to know SQL Syntaxes.
- Add Stored Procedures too! (You might not use this regularly, but this is good to know).
- Understand Relational vs NoSQL Databases, and when to choose what.
- Learn about Database Optimizations.
- Work with RDMS like PostgreSQL, MSSQL, etc, and NoSQL Databases like MongoDB, AWS DynamoDB, Azure ComsosDB, etc.
ASP.NET Core — Powerhouse!
Focus on ASP.NET Core and Web Development! We would use this tech to build powerful APIs.
- Create a sample ASP.NET Core Web API and learn the basics. Understand the lifecycle of a request within an ASP.NET Core application.
- Learn about Controllers and Minimal APIs. Understand Middlewares.
- Routing.
- Filters and Attributes.
- Various API Architectures like REST API, GraphQL, and gRPC. REST API Conventions.
- Understand MVC Pattern.
- How to load Configurations and IOptions pattern. Service Lifecycles (Scoped, Transient & Singleton), and Dependency Injection.
- Authentication & Authorization (We will have a separate page for this)
- Extension Methods.
- Exception Handling with IExceptionHandler.
ORM: Object Relational Mapping
A technique to create a bridge between your C# classes and an actual database. In other words, a reliable way to integrate your .NET applications with a database.
- Entity Framework Core (Highly Recommended)
- Code First, Database First Approaches.
- Migrations & .NET EF CLI Commands.
- LINQ is your friend.
- Various Data Loading Strategies.
- DbContext, Query Filters, and Schemas.
- Interceptors in EF Core.
- Dapper, if you are looking for a more RAW way to execute your SQL Commands and Queries.
- MongoDB, AWS DDB, or other NoSQL database driver and integration.
Authentication & Authorization
A very crucial step in your learning path.
- Understand why you need Authentication and authorization.
- Spin up your own simple Auth system in ASP.NET Core WebAPI by allowing a user to send in an email/password, try to encrypt the password, and store it in a database.
- Learn ASP.NET Core Identity.
- Identity Endpoints in .NET 8.
- Users, Roles, and Permissions.
- Learn about Cookies.
- JSON Web Tokens (JWT).
- Identity Server.
- OpenID Authentication.
- OAuth 2.0 protocols and different auth flows.
- Learn about OAuth providers like KeyCloak, Auth0, AWS Cognito, or Azure AD. You will be probably using this in a future project.
- Claims and Permissions Management.
- Multi-tenancy with Finbuckle.
System & Solution Designs
Now that you have a basic understanding of building a .NET application, focus on learning system design concepts.
- Start building applications that are easy to maintain and readable.
- Develop good system design knowledge to break down systems into smaller pieces and solve problems.
- Learn about Monolith and Microservices, and understand when to use them.
- Event Driven Architecture.
- Practice Clean Architecture with separation of concerns
- Vertical Slice Architecture.
- Domain Driven Concepts — Domain Events, Value Objects, Rich vs Anemic Domain Modelling, Bounded Contexts.
Microservices!
To build truly decoupled systems, you need to know about Microservices.
- When to use Microservices.
- The Tradeoffs and Perks.
- Communication Between Services using Message Brokers & Buses like RabbitMQ, or Kafka.
- Masstransit.
- Event Sourcing and Eventual Consistency.
- Observability.
- Containerization and Orchestration.
- Secrets.
- API Gateways like YARP, Ocelot.
- Load Balancing.
And a lot more!
Testing
This is something we often tend to skip or put for later. But make sure that you write your test cases.
- Unit Testing.
- Integration Testing.
- xUnit / NUnit NuGet Packages.
- Fluent Assertions (Recommended).
- Bogus for dummy data generation.
- K6 for load testing.
- Test Driven Programming. Make your code testable and ensure you have good code coverage.
Caching
A crucial feature to improve your Web Application’s performance.
- Learn various concepts about caching.
- Cache Invalidation Techniques.
- Cache Expirations — Sliding Window, Absolute Expiration.
- In Memory / In Process Caching.
- Distributed Caching with Redis.
- Application Level Caching (Response Caching, EF Caching)
Logging
Enhance Your Application’s Observability and Bug Tracking.
- ILogger Interface from Microsoft
- Serilog: This popular logging package is often the only one you’ll ever need and is my go-to tool for every new C# project I work on!
- Learn about various Sinks.
- Structured Logging.
- Serilog SEQ Logging for Development purposes.
- Serilog Configurations and CoRelationId
- NLog: a good alternative.
- Learn about Kibana and the ELK stack too!
Background Tasks
Every application would require background tasks at some point in time.
- Native IHostedService and BackgroundService interface for simple task scheduling.
- CRON concepts.
- Hangfire.
- Quartz.
Good to Know Libraries.
- Use Refit for HTTP calls.Fluent Validation to validate incoming requests.
- ProblemDetails for organized Error Throws.
- Use Polly for the Retry Mechanism.
- SignalR for real-time communication.
- API Versioning.
- Scrutor for Automated Dependency Injection.
- Carter for better Minimal API routing.
- AutoMapper/Mapster/Mapperly for Object Mapping.
- Sonar Analyzers.
- OpenIddict.
- YARP Reverse Proxy.
- Learn CQRS Pattern with the MediatR library.
- Open API / Swashbuckle for API Documentation.
- Benchmark.NET for evaluating your application performance.
Containers & Orchestration
Very important for backend developers to make your deployments so much easier.
- Learn about the benefits of Docker and containerization.
- Learn Docker & Docker Compose. Dockerfile.
- Built-in containerization feature from .NET 7 and above (you no longer need a Dockerfile).
- Multi-Stage Docker Builds.
- Docker Hub & CLI commands.
- Docker Networking.
- Try to build a docker image of your .NET application, push it to an image repository like DockerHub, and Run the container locally or on Cloud Platforms like AWS or Digital Ocean.
- Understand Kubernetes and kubectl commands.
Observability
Building large systems requires you to have an efficient way to track your system state, logs, and metrics.
- Monitoring
- ELK Stack
- Serilog
- + SEQ
- Prometheus
- Graffana Dashboards
- Open Telemetry in .NET
- Cloud Logging Providers like Cloudwatch.
- Metrics Collection and Cloud Insights.
Cloud
Cloud is unavoidable in 2024 and beyond. Almost all B2B and B2C SaaS products are hosted on a Cloud Provider like AWS, Azure, or GCP.
At a senior level, it is mandatory to have a good grasp of cloud technologies.
- AWS has a better market share.
- Learn AWS Lambda, S3, EC2. ECS, Kinesis, IAM, SQS, SNS, DynamoDB, and other core services.
- Serverless Knowledge is crucial.
- Get yourself cloud certified.
- Have good experience in designing cloud-based systems and infrastructure.
- Once you are familiar with Manual deployments into the cloud, learn to automate it.
- Learn Automated Cloud Infrastructure Deployments or IAC Tools like Terraform, AWS CDK, or Pulumi.
- CI/CD (Continuous Integration/Continuous Deployment)
- It is a software development practice that involves automating the process of building, testing, and deploying code changes.
- GitHub Actions (Easy to get started, and it’s FREE).
- AWS Code Pipeline
- Azure Pipeline jackins
- Learn Scripting / Python for automation tasks.
- Learn to Create Deployment / Build Pipelines that run tests on the cloud and deploy them onto your infrastructure/containers ,virtual machines.
Improve your Soft Skills!
Improving soft skills is essential for developers, as it not only enhances collaboration and communication but also contributes to overall professional success.
- Work on expressing thoughts and ideas concisely and understandably.
- Spend time reading documentation.
- Develop a system to prioritize and manage tasks efficiently.
- Build an online presence and improve your network.
- Learn from the Top Content Creators in your space.
- Build a portfolio website for yourself. Start writing blogs, and make sure to document your progress. This might be helpful to someone.
- Build a Solid Resume.
- Stay open to new technologies, methodologies, and ways of working.
- Enhance your analytical skills to approach problems logically and systematically.
- Volunteer for leadership roles or lead small projects to build leadership skills.
- Keep up with industry trends and advancements to remain relevant and valuable.
LEARNING NEVER REALLY STOPS!
BONUS: You will learn only by building applications! Make sure that you implement concepts as soon as you learn them. Build your Solution Templates to ease your development time. Refer to the following projects on GitHub to learn code implementations with clean architecture.
Full Stack Hero — .NET 8 Web API Starter Kit (Search on Google)
eShopOnWeb & eShopOnContainers.
Joola Vasavi
Technical Lead, ConcertIDC