0% found this document useful (0 votes)
157 views

Road Map

This document provides a roadmap for learning .NET backend development skills, broken into sections covering various topics from fundamentals to advanced concepts. It recommends learning core programming concepts, the .NET ecosystem, C#, databases, ASP.NET Core, ORM, authentication, system design, testing, caching, logging, background tasks, and useful libraries. Later sections discuss containers/orchestration, observability, cloud platforms, and modern frontend skills. The roadmap aims to guide developers from basic to advanced skills for building powerful .NET backend applications.

Uploaded by

Israa Ezzat
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
157 views

Road Map

This document provides a roadmap for learning .NET backend development skills, broken into sections covering various topics from fundamentals to advanced concepts. It recommends learning core programming concepts, the .NET ecosystem, C#, databases, ASP.NET Core, ORM, authentication, system design, testing, caching, logging, background tasks, and useful libraries. Later sections discuss containers/orchestration, observability, cloud platforms, and modern frontend skills. The roadmap aims to guide developers from basic to advanced skills for building powerful .NET backend applications.

Uploaded by

Israa Ezzat
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 27

codewithmukesh

level up your career 🚀


.NET
BACKEND
DEVELOPER
ROADMAP
2024 EDITION

mukesh murugan
@iammukeshm
codewithmukesh

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.

mukesh murugan for beginners only


@iammukeshm
codewithmukesh

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.

mukesh murugan for beginners only


@iammukeshm
codewithmukesh

Advanced C#
Now that you are familiar with the basics, let's get going.

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 GitHub!
Write Unit Tests!

mukesh murugan
@iammukeshm
codewithmukesh

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. I prefer PostgreSQL and AWS DynamoDB.

mukesh murugan
@iammukeshm
codewithmukesh

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.

mukesh murugan
@iammukeshm
codewithmukesh

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.

mukesh murugan
@iammukeshm
codewithmukesh

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.
Multitenancy with Finbuckle.

mukesh murugan
@iammukeshm
codewithmukesh

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.

mukesh murugan
@iammukeshm
codewithmukesh

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!

mukesh murugan
@iammukeshm
codewithmukesh

TIP!
Never start with Microservices! In most of the cases, a well-
designed Monolith is what you would need.

mukesh murugan
@iammukeshm
codewithmukesh

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.

mukesh murugan
@iammukeshm
codewithmukesh

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)

mukesh murugan
@iammukeshm
codewithmukesh

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!

mukesh murugan
@iammukeshm
codewithmukesh

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.

mukesh murugan
@iammukeshm
codewithmukesh

Good to Know Libraries.


Use Refit for HTTP calls.
FluentValidation 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.

mukesh murugan
@iammukeshm
codewithmukesh

Beyond C#
It takes more than just a single technology to excel as a developer
in 2024 and beyond!

mukesh murugan
@iammukeshm
codewithmukesh

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.
Have an understanding of Kubernetes and kubectl commands.

mukesh murugan
@iammukeshm
codewithmukesh

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.

mukesh murugan
@iammukeshm
codewithmukesh

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.

mukesh murugan
@iammukeshm
codewithmukesh

CI/CD
CI/CD (Continuous Integration/Continuous Deployment) 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
Jenkins
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.

mukesh murugan
@iammukeshm
codewithmukesh

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.

mukesh murugan
@iammukeshm
codewithmukesh

Congrats!
You are just one interview away!

mukesh murugan
@iammukeshm
codewithmukesh

LEARNING NEVER
REALLY STOPS!
Keep adding more to your roadmaps and
stay up to date

mukesh murugan
@iammukeshm
codewithmukesh

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.

mukesh murugan
@iammukeshm
codewithmukesh

Subscribe to my .NET Newsletter!


I will be starting a .NET 8 Zero to Hero Series soon via my
Newsletter, for FREE.

Join the waitlist by Subscribing.

Link in the Description!

mukesh murugan
@iammukeshm
codewithmukesh

WAS THIS
HELPFUL?
Share with a friend who needs it!

mukesh murugan
@iammukeshm

Follow me for more!

You might also like