Hacker News new | ask | show | jobs
by bertylicious 1483 days ago
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.

1 comments

I think the absorbing into .NET behavior of their standard library is the standout reason to use .NET: You aren't going to have to shim basic functionality out to some random third party who might or might not abandon the code, and could inject malware or telemetry down the road without telling you.

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.