| The bad: - Web framework is not quite on-par with Django/Rails. Particularly with auth/OIDC. - Job market is very sector dependent. Startups just don't seem to use C# whereas big enterprises do. - Some design decisions in the early days seem to prevent some features being added, e.g. structural typing or union types (not certain this is the reason). - Some days, like yesterday, your IDE updates and gets messed up and then it's back to writing full variable names like a medieval monk. - .NET is not really viable for non-server work. There is embedded/desktop stuff but you're going to have a headache outside of servers. The good: - When it's working properly the developer experience is like those dreams where you're flying. Rider or VS + Resharper make typing anything seems an incredibly antiquated way of developing. Intellisense means you barely ever need to type more than 2 characters to express your intent. Unlike my experience in Go or Python I just think about intent/data shapes and the tools fill in the rest. No language I've ever worked in comes close to reducing the ideas -> implementation effort barrier. - Type system. This is non-negotiable for me, plenty of syntactic sugar to make overhead of typing lower but because it's compulsory, types save so much mental effort and our production systems never wake us up, feeds into the above. You don't just have to reimplement a compiler badly through unit testing saving a lot of time. - Tooling, full framework used to be hell and very tied to the (paid) tools. Now with Core the tooling is great and Linux support is fantastic. Overall I don't want to work in any other language if I can stick to C# but the fact startups don't use it mean I might have to enter scripting language hell, again. |
Completely wrong. Not only does Auth work particularly well out of the box, but microsoft documentation is top tier with both c# and asp net core.
https://docs.microsoft.com/en-us/aspnet/core/security/authen...
asp net core is the single best framework for backend web at this time, but yes, won't be as fast to ship as django/rails. If you like to maintain code, I'd consider it a worthy tradeoff.