How to Become Dotnet Full Stack Web Developer Guide
How to Become Dotnet Full Stack Web Developer Guide
NET
How to become
.NET full stack
web developer
in 2023
Hi
there!
WELCOME TO YOUR GUIDE TO BECOMING
.NET FULL STACK WEB DEVELOPER IN 2023
I’m Dawid and I'm so excited you decided to get on that train and
become an independent, full stack developer, leveraging the .NET
skills you already have. That’s exactly what I went through.
Each step of this guide ends with a list of resources I recommend you
to follow, step-by-step. Next, there are questions you should be able
to answer. You can also treat them as the most popular interview
questions that you might be asked when applying for a .NET full stack
web developer position.
As soon as you know the basics, try to debug some websites online using your
browser's built-in developer tools. See how network requests flow from the
website to the server. See from where the website's resources are fetched.
Learn from:
1 MDN HTTP documentation
https://developer.mozilla.org/en-US/docs/Web/HTTP
Explore the folders and files in the project. Next, run the application. You will see
a Swagger page. Swagger is a kind of API explorer. You can use it to play with the
exposed API.
Now, use the HTTP and network requests' debugging knowledge you already have
to examine how the request are sent to your API.
Learn from:
1 Tutorial: Create a web API with ASP.NET Core
https://learn.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?
view=aspnetcore-7.0&tabs=visual-studio
I suggest you get familiar with this editor from the very beginning of your full stack
developer’s journey. Long story short, it doesn’t make sense to use a C# IDE (like
VS or Rider) for frontend development. Having your frontend code in a separate
editor allows you to mentally separate concerns when working on a project.
🙂
Just take my word for it. Even better - simply try it
For C# development, stay with your favorite IDE (e.g. Visual Studio or Rider).
While .NET development is easily possible in VS Code, in my opinion the
fully-featured IDEs are more convenient. Plus, we stick to the separation of
concerns mentioned before.
Learn from:
1 Visual Studio Code home website
https://code.visualstudio.com
HTML and CSS are not going anywhere. When using a web development
framework like React or Angular, the end visual effect is always HTML styled with
CSS (and made interactive with JavaScript, but we'll come to this later). Frontend
frameworks are just made for developers to make our lives easier.
You don't need to be an HTML or CSS expert at this stage. Learn the basics: what
are the HTML tags, what are the attributes, IDs and classes. How to connect
these HTML elements to CSS styles?
Next, read about the most popular CSS frameworks like Bootstrap and Tailwind.
Learn from:
1 HTML tutorial - W3 Schools
https://www.w3schools.com/html
This is however not entirely true. Soon, you will see why. For now, I can only tell
you that in order to be a good TypeScript developer, you need to know
JavaScript.
At this stage of your full stack journey, forget about TypeScript. Focus on
JavaScript.
Learn the basics of the language. Direct your attention to the differences
between C# and JS. Add interactivity to the HTML pages by embedding some
JavaScript there.
Learn from:
1 The Complete JavaScript Course - Udemy
https://www.udemy.com/course/the-complete-javascript-course
Free alternative: MDN JavaScript guide
2 10 Most Shocking JavaScript Features for C# Developers - CodeJourney
https://www.codejourney.net/10-most-shocking-javascript-features-for-csharp-
developers
That's also why it's very important to know JavaScript first. Programming in
TypeScript is basically writing JavaScript with types annotations.
As soon as you learn TypeScript, I suggest you to always use it. Never go with
pure JavaScript anymore. I think you'll see the obvious benefits yourself.
Learn from:
1 The TypeScript Handbook
https://www.typescriptlang.org/docs/handbook/intro.html
Git is very popular amongst full stack developers. Almost everyone hosts their
code in GitHub nowadays.
If you apply for a full stack position, you will most probably cooperate in a git
repository. Make sure that you feel comfortable with git, so it doesn't block your
cooperation with fellow developers.
Learn from:
1 Git - introductory videos
https://git-scm.com/videos
3 Git Book
https://git-scm.com/book/en/v2
Maybe you have something in your everyday life (or work) that frustrates you, and
you would love to have it solved or automated? Like an Excel sheet you fill
manually, but would love to have an app for it? This could be your project idea.
The advantage here is that it will solve your actual problem, so you will be auto-
motivated to work on it.
However, if nothing comes to your mind, don't worry. Simply take something that
already exists and copy it. Don't spend too much time thinking about the idea
or a design for the app. Literally copy something that already exists. In the
resources below, I'm linking a few resources that could be your inspirations.
Remember: you can even build a simple application that lists some dummy stuff,
allows seeing its details etc. Nothing fancy. Just pick up your idea and get going.
Learn from:
1 App ideas collection
https://github.com/florinpop17/app-ideas
You have probably heard about Blazor, which seems like a nice solution for C#
developers who want to start doing web frontend development. However, I'll
straightaway encourage you to not go this way. Blazor is nice, and I even know
people who built robust production apps with it, but it's still quite immature as for
web development. To me, Blazor is a kind of "workaround" for doing web
development. I think it's a great solution for someone who really doesn't want to
dive more deeply into JavaScript, which is a basis of today's web applications.
But you have already done that, right? 🙂
I will be straight now: I suggest you to go with React, which is still the most widely
used web development framework. There are new players in the game, like Svelte
and Solid, but React has strong foundations and a lot of learning materials online.
What's more, you will find a lot of helpful materials for React on my blog🙂
As a final thought, remember that framework is only a tool. Once you grasp the
general concepts like component and state, you will be fine switching frameworks
to your liking.
Learn from:
1 Top 10 best frontend frameworks in 2023
https://www.imaginarycloud.com/blog/best-frontend-frameworks
If there's anything you have ever heard about web development, but don't really
know what that is, it's time to find out. Don't let frontend development make you
feel overwhelmed from the very beginning.
In the Questions section below, I'm trying to point out the most mysterious things
that were completely new to me when I started with web development. Avoid
staying in the dark like I was and discover them right now, before you immerse
🙂
yourself in coding
Learn from:
1 Webpack concepts
https://webpack.js.org/concepts
4 Google, YouTube
Simply Google or search on YouTube for any terms you still don't know 🙂
You should know:
what is npm? how is it different from yarn?
what’s the difference between npm and Nuget?
what are package.json and package-lock.json files?
what happens when you execute npm install?
can you delete node_modules folder?
should node_modules folder be checked in to source control?
what is webpack?
why is webpack's configuration so complex?
list 3 alternatives to webpack
what is a JavaScript bundle?
11. Build your frontend app using
built-in state management features
Here we are - you're ready to start creating your first frontend application🎉
For this moment, forget about the backend. Forget about the data, authorization
and authentication. Our goal is to get you writing frontend code as soon as
possible.
For the app, you will need some data to work with. You can use a service like
https://dummyjson.com or store your sample data in JSON files in the project.
As this stage, I recommend you to build a simple app composed of a list of items
(grid/table) and a possibility to view and modify an individual item's details (edit
form).
It's very important that you build your first frontend application using as many blocks
built-in the framework as possible. Try not to resort to external libraries, especially
when it comes to state management.
If you chose React, build your app with useState and useEffect hooks for managing
the state of your app's components. React docs should be more than enough here.
Learn from:
1 State: A Component's Memory - React Docs
https://react.dev/learn/state-a-components-memory
As soon as your app gets bigger and packed with more features, you will
encounter issues with state management. Your data will get much more complex.
Most probably there will also be some logic associated with data manipulation,
which doesn't really fit in the components themselves.
The solution is a state management library. It's sometimes even more of a state
management philosophy than only a new npm package you will need to
understand.
Assuming you went with React, rebuild your app to use a state management library.
I recommend you to get familiar with Redux, which is often asked about at job
interviews, but then switch to MobX. The latter is much simpler and I recommend
you to develop your first apps with MobX.
Learn from:
1 Redux Tutorial - Beginner to Advanced - FreeCodeCamp
https://www.youtube.com/watch?v=zrs7u6bdbUw
Create a .NET Web API project which will serve as an HTTP API for your frontend
app.
Use your existing .NET skills and knowledge to build this backend solution,
including data storage (database and database framework of your choice).
You don't need to worry about security (authentication and authorization) for now.
I suggest you to ignore tutorials which use .NET + React Visual Studio templates
for now. These templates include too much code and too many details, which
you won't understand at first. It's better to build the API separately for now and
make your React app talk to it, as it would be an external HTTP API.
Learn from:
1 Intro to Web API in .NET 6 - Tim Corey
https://www.youtube.com/watch?v=87oOF9Ve-KA
At this stage, it's time for you to learn authentication and authorization.
To begin with, read about good practices in web applications security. Read about
OAuth, OpenID, security tokens, bearer tokens, refresh tokens, HTTPS headers and
cookies.
In the end, add login and registration pages to your web application. The goal is that
you will have to log in in order to even see your actual website (or register to create
a new user account). Anyone who is not authorized should not be able to get any
data from your API (HTTP 401 should be returned to unauthorized clients).
Also, your login data (session) should be retained, i.e. you should still be logged in
after closing and opening the web browser.
Learn from:
1 Authentication and Authorization in ASP.NET Web API - Microsoft Docs
https://learn.microsoft.com/en-us/aspnet/web-
api/overview/security/authentication-and-authorization-in-aspnet-web-api
2 IdentityServer Quickstarts - Duende Documentation
https://docs.duendesoftware.com/identityserver/v6/quickstarts
At this stage, you should deploy your application to AWS or Azure. It would be
perfect if you set up a CI/CD flow with something like GitHub Actions. Meaning that
your application will be automatically re-deployed when a commit is made to your
git repository.
For now, I recommend you to get familiar with Microsoft Azure. It's obviously the
most popular cloud within .NET world. The concepts are similar for other cloud
providers.
Learn from:
1 DevOps for ASP.NET Core Developers - eBook
https://dotnet.microsoft.com/en-us/download/e-book/aspnet-azure-
devops/pdf
This time to dive deeper has just come. As you progress with building full stack
web applications, you will notice that your code evolves. Every component you
create will be a bit better. Each next TypeScript file will contain better typings.
With time, you will start using more sophisticated features. However, it's OK to start
simple. Don't overcomplicate stuff, especially at the beginning - it may block you
moving forward.
I'm pretty sure that if you followed the path proposed in this roadmap, you now feel
quite confident about building full stack web apps with .NET and React. You should
have a feeling of where is what in this ecosystem.
As the next step, I suggest you learn frontend testing - both component-level and
E2E. Next, master what you already know. I'm pretty sure it will all come naturally.
Learn from:
1 React Component Testing - Cypress Documentation
https://docs.cypress.io/guides/component-testing/react/overview
3 Zod - Introduction
https://zod.dev/?id=introduction
CodeJourney.net
Follow the blog and newsletter for more on .NET full stack web development