If you are just starting out or you are a seasoned developer with battle scars and years of experience under your belt you asked yourself this question at least once: is C# a good career choice?

Well, let’s try to answer it as objectively as we can. At times you can replace C# with .NET ecosystem as a whole.

Variety

C# and .NET framework is one of the most versatile tools for software developers. You don’t have to jump across different stacks to get more exposure to different platforms.

You have two great frameworks for creating web applications — ASP.NET and ASP.NET MVC. The tooling and the speed of development is on par with the most advanced frameworks in other languages. The biggest competition in this area would be without any doubts Ruby on Rails.

With Xamarin being acquired by Microsoft the state of mobile development for the major platforms is at a great stage. There is a huge benefit of maintaining a codebase in one language and having shared libraries across the Android and iOS platforms. With C# you can do all of that. Other major players in this area are React Native backed by Facebook but some of my mobile developer friends would swear on the native platform development.

Microsoft’s cloud platform, Azure, is growing fast and offers various tools not just for your backend API code and storage, but also for background jobs, machine learning, various cognitive services, enterprise solutions and security and identity management. There is a lot of goodies there that could make your developer’s life easier. Not to forget to mention that if you are a MSDN subscriber, you get a free credit to try them all.

When you need a thick client; a desktop application; it will be usually targeted towards Windows. You can’t really get a better framework for getting the job done than WPF or the simplicity of WinForms. There is not a lot of innovation in the field but those frameworks are far from being dead. They are the steady workhorse that is easy to use and does the job.

Lastly and slightly unexpectedly, there is a large camp of game developers. Unity — one of the biggest 3D engines uses C# as a language of choice and the tooling in Visual Studio gets better with every new version.

C# gives you a great variety of applications that you can create and you don’t need to learn new libraries and language constructs. You can write web applications in Lisp or Smalltalk and create Android applications in Ruby but that doesn’t mean that you should. C# on the other hand is one of the best tools for the job in any given category.

Technical

He’s using Visual Studio, right? Right?!

C# is an object oriented imperative language — you tell the computer what to do and can wrap those commands into objects modelling your desired world. This paradigm is the most widely used nowadays and therefore a good one to master. Applications patterns and object oriented practices are transferable to many other platforms and languages.

But apart from that, C# also has a number of features from functional languages. You don’t get tail-recursion, but LINQ is a brilliant tool for data transformation and filtering. And with C# 7.0 you get pattern matching as well. So you can expand your skills with other paradigms without leaving your favourite language.

Apart from that, C# is statically typed. That gives you an amazing tool when working on bigger projects with larger team and you realise how helpful it is when you find yourself in this situation in a dynamically typed languages like Ruby.

Also, there are dynamic features of C#. The dynamic keyword and reflection API gives you powerful tools to create nice DSLs or effectively work with JSON APIs. With great power comes also great responsibility and you shouldn’t use them mindlessly, but you have that tool in your toolbox.