Why I Chose C#
Tags: csharp, dotnet, programming, beginners
Published: 2022-04-23 16:48:13

Attention fullstack developers, there’s an imposter among us. Unfortunately, it’s me. I like to think of myself as a front end dev, disguised as a fullstack developer. So while I’m willing to on and learn multiple frontend options, the backend is maybe even more important.

Here’s why I’ve chosen C#

## Open Source Project Maintained by Microsoft

While these two things don’t make it inherently better, it makes me sleep at night knowing that the language will always be optimized, improved on and supported. 

Open source projects are always great as there is a high level of transparency and usually an active community of developers and companies that’s invested in the project.

Having the language backed by an active community is great, because if there are any short coming or ways to improve on it, the community will always do it’s best to improve on it.

## It’s a Great Language

Apart from C#, I’ve briefly worked with languages such as Delphi, Python, Java and JavaScript. However C# has always been my preference.

It’s probably the Stockholm Syndrome talking as this was the language we had to learn in college. But I’ve never had any issues with the language itself getting in the way of my productivity and my ability to create applications. 

It makes use of a syntax that is easy to understand, but it also doesn’t fall apart when the code starts getting too complex.

C# is fundamentally an OOP (Object Oriented Programing) language. This means that everything is comprised of objects and we can create and interact with objects and their methods and properties.

However C# also accommodates for certain [Functional Programming](https://www.codeproject.com/Articles/375166/Functional-Programming-in-Csharp), techniques such as Lambda Expressions, Fluent APIs etc. allowing you to speed up your productivity and the performance of your application.

## .NET Ecosystem

*or is it dotnet 🤔? either way...*

You can’t mention C# without talking about the infamous .NET. While it has been the bane of developers in the past, due to it being proprietary, it has since become open source and the .NET Core update has pushed the limitations of what a development eco system can accomplish. 

You can build pretty much everything with C# and .NET. From Mobile Applications, Web APIs, Video Games and AI tools.

Another benefit that .NET has introduced is it’s cross platform. .NET can be ran and hosted on both Windows and Linux. 

This takes out a lot of frustration developers might have relating to hosting and opens up to organizations who either already have Windows Hosting or new organizations that wants to capitalize on Linux hosting.

## NuGet Ecosystem

In as simple terms as possible, a NuGet package is a compressed file that is made up of compiled code (DLL). It can be created by any developer and then uploaded to the NuGet gallery, similar to NPM packages.

This has opened up the landscape for developers to create libraries that solve their organization's problems and even other developer’s problems.

There is also an infinite amount of great libraries that already exist out there. You have [LINQ](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/) that acts as a universal data query syntax. [AutoMapper](https://docs.automapper.org/en/stable/Getting-started.html) for mapping types to other types. [NUnit](https://nunit.org/) and [Fluent Assertions](https://fluentassertions.com/) for unrivaled Unit Testing. And many, many more.

You can also create your own private NuGet packages that’s specific to your organization. These packages can then be shared between developer teams to increase the consistency and productivity of your developers.

## Bright Future

Since the introduction of .NET 6, the .NET eco system and C# has been on a contentious up.

New features are being added to C# as a language, such as record types, which focuses on maintaining records, typically from a database, without the extra leg work by doing things like making an Id of a record immutable once it’s been set, for example. 

.NET has also put in a massive bid to run Web Assembly applications with [Blazor](https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor). I’m a big fan of the idea of WASM for building web applications in a more performant and productive manner. 

[.NET Maui](https://docs.microsoft.com/en-us/dotnet/maui/what-is-maui), is also another emerging technology out of the .NET eco system. This is going to allow developers to take their Blazor code and use that to create native cross platform applications on Android, IOS and Desktop.

## Conclusion

C# is a great language that has a lot of useful features and interacts with one of the most powerful developer eco systems out there, .NET. It also has a future that I am keen to be a part of. 

If you found this post useful, please follow me on [Twitter](https://twitter.com/ChadwinJDeysel) for more Angular and development tips and check me out on [GitHub](https://github.com/chadwinjdeysel).

Thanks for reading and have a great day! 😄