« Back to home

Why I Started Learning .NET Core

Yes! I started learning a Microsoft tool! For those of you that know me a little more know that I was never a big fan of Microsoft products. Since the beginning of college I was a linux guy and after a while I switched to a MAC OS computer (that in my opinion is just an expensive linux that works, but this could be a subject for another post).

My lack of interest in Microsoft's products was due to some terrible experiences that I had in the past dealing with Microsoft things.

One of these experiences happened while I was working for Siemens. I remember that once I had to create some libraries for Linux and Windows to perform voice encoding and decoding. To do this work I created some code in C++ to take advantage of a third party multimedia processing library.

The code was challenging to write but not very difficult. Also it was really easy to build the libraries for Linux. I Just created a Makefile to compile everything with g++ and output my .so libraries.

For Windows this build process was a nightmare. To compile my libraries I was required to install Visual Studio 6 and Visual Studio 6 SP1 update. Just the installation of this tools took me 2 days. For some reason, the Visual Studio installer was stuck for an entire afternoon without using no CPU, Disk nor Network. It looked like that this installer had some sleep instruction in it. Everyone said that this was normal and had to go through this too. After that I took a long time to configure a new solution, put my code in it, configure the build to finally create my .dll.

After that terrible experience I decided to not invest my time on Microsoft's products anymore. But, recently, I changed that decision.

The Motivations to learn .NET Core

About one year ago I started working on SWATech and got the opportunity to work with some great friends again. One of these friends that have a lot of experience with ASP.Net MVC and C# always talked about the .NET framework. After some of these chats and discussions I started to be a little more interested about the .NET ecosystem.

But only one thing was stopping me from starting studying .NET. The fact that I couldn't put .NET applications in production using linux servers was an impediment for me because I still do not trust Windows server and don't feel comfortable with that.

Then I discovered .NET Core. After some research I found out that .NET Core runs very well on Linux and is stable enough to be deployed in production on Linux servers. So, there was no excuse to not study it a little more.

The first thing that I did was to understand what is .NET Framework, .Net Core, Mono, ASP.NET, and all of these terms that surround the C# community (the result of this research may be a topic for another post, again).

Then I found out community around C# is very big and C# is actually one of the most used languages according to stackoverflow. Also there is an strong effort from Microsoft to make .NET Core a great open source platform with help of the community. Open source frameworks makes me feel a little more comfortable.

Another major motivation to learn C# is the opportunity to better understand a statically typed language. After all these years working with Ruby I feel that I must learn something different with new concepts in order to open my mind and improve my understanding of programming.

Next Steps

After all the research about C# and .NET I decided that I want to learn it and, for me, the best way to learn is by constructing something with it. So I decided to build a internal project of SWATech with the help of my .NET friend using C# and ASP.NET.

We choose to use ASP.NET Core 2.0 that was released about 2 weeks. I know, it is risky to use a brand new technology like that, but I think that this technology have a great potential. It will be fun to use and will create lots of opportunities for us to contribute with .NET Core community.

I'm excited with C# and .Net and probably I will write a lot about my discoveries always comparing how C# contrasts with Ruby and ASP.NET MVC contrasts with Rails.