Does .NET Have A Future? (Do you?)

Posted by Marius D. on October 09, 2013  /   Posted in Informational, Technology

Recently I stumbled upon a great article written by Rockford Lhotka, a recognized and published expert and developer of the CSLA.NET (Component-based Scalable Logical Architecture) framework. This article got me thinking quite a bit and I would like to share my thoughts.

In the article “Does .NET Have A Future?” (Please go read it, it’s excellent!) Rockford goes on to ask and provide his opinion on the question:

Does .NET Have A Future?

This is a great question and one I think most .NET professionals have on their minds. I see myself as a perfect example of a .NET professional who at one point asked this very same question.

Over the last 13 years of my professional career I have dedicated most of my time and effort to mastering .NET. I started my .NET career as a consultant in the early 2000′s working on classic ASP sites and upgrading them to the .NET platform. Since then, I have mastered a lot of the nuances of .NET and learned a lot of best practices. By leveraging this investment I am currently engaged in building scalable enterprise architectures as a Software Architect for a full-time employer as well as a consultant/independent developer through MariusSoft LLC.

Over the last few years I too have felt the law of the universe, that everything is constantly changing, rear its head into my professional career. As mobile devices started permeating our lives and the BYOD (Bring Your Own Device) enterprise started becoming a reality, .NET, and my invested sweat and tears, slowly started to erode in value.

First off, as Rockford identifies, there is a distinct difference between consumer and enterprise application development. Consumer apps tend to be narrowly focused, smaller, and take less resources to develop. A typical consumer application may be written by a small team or even an individual developer. Enterprise applications on the other hand tend to have a much larger footprints, require many SME’s (subject matter experts), and usually require significant investment. A typical enterprise app will have business analysts, dedicated QA teams, architects, and potentially several scrum teams all focusing on the development. Also, the fiscal differentiator between the two can be in the $MM.

On the front of consumer apps, I have built a few, both on the mobile platforms (mainly on the Android platform and previously Windows CE), and on the desktop platform, mainly Windows. My choice of technology used to be .NET pre 2010 but decided to pick up Java for Android development. In a quest to leverage my investment/expertise that I built up on .NET I even tried cross platform development frameworks such as Xamarin. My goal was to write once, use everywhere as I did not have the resources to build and maintain multiple versions of the same app across platforms.

Through my personal experiences I have arrived at the conclusion that the best client applications are written on natively supported languages and frameworks.

Through my personal experiences I have arrived at the conclusion that the best client applications are written on natively supported languages and frameworks. This means that writing and maintain your application on multiple platforms is currently the best way to ensure you produce high quality applications, even though it is the costliest. The second logical choice seems to be leveraging cross-platform frameworks such as Xamarin or writing and maintaining client JavaScript apps. As Rockford points out the JavaScript path is expensive (due to the up-front costs of building and maintaining cross platforms apps) and performance can be mixed on different platforms; regardless it may be a practical solution in some instances (this is dictated by the type of app you are writing).

Even if cross-platform frameworks continue to evolve and JavaScript one day becomes the best approach to writing cross platform client apps, it is safe to say that .NET has lost its reign here. .NET developers need to become fluent in other frameworks/languages to stay relevant in the client apps space.

When it comes to enterprise/business applications the game changes a bit. Most organizations that have significant investments on the .NET platform, both on systems they are maintaining and talent they have on-boarded, are or will soon face the same dilemma as client app developers. It is clear that Windows 8 is loosing out to Android/IOS in the BYOD space, and as employees are pressuring organizations to provide apps on these platforms, decisions will have to be made.

One key difference in business applications is they are usually just complex CRUD (Create Read Update Delete) applications with complex beck end business logic which constitutes the IP (Intellectual Property) of the organization. Since these applications usually don’t require much more that simple input/output mechanisms, and have a requirement for connectivity to a server, they are well suited for a similar HTML5/JavaScript approach on the client side as client focused apps. The complex business logic can continue to live on the server side on .NET (or JAVA, etc..). This approach, while not perfect for all situations, enables cross-platform reach while minimizing the development/maintenance investment (only a portions of the app, the visual tier, will have to permeate multiple platforms).

While this approach might be suitable and the best choice today for enterprise applications, I want to quote Rockford:

I really hope that (if we move to JavaScript on the client) JavaScript matures rapidly on both client and server, eliminating the need for .NET/Java on the server as well as the client.

Having an integrated set of tools, framework, knowledge, etc… is what has made .NET so successful. Visual Studio is probably the best IDE out there, integrating everything from Intellisense to Unit Testing tools to TFS, all in one package. In most cases it is the only tool a developer needs to write apps on the .NET platform. The risks introduced with branching out into separate client/server technologies make it something that the industry will at one point have to address.

An extra point I want to bring up which Rockford did not touch upon in his article is that most .NET developers have probably been salivating at all of the BigData hype, only to feel left out due to one important fact: most BigData and NoSQL/NewSQL technologies are open source and not built on .NET. Heck, some don’t even have .NET adapters!

I’ve personally ventured into open source and have adopted Ubuntu, Java, Ruby on Rails, and other technologies which used to be completely foreign to me. This exposure has enabled me to leverage my knowledge of enterprise systems and .NET patterns to bring in the power of modern BigData technologies such as Solr, ElasticSearch, MongoDB, Hadoop, Neo4J, etc… to the enterprise (even accumulating to two pending patent opportunities).

In order to do this, I had to step outside of my comfort zone, drop my ‘title’ and start from the very bottom with a new set of tools, technologies, patterns, etc… As with all things in life, experience builds wisdom and maturity (practice makes perfect?), and this case is no different.

While one can ride out the rest of their career on the .NET platform as it slowly fades away into the annals of programming history, I strongly encourage any .NET dev to expand their experience and exposure outside of the .NET platform as the modern world is fascinating and ripe with opportunities.

Your experience and exposure to .NET will greatly aid you in this quest. Invest time in learning and becoming fluent in JavaScript and a number of popular frameworks such as jQuery, AngularJS, etc… Learn and become familiar with native Android/IOS development. Heck, why not start contributing to open source projects? Don’t fear change, embrace it and ride the wave innovation occurring at an incredible pace!

So yes, .NET does have a future, but the more important question to you as a .NET developer is, where does your future lie? Is it on a slowly eroding platform that is loosing market share or do you have the courage to start acquiring new skills? I hope that one day this question will be an opportunity for reflection for current .NET developers and one that will bring memories of a point in their professional careers where they decided to step outside of their comfort zone and learn without fear.

Leave a Reply

^ Back to Top