It’s good to bet on .NET
As someone who has built more than one popular platform on .NET (DotNET for the marketing conscious), I often get asked about its relevance and whether it’s an ecosystem really worth investing in. This question is especially popular among folks living in the tech distortion field in the San Francisco Bay Area where tech fads come and go like the changing seasons but .NET remains steadfast as not only a consistently popular platform, but as far as I’m concerned, the most holistically productive, delightful, and accessible platform there is.
Yes, there are other fantastic languages out there; I see you, Rust! Yes there are other fantastic App UX platforms, hello, Flutter, you’re gorgeous. But for all-round productivity and elegance, nothing else stacks up.
The .NET today is not your parent’s .NET, and there’s a reason why it’s won most loved platform 3 years in a row in the annual StackOverflow developer survey¹. In fact, combining .NET Framework (a little older), with the new .NET Core stuff, it blows everything else out of the water by a longshot:
Perhaps even just as telling; .NET also shows the strongest positive sentiment of love vs. dread of any framework in the survey.
To understand why developers love .NET so much, let’s examine the .NET experience holistically.
The tooling is best-in-class.
First up is the tooling; .NET enjoys first class support in Visual Studio for Windows, Mac, and limited support in VS Code (an omission on Microsoft’s part that we’ll discuss below). Together, they represent the most utilized IDEs in the world, in fact VS Code is the absolute reigning monarch of IDEs, used by over twice the number of folks as the second most utilized IDE (Visual Studio, of course)²:
JetBrains Rider, argued by many as the best IDE in existence, has not just matched Visual Studio’s .NET support, but it’s improved on it considerably, creating what is likely, the best .NET tooling experience of all.
The tooling itself is built on underlying platform capabilities such as a robust, one-touch build and deployment system, and provides an effortless first-run-experience that enables developers to go from platform install to application deployment in minutes. In fact, the ability to go from zero to deployed applications with .NET out of the box without fighting complicated toolchains, make files, or platform versioning has set the standard by which other platforms aspire to, and driven deep platform loyalty.
It runs everywhere.
Much like the 1990s dream of Java, .NET runs on every major platform out there, and has custom, integrated tooling to take advantage of each platform on most. While it was first locked on Windows, today, it’s at home on Windows, macOS, iOS, Android, Linux, Mainframes, and even microcontrollers. It also runs natively in the cloud; Azure, AWS, and Google Cloud all have built-in .NET application support.
There’s a spectrum of elegant languages to choose from.
A core feature of .NET is the Common-Language-Runtime (CLR), which enables applications to be written in over 25 currently maintained languages, including C#, and F#; two of the finest languages on the planet, as well as VB.NET; which while being a favorite language to poke fun at, is incredibly powerful in its own right.
There is a massive community and skilled labor-force.
Depending on how you count, there are somewhere between 20–25MM³ active developers. By our own research, at somewhere north of 10MM, nearly half the active devs in the world either know, or actively develop in .NET.
And that ecosystem of developers has grown every single year since the inception of .NET. So at a time when it’s notoriously difficult to hire developers, you can rest assured that .NET enjoys one of the largest development talent pools to pull from.
It’s still growing fast, too; the latest TIOBE Programming Language Index, which indicates the overall popularity of a language shows that over the last year, C# has seen, by far, the largest increase in popularity and is expected to enter the top three, replacing C⁴. In fact, when combined with VB.NET, it easily ties for first place.
It’s technically beautiful.
2016’s .NET Core remodel stripped .NET down to its bare bones and created a modern, ultralightweight and composable, a la carte way to consume the minimum necessary platform libraries directly from its modern package ecosystem, Nuget. It also dropped the legacy Win32 platform connections, paving the way for a truly cross-platform experience as it merged the innovations that the Mono and Xamarin team brought to the runtime and tooling.
.NET Core also enabled it to get a whole lot more performant; by breaking from the legacy .NET Framework runtime constraints, Microsoft was able to include a litany of performance improvements across the board.
And speaking of performance, Xamarin’s innovative Ahead-of-Time compiler (now mainlined into the unified .NET) means that developers can ship binaries that are compiled all the way down to chip architecture specific assembly code at build-time, enabling native C/C++ performance from memory-managed applications.
That intrinsic memory-managed approach pays dividends in reliability and security too. From a reliability perspective, it virtually eliminates the instability and crashes due to memory leaks that are so common in unmanaged applications such as those written in C/C++. From a security standpoint, the memory safety achieved from a memory-managed platform eliminates a whole swath of security issues due to memory usage which, according to Google, accounts for roughly 2/3rds of all unmanaged security bugs⁵.
It’s 100% open-source.
All aspects of Microsoft’s .NET are open source and free to use, including class libraries, runtime, compilers, languages, and application frameworks⁶. You can find the source code all in one place on GitHub, in the DotNet repository.
The ecosystem is top-notch.
In addition to the investments that Microsoft has made, the 3rd party ecosystem is massive and enjoys tons of high quality libraries, plug-ins, tooling, and frameworks.
To give you a taste, here are a few notable examples of amazing 3rd party integrations:
- Uno Platform and Avalonia — Two mature alternatives to MAUI, Uno Platform and Avalonia provide an elegant and delightful, performant, cross-platform UX framework.
- Meadow — Created by my own company, Wilderness Labs, Meadow enables you to build IoT solutions in .NET that run on microcontrollers.
- Telerik — The gold standard for pluggable UI controls available on nearly any platform.
There are also innumerable consulting firms, solution providers, and .NET shops that are certified and qualified to build .NET solutions.
It’s trusted by the Enterprise.
It’s well established that .NET is a mainstay in the enterprise, and while Microsoft doesn’t give public figures for .NET usage, 95% of the Fortune 500 uses Azure, and I’ve privately been told that at least 80% of the Fortune 500 is known to use .NET, but the actual number is believed to be much higher because telemetry is often turned off.
.NET is especially popular for mission critical applications in which .NET’s reliability and battle-hardened runtime provides ease-of-mind. In fact, .NET is used extensively by the U.S Department of Defense.
It’s not perfect.
With all the amazing that is .NET; it’s not perfect, and I would be remiss to point out that despite all the good that Microsoft has done with it, it does have shortcomings. Most of which are directly attributable to shifting priorities within Microsoft and a leadership team that has struggled to keep up with the front lines of developer culture.
For one; MAUI, Microsoft’s flagship cross-platform UI library which is the successor to Xamarin and also combines the previous Windows UI framework, WPF, is chronically underfunded, enabling Flutter to edge ahead as probably the best cross-platform UX platform out there today. This is especially true on Linux, where MAUI doesn’t yet have support.
That same leadership has also, at times, notoriously mishandled the community, as evidenced by rudderless .NET Foundation⁷, and the Hot-Reload fiasco⁸.
Shifting priorities are likely also to blame for the limited support in VS Code; while you can do basic .NET support, it lacks a proper plugin to handle .NET’s multi-project solution format which is necessary to support more complex projects. This is due to Microsoft historically prioritizing monetizing .NET developers into Visual Studio sales vs. cannibalizing them with the free VS Code. With that said, it’s also clear that priorities have shifted internally to provide much better cross-platform tooling support, and I’ve heard rumors that a full VS Code solution is in the works.
In conclusion; .NET is a platform without equal in the industry.
Still, even with its minor shortcomings; .NET stacks up as easily the most productive and trusted developer platform ecosystem in the world. Nothing else out there offers a more complete, open, and productive platform than .NET.
And by all indications, .NET will retain that distinction for the foreseeable future as it continues to grow and the team and ecosystem continue to innovate. For this reason, it’s good to bet on .NET!
- StackOverflow 2021 Dev Survey — Other Platforms
- 2021 StackOverflow Developer Survey — Integrated Development Environment
- Developer Nation Asserts that there are 24.3MM, but active developers are likely fewer.
- TIOBE Programming Language Index
- The Chromium Projects
- DotNET Documentation
- Notable problems described in The Register, Azure from the Trenches, and Developer News with Tim Corey
- The Verge