A post I have been avoiding for several years, mainly because both this blog and my YouTube channel are centered around C#, so you can probably imagine what the final conclusion will be.
But I keep getting more and more questions from those of you who are starting out or planning to start, asking if C# or .NET is worth it. In this post, I’ll share my opinion and the reasons behind it, and, as always, I’ll do my best to be as impartial as possible—both for the good and the bad.
Table of Contents
1 - The State of C# and .NET
First, let’s talk about the current state of the framework itself. What is .NET? .NET is a framework, and C# is a language (like F#, VB, etc.) that runs on top of it. This website and my channel mostly focus on C#.
When you see job offers mentioning .NET, they’re probably talking about C#—in fact, about 85-90% of the time, it will be C#. But we’ll talk more about the job market later.
.NET itself can be split in two:
.NET framework
: These are the applications people now call “Legacy.” Although .NET Framework is still updated, it’s not really comparable to the other version. When you see people online saying .NET forces you to use Windows, or only works on Windows with proprietary code, etc., they’re referring to .NET Framework..NET (core)
: This is the current version, which launched its first release in 2016. We’re now on .NET 8. These are the applications that run on the modern ecosystem: the apps are lighter, open source, run on any system, and development for them is cross-platform. I have posts with examples for Linux and Mac (apple silicon).
That’s a summary. If you want more detail on the versions, here’s a link where I explain all the .NET versions—and the unfortunate naming decisions.
Although I don’t cover it on this channel, Azure has full support for anything related to .NET, which means many companies use C# because of the safety net Microsoft provides.
2 - .NET Ecosystem and Community
For me, this is one of the fundamental pillars. In my experience, we have an ecosystem better than any other, plain and simple. I’ve worked with multiple programming languages during my career like PHP, Ruby, Go, JavaScript (countless frameworks), and like everyone in Spain, I studied Java.
Personally, I find working with .NET the easiest by far. The tools available—both from Microsoft and third parties—are impressive and make the job very straightforward.
Working with .NET or making a hello world
is as easy as downloading the .NET version and Visual Studio. Everything is very well explained on Microsoft’s website, or on my blog, of course.
Microsoft itself releases a new version every year with updates. Each release brings both performance and feature improvements—here you can see what changed in .NET 8 in November 2023.
Talking about C# specifically, it has nearly every feature you’d want from a language (except for discriminated unions) and is going big on pattern matching, which is a fantastic addition.
In .NET, we also have what’s called the .NET Foundation. Basically, these are libraries under that umbrella. When a library becomes very popular, it’s invited to be part of the .NET Foundation and gets resources for development—mainly money or sometimes help directly from someone at Microsoft. This helps keep libraries up to date.
Whether I like it or not, Microsoft has its own academy, and they’re starting to provide more advanced topics with real-world examples. It’s not ideal for me since it’s what I do on this channel—maybe they should let me do them! But oh well.
Finally, in my opinion, people on the internet are generally kind when you ask questions, and realistic when discussing C# vs other languages—which isn’t always the case in every community, cough, Ruby, cough.
3 - Real-World Use Cases
Let’s move on to more serious things: where can we use C#?
Literally everywhere. As I mentioned before, since .NET Core, we can run our code on any platform: web, desktop apps, or games (Unity is super popular), as well as on mobile devices—including any IoT device.
This means its use cases are potentially endless compared to other languages.
To mention more specific sectors, .NET is extremely popular in any government system virtually worldwide, mostly because Microsoft is behind it. Healthcare and Fintech are also sectors where .NET is very, very common.
Those are broad terms, but of course, any company could potentially work with .NET. To mention my own experience, I have worked with travel agencies, warehouse businesses, and fintech, among others.
One of the features of .NET is that it scales, and scales very well and cheaply—thanks to the Microsoft team’s focus on reducing load times, improving built-in packages, and, of course, enabling .NET to run on Linux. That’s been great for all of us who have applications that get 60-100k calls per minute—that’s 80-144 million per day.
Of course, with unlimited funds, EVERYTHING scales, but the idea is to do it cheaply, and with .NET, that’s possible.
3.1 - C# VS Other Languages
We can compare .NET to other languages. In fact, we can group languages into categories:
In general, the ones in the upper group let us develop a lot faster, especially Ruby—which is a bit of a love/hate relationship for me.
Ruby is super fast to develop with, but its performance is terrible. JS isn’t as bad, but still not in the same league as the second group (Java and C#). This first group is for interpreted languages.
The second group—compiled, or better, semi-compiled languages—do things differently. C# (or F#, or VB) compiles to IL (Intermediate Language), Java to bytecode, and both are executed by either CoreCLR or the JavaVM, which turns them into machine code at runtime.
This brings benefits such as efficient code and great memory management since the languages come with powerful garbage collectors.
Finally, we have purely machine code-compiled languages like C/C++ or Rust, which are very efficient when programmed well, but are hard to get right and very costly time-wise. Of course, you gain that time back when running the app, but these languages are generally only used when maximum performance or hardware-level requirements are crucial.
Choosing the right language for each scenario is crucial. For example, C# and Java are excellent for enterprise apps, where you have a lot of employees and many features to maintain.
Ruby is excellent for startups because it lets you get a ton of features done very quickly—and that’s vital (though, generally, things can be a bit hacky) when launching a startup.
C is ideal for apps that need to be ultra-efficient and performant—think Linux kernels or databases, all implemented in C.
4 - The Job Market for C#
Finally, let’s talk about C# and job opportunities.
As you probably gathered from the previous sections, there are tons of sectors working with C#; that means plenty of job opportunities, on par with other languages or much more widespread frameworks.
Personally, I have never had any problem finding a job in C#, and since it’s so popular among big companies, there are plenty of positions for graduates or juniors—which is almost impossible in C or Rust.
C#’s large ecosystem means you don’t just have to focus on backend or desktop apps like it was popular before 2015. Now, there are mobile apps and web frameworks like Blazor if you’re interested in web development.
For these reasons, I think starting your career in C# is a great idea. You can move from one environment to another—usually starting in backend or fullstack (with Razor)—then move on. It really opens doors, and that’s what matters most.
Finally, I should mention I have been working remotely since before the pandemic, which might be important for some of you.
Best regards!
If there is any problem you can add a comment bellow or contact me in the website's contact form