| I've been developing with C# professionally since 2012. I'm using dotnet core since the 3.1 release. Pros: - Superb IDE. Nowadays even without Resharper, which was a must have in my early C# days. - Massive standard library and extensive documentation makes for a very productive development experience (especially backends). - dotnet core was a huge leap forward in terms of dev tooling (sane cli, 3rd party integration) and framework flexibility (configurability in general, config by code instead of XML) - Microsoft keeps adding language features copied from functional programming languages. Cons: - Enterprise culture is very pattern-centric and produces much boiler plate code. That's the main reason I want to move away from dotnet. - Desktop apps are not cross-platform and I don't trust their newer stuff to deliver on that promise. The older WPF is outdated (e.g. no inbuilt support for "newer" features like async/await) because of their focus on Xamarin and MAUI or whatever new fad they come up with. - Microsoft seems to swallow open source libs by integrating them or copies of them (e.g. Newtonsoft.Json) into the standard lib. I'm not sure if this is a good thing. I know I'm contradicting the "massive standard lib" pro from above. But here I'm thinking long-term. - New language features are sometimes done half-assed for backwards compatibility. E.g. nullable reference types that are just syntax sugar instead of a proper maybe monad with language integration. |
The .NET approach of ensuring you can do nearly everything an app might need basic functionality-wise in the standard library probably sets .NET as one of the most secure platforms to develop with.
It's the anti-NPM, and NPM is terrible for security.