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.
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.
While this approach might be suitable and the best choice today for enterprise applications, I want to quote Rockford:
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.
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.