C# Developer’s Anonymous (Defending C# in a JavaScript World)

Hi, My name is Ben and I am a C# developer.  It’s been 1 minute since I wrote a line of C# code.

Am I the only one that has noticed some negativity towards C# and .NET these days?  All this buzz and talk about HTML5, CSS3 and JavaScript has C# devs on the defensive.  Lately, I feel like I need to apologize for using C#, ASP.NET, XAML and\or Visual Studio.  Everyone wants to use JavaScript for everything.  It looks like this post by Jeff is 100% accurate.  In the article, Jeff says anything that can be written in JavaScript will be.

Node.js is a huge example of this.  Don’t get me wrong Node is a great way to build a fast, scalable cross platform web interface for FREE!  I get it, it’s FREE.  However, let’s discuss the word “free” for minute.  Is it free if it takes me twice as long to develop it?  Is it free if I have to import all these open source modules, libraries and frameworks, some of which have licensing that forbid commercial use?  Is it free if my application breaks due to a bug in a new version of one of these open source projects?  To me the productivity gains I get from using IIS, ASP.NET MVC (or Web Forms), C# and Visual Studio are well worth the licensing fees required to build applications with .NET.  Not to mention all the unbelievable productivity tools provided by 3rd party vendors like Telerik.  In the long run, my users and customers don’t care about the backend technology as long as the architecture performs and can be scaled.  They also want it done as soon as possible.

Most of the C# developers I know love developing using .NET and Visual Studio (VS).  Hardcore open source proponents might say VS is cheating.  It abstracts much of the low level details and plumbing so the developer can focus on just building the application.  Is that wrong?  Maybe if you are writing a hardcore application that needs control over some low level operations.  Most apps these days don’t need that.  Plus I would argue that 3rd party JavaScript frameworks like jQuery, backbone, knockout, etc. do the same thing in the JavaScript world.  To me the abstractions that VS provides are all that is right with software development.

Ever since Microsoft killed Silverlight and provided HTML5, CSS3 and JavaScript development for Windows Store Apps, C# developers get no love.  TypeScript is a perfect example of this.  I love TypeScript and use it to write large JavaScript based applications.  But TypeScript exists for one reason, because JavaScript development is painful for C# developers that have been spoiled by the most powerful language (C#) and IDE (VS) on the planet.  TypeScript is trying to bring all the features of these tools to JavaScript.  Eventually it will get there and we will all be writing applications that “compile” to JavaScript.

Visual Studio and C# produce software that runs on many different devices.  The apps created with these technologies might not always run on every device but they can target a large range of devices.  They might require some licensing fees, hosting fees or cloud fees.  My experiences is that these fees are a reasonable cost (or even a necessary cost) for writing and deploying good quality applications.

Finally, I want to say that I do not hate JavaScript.  I find it very similar to C#.  However, I miss all the value that the .NET framework and Visual Studio provides.  If I can ensure the environment my application runs in will have .NET installed I will use it every time.