I started my professional career as a .NET developer back in 2004. C# was the new cool kid on the block and everyone wanted to play with it. Microsoft was pushing hard its .NET strategy thus sponsoring the local universities and the biggest local technical event - Microsoft Days. It was the era of .NET.
In the begging C# and .NET were portrayed as the evil twins of Java and JVM - copying all the good things from the "blessed" Java and eliminating some of its bottlenecks - from small things like properties with getters and setters to more impactful features like value types and attributes. All this foundational work laid down the ground for the future innovation that was about to happen. And indeed, it happened: runtime generics (at IL level), LINQ,
async/await was so impactful that it changed the whole industry and every major programming language has this feature now (yes, even C++).
Things started to change in the mid 2010s. Anders Hejlsberg shifted his focus from C# to TypeScript, resulting in little to no language innovation in C#. The whole industry started the shift to the Cloud but .NET was not ready for it. Despite being labelled as multi-platform .NET was solely targeting Windows (and mobile via Xamarin). Linux was not first-class citizen, not even second. But the Cloud was all about Linux and Docker. It eventually went that route (thank you ScottGu) under the name of .NET Core but too late for the party.
On the other hand, Java entered its renaissance. After years of stagnation, Oracle revived the language and put it on the right track. It is now playing the catch-up game with C# but it's getting there fast. However, the Java ecosystem did have something to offer for the Cloud. Big data (Hadoop), search (Elasticsearch) and messaging/stream-processing (Kafka) are some of the key ingredients that enable the Cloud to shine.
Python was prepared as well. Having strong backing in academia, it positioned itself as the main player in the new field of machine learning. And the Cloud welcomed it.
What about .NET? There is this Question (with а capital Q) that hangs like the sword of Damocles over its head:
Where is .NET/C# positioned now? What will be its main application in the Cloud era?
Only the future will tell but one thing is for sure - .NET/C# needs innovation like it did in the past.