With Microsoft's official release of .NET Core 3 today, I want to give you my perspective on .NET and tell you how the platform continues to innovate solutions to modern problems.
Let me tell you why.
When Microsoft introduced .NET, they decided that they weren't building a single language, but a managed framework that different languages would compile down to run in. This made sense given that one of the primary goals of .NET was to address "DLL hell" and simplify managed code interoperability by giving people a smarter alternative to COM development.
This meant that you could code in VB .NET if you were used to Visual Basic or try the new C# programming language if you were more a fan of C++ or Java style syntax. This also gave Microsoft room to introduce new languages down the line such as F#.
.NET was a huge success in terms of addressing the woes of COM and improving developer productivity and application quality.
But today's world is vastly different than it was back in the early 2000's.
With .NET starting as a productivity solution to Windows desktop and web development, it's interesting how it has since radically embraced cross-platform and cloud development. Microsoft realizes that people want to run servers in things like Docker containers and on platforms other than Windows. This is not a grudging acknowledgement on their part, but a true open-arms embrace and sprint into the cross-platform open-source world.
The world has changed and cloud services are the norm. Microsoft technologies work extremely well in a wide variety of cloud hosting environments, with more capabilities coming every release. Sure Microsoft would love for you to use Azure, but it's still awesome if your team prefers AWS.
Front-end technologies have changed more than perhaps anything else. This is evident in Microsoft's stack just by looking at Windows Forms, WPF, XBAPs, Silverlight, Windows Phone, Windows Universal, ASP .NET WebForms, MVC, and now Blazor.
So, now that we've covered what the framework is and how it has changed, why do I personally love it?
C# gives you some very strong syntax for dealing with object-oriented problems.
.NET gives you a wide variety of built in libraries for solving known problems. On top of that, there are a multitude of libraries freely available via NuGet to integrate other technologies into your application in less than a minute.
If you're more functionally-minded, F# offers the capabilities of the .NET Framework mixed with functional programming. On top of that, F# code can talk to C# or VB .NET code - and vice versa - allowing you to mix functional and object-oriented code.
As far as actual language features, I'm particularly in love with .NET's generics, extension methods, lambda expressions, and LINQ. EntityFramework makes database flexibility significantly easier and productive.
.NET Core web applications are very minimal in their boilerplate code, letting you focus on what matters and easily integrating various middleware components into your application.
I've written before about how .NET is like the Borg - slowly acquiring new features and capabilities. This remains relevant and is an incredibly strong reason for the framework - it adapts to new situations and offers new capabilities as the world changes.
I'm reminded of a joke thread comparing various programming languages to boats from back in 2008. In the comments, a user named RJ said this of .NET:
.Net is undoubtedly a flotilla of mid-size ships in various states of dis-repair, with no one boat leading the others. At random intervals new boats, partially complete, will be added to the flotilla – but as these ships do the same as some of the other ships – nobody will bother to finish them. Sometimes, some of these ships sink never to be seen again, but nobody really notices.
RJ wasn't too far off. Sure we've lost some ships, but .NET is now a glorious armada capable of taking on whatever seas the ocean has to offer.
If you're considering learning .NET, give it a try. It's a lot to take in, but you'll be rewarded. I recommend you start somewhere small, like a console app or building a .NET Core Web API.
Reach out to the community if you get stuck. The .NET community is professional, courteous, and incredibly innovative and I am proud to be part of it.
.NET is not for every team or every problem, but it's amazing to be a part of, and I do not regret investing my time in this technology over the years.
Photo by Matt Popovich on Unsplash