How To Become a C# And .NET Developer in 2021
Where do I start
Without learning basics, it’s not possible to go any further. To become a .NET developer, you will need to learn the C# programming language and get familiar with the Visual Studio IDE
What IDE to use for .NET
Visual Studio IDE (best Visual Studio courses) is the program where most of the .NET developers write the C# code. Visual Studio for Windows is free for personal use, and by far it is the best IDE for .NET developers. You can also download Visual Studio for Mac, but it isn’t that great as Windows-based.
For .NET development on Mac or Linux, I would recommend using Rider IDE (from Jetbrains). It has got as many features as Visual Studio, plus, it has an integrated tool called Resharper, which will help you write clean and beautiful C# code.
Although it is a recommended IDE for .NET, you can code with .NET using Visual Studio Code IDE, which is a light-weight version of the Visual Studio, and is cross-platform.
What basic skills you need to understand as a .NET developer
As a .NET developer, you will need to understand a couple of C# programming language concepts. Some of them are not unique to .NET, but used in other object-oriented programming languages, like Java.
Some of them might not make any sense in the beginning as you might not understand what’s the real benefit of using them. You will connect all the dots in the future, in case you won’t understand the real benefits in the beginning, and that’s fine.
Basic C# (.NET) skills you need to understand:
- Data types
- Fields and properties
The list looks quite long, but all these concepts are learnable quite fast too. Based on my estimation, it shouldn’t take any longer than one month to learn all these things, including necessary software installation.
SQL is your friend
There’s one more thing to learn, and that is called SQL. SQL is an abbreviation for Structured Query Language, which is used for querying databases to pull out the data.
The most commonly utilized database by .NET developers is Microsoft SQL Server. Which is also available for free for personal use.
If you are on Windows, to start learning SQL Server, you will have a very nice and easily navigable user interface for executing SQL queries.
If you are on Linux or Mac, it will be a bit harder to install SQL Server as you will need to use Docker containers.
As another option, you might want to install a Windows virtual machine and to use SQL Server from there.
Microsoft SQL Server is the most used database in the .NET environments, but you can also utilize other database systems, like MySQL or PostgreSQL. To be honest, I wouldn’t overwhelm myself with other databases SQL Server for now.
Choose your direction in .NET
It is not possible to become a .NET developer without choosing the development direction. It’s essential to know the basics of C#, but you need to master at least one of the following technologies. There are a couple of possible directions in .NET. If you are completely new to programming, I would recommend to start with web development as this is the easiest technology in .NET to start your career with.
- Web development – working with ASP.NET Core MVC/API and Blazor
- Cloud development – working with Microsoft Azure
- Mobile development – working with Xamarin
- Desktop development – working with WPF/WinForms/UWP/Xamarin.Forms
- Microservices – working with .NET Core and Docker
- Gaming – working with Unity/MonoGame/CRYENGINE
- Machine Learning – working with ML.NET/Apache Spark/Cognitive Services/Azure Machine Learning
Learning Web Development
This is where the majority of people go towards when choosing .NET for their career. To create web-based applications in .NET, you should be learning ASP.NET Core as this is a future technology for the web, and it is also cross-platform.
ASP.NET developers can usually do both MVC and WebAPI based web applications.
MVC based web applications are now considered old-fashioned web applications, where all pages are being reloaded when you navigate through the website.
WebAPI based applications usually work alongside with the SPAs (Single Page Application), such as Angular or React (there are more). When you navigate these kinds of applications, there’s no page reloads like with the MVC. What is happening behind the scenes is that the portions of HTML are swapped based on the links you click.
SPAs are out of the scope of this article, and SPAs are usually not a responsibility of an ASP.NET developer (unless you want to become a full-stack developer). As an ASP.NET developer, you should know both MVC and WebAPI. It is not hard to learn them both.
Another technology that the C# developer must understand (not necessarily in the very beginning) is called WCF. WCF is an abbreviation for Windows Communication Foundation. It is used for two-way communication with the servers.
Personally, I have mixed feelings about this technology, but companies are using this technology very often, and fortunately, it’s not hard to learn and understand it.
Depending on the requirements, but I would try my best to go with RESTful API instead of WCF. Anyway, this is something you’ll need to learn in the future. It’s a very mature technology and it doesn’t look like it’s going away.
Learning Cloud Development
This is the future and is one of the most wanted skills. Microsoft developers most commonly choose Azure as their main cloud platform as it was built with .NET developers in mind. However, it is legit to utilize any other cloud – Amazon’s AWS or Google Cloud – whatever works for you.
A lot of companies are migrating their technologies from being on-premise to Azure. It is the most modern way to run the applications, as well as scalable.
You no longer need to worry about upgrading hardware for your servers as soon as the workload for your applications increase, it’s done with just a few clicks in the cloud.
Some applications dot not require servers at all, so in the cloud, you can developer serverless applications too.
Using cloud, application deployment will be much simpler too.
Security is also one of the essential concerns for every company, and in the cloud, your applications will be much safer than on-premise. It doesn’t mean you won’t need to develop your applications with security in mind, it simply means that the cloud will provide you with so many security options out of the box.
Cloud isn’t a good fit in terms of your first development direction. It’s good when you already have something developed, for example, a web application.
All in all, to be come a good .NET developer, you’ll need to have Microsoft Azure in mind too – the sooner the better.
Learning Mobile Development
If you know C# and .NET basics, and you feel like you are passionate about mobile development, why don’t you look at the Xamarin then? You can write mobile applications using the same programming language you already know. This is the most common reason why companies choose Xamarin too.
Imagine you have a project that is based on .NET. Later on, you get a requirement to write mobile apps as an extension of that project. Most likely, you will need to write apps for various platforms, such as Android and iOS.
In this situation, there are are two options. You will need to either learn more programming languages to write mobile apps for each platform. You’d need to be learning Java/Kotlin for Android, and Objective-C/Swift for iOS.
How long that would take?
As another option, you can use Xamarin and write apps for each platform using C#. Moreover, because Xamarin is based on .NET, you will be able to re-use your existing codebase!
Here is why you may be interested in Xamarin:
- Easily create apps for Android, iOS, watchOS, tvOS, and more
- Native apps with native user interface controls
- C# as a programming language
- Xamarin apps are very performant
- Fast development
- Build apps using Visual Studio
- Open source
- Backed by Microsoft
- Great community
Learning Desktop Development
A few decades back, Windows was the most common operating system and so was the desktop applications. Since then, popularity in desktop applications has decreased significantly. Nowadays, web development is the most popular platform for different kinds of applications, because they can be accessed from any platform or device.
However, desktop applications are still heavily used and will be in the future. The good news is that the technologies for creating desktop applications are evolved as well.
Windows Forms (WinForms)
Firstly, we had Windows Forms. The first version of Windows Forms was released in 2002. Since then, Windows Forms was updated numerous times and it still is.
Many businesses are still using Windows Forms, probably because their first applications were written using the technology and it would be painful to rewrite everything with cutting edge technologies.
Windows Forms allow you to drag and drop UI controls onto the form in the Visual Studio, and the C# code for these controls is generated automatically. All you need to do is to write code that gets triggered after you click a button.
Windows Presentation Foundation (WPF)
There is another technology from Microsoft for creating desktop applications, which is called the Windows Presentation Foundation. This beast was released in 2006 with the .NET Framework 3.0.
It also allows you to drag and drop controls onto the form in Visual Studio, and instead of generating C# code for storing these controls, it generates XAML files instead (XML based files).
The downside of the WPF is that it’s very designer-centric, so you’ll be spending a huge amount of time playing around with the design side of things.
WPF will pay off if you will put your big efforts into it.
Universal Windows Platform (UWP)
Windows Forms and WPF are both old technologies and it seems that Microsoft has its focus on the Universal Windows Platform instead.
UWP and WPF are similar in that the UWP will also generate XAML files when you place controls in the forms’ designer. You will want to use UWP instead of WPF if you wish to publish your applications to the Microsoft Store.
Learning Microservice Development
It’s a good idea to understand microservice architecture for .NET developers. It’s not a standalone technology for your career, but it’s rather an addition to your current knowledge.
When your application gets bigger and bigger, it’s a good idea to separate logical parts into microservices, rather than having one big monolith solution. There are many downsides for the monolith applications:
- Can get big in size
- You must redeploy entire application on each update
- Long deployment process
- Long start-up time
- One bug can take entire application down
- Hardly scalable
What microservices can help with? Well, with everything opposite to the drawbacks of the monolithic architecture.
Microservices can also get big, but they are separated from the main direct user-confronting application, therefore, their start-up time or re-deployment process does not have any visible impact on user experience.
If some microservice fails and crashes, it shouldn’t have any impact on the main application, which still should be running fine. When a microservice is back online, it can pick-up where it left. While some microservice is down, things that it processes stop, but most importantly, your main application is still running so your customers can still do things they want.
Another important thing about microservices is that this kind of architecture is easily scalable. As your business and functionality grow, you can add microservices to support these processes of the business. Here are the examples of the business processes where you can have separate microservice for each of them:
- Notification sending – email/push/sms messages
- Security checks
- Other services
There are numerous other processes where you might want to have a microservice to support them. Although microservice architecture is great, you should consider if it’s a good fit in the business and you shouldn’t get too granular with it too.
Learning Game Development
This is one of the most interesting areas for .NET developers, but it’s not for everyone. If you are passionate about the game development, you might find it interesting to learn it in .NET and C#. There are couple of technologies that you may like to use:
This is one of the major players in 3rd party game development solutions, not only with .NET technologies but in general. It was first announced and released in June 2005.
Unity is free to install on your Windows, Linux or Mac computers, so anyone can have a fully-fledged game development engine to start learning and creating games. Unity is a high-level game development engine to enable you to get things working quickly.
Unity has very nice tutorials on the official website on how to create game functionality, but it’s usually not enough to understand how it works in more detail.
It is a high-level game development framework and does far less for you as a game developer meaning, it is not for beginners and is far less popular. It is also used to make Windows and Windows Phone games run on other systems. It supports iOS, Android, macOS, tvOS, Linux, PlayStation 4, PlayStation Vita, Xbox One and Nintendo Switch.
CryEngine is another game engine designed by German company called Crytek. CryEngine was used to create games like Far Cry, Crysis, and many more. This game engine is heavily supported by Crytek to support ever evolving gaming consoles and their hardware.
Learning Machine Learning
Machine Learning is a buzz word for quite a while now, and it is a future technology utilized by more and more companies and individuals in their interesting personal projects, which often become businesses.
With Machine Learning can do so many things, like make various predictions, chatbots, create artificial intelligence, use for detecting spam, analyse emotion in texts, face recognition, speech recognition, credit card fraud detection, medical analysis, and so much more.
Machine Learning isn’t easy for most people, it will leverage your mathematical skills quite heavily, so be prepared if you are looking this way.
You can create Machine Learning solutions in .NET by using tools like ML.NET, Apache Spark, Cognitive Services, and Azure Machine Learning.
Other .NET bits you’ll need
It’s not possible to discuss everything you might need as a .NET developer in the future, but I’d like to highlight some important things separately.
Nuget Packages. Nuget packages are used to share the code within the organization or for public usage. Think of additional libraries to help you achieve some results in the code. Using Nuget packages, you can re-use other developer code, or share your code with other developers. Most likely, you will need this skill in a company.
Console applications. Like desktop applications, there are console applications. They don’t have a UI, instead, you run console applications to start some processes, or to do some work and exit straight away when done.
CI/CD pipeline. CI/CD pipeline – translates to continuous integration and continuous delivery. Simply put, it’s a stack of technologies that allows you to automatically build and update your applications on the servers, instead of having to manually copy files over from the development machine to the servers, which is old-fashioned and error-prone. TeamCity and Octopus Deploy or Azure DevOps are the technologies you’ll need to get familiar with in the future for the CI/CD process.
Are you ready to become a .NET developer?
I hope this was useful to you. I’ve tried to give you a full spectrum of technologies, or directions if you like, that you can choose from to become a good .NET developer.
A lot of giant businesses are built using .NET technologies, a lot of personal projects are running on .NET. There is nothing you couldn’t achieve with using .NET and C#.
Today, C# and .NET are no longer Windows-only based technologies. They run on Linux servers too, meaning you won’t need to buy expensive Windows hosting services to run your .NET applications. It is not more expensive than running PHP applications.