Sirwan Afifi
3 min readOct 17, 2015

Why I love/hate Microsoft stack?

I’ve been programming for several years, I started writing code with C++ in high school. I had the chance to give C# a try, together with a friend of mine, while we were doing a desktop application (Windows Forms). After that, I realized that C# is the language I was looking for, maybe because I didn’t know about other great languages Like Ruby, Java. By the way, That was my first step into the Microsoft stack. Since I was a newbie everything was good.

The more I was going forward more I was realizing I’m in the world that everything is like a black box. I began to notice that something was wrong when I got familiar with Web Forms, there was a whole pile of modules that were going to run inside IIS. The problem was that I learned web development using ASP.NET Web From. I thought there was a direct relationship between the URL and the disk. There were a lot of abstraction layers, sometimes these abstractions got me in trouble when I added too many of them. In fact, a lot of stuff in Web Forms were hidden. Actually I did some projects with Web Form but as I move forward I thought there are a lot of gaps in my knowledge so I started using ASP.NET MVC. With ASP.NET MVC, I learned more about some advanced topics like Routing, DI, Model Binding, …

At the time my friends were trying to tell me I’m going in the wrong direction, I had kind of two groups of friends, some of them are very talented and some of are not, the first group believed that, although ASP.NET MVC is a great application framework, it is not a one-size-fits-all framework. It is good for doing certain types of projects and for other types, it is not that decent. It depends on the type of the project. For example, the framework doesn’t have built-in DI container itself and so on and so forth. In some cases, I did agree with them but it was late to switch. Since I’m not a religious person about technology so I tried to get help from the .NET community and fill those gaps in my projects including integrating DI, using AutoMapper, …

The second group are the ones who are religious about technology and have some bias toward some technology or programming language. They think that Microsoft stack isn’t a good choice at all! Actually I don’t care about their opinions because I think they aren’t talented and they are always nagging about everything, they just have unconscious bias.

Recently I had a chance to take a look at the new version of ASP.NET framework called ASP.NET vNext. There’s the whole bunch of things that are going on in ASP.NET community. It’s important to note that this new version of ASP.NET framework has been completely rewritten from the scratch and this means a lot has changed from previous versions. Now I have no reason to switch.

By the way, I’m into with the first group and I believe that everything is good, I think having this idea will help you to understand that in many cases there isn’t just one good or best solution for a problem.

In the end, I’d say that you should think programming skill with platform-agnostic perspective.