>C# is a nice language, but it has a huge surface area in terms of syntax.
If you compare it to something like Java, yes, it has much richer syntax. But having to process some extra unfamiliar syntax is compensated by removing a lot of boilerplate once you get familiar with the features. Also, Java's simpler syntax is far overshadowed by much bigger complexity and cognitive load in other areas of the Java project, including the entire plumbing besides the code itself. Ergonomics, simplicity and comfort of a .NET Core project infrastructure is pretty much unmatched.
Can’t argue with this. .NET is like RoR or Django, just more tightly integrated. The dev experience is better than Node with its thousand dependencies or even Python at times—with its better type system but a zillion ways to manage dependencies.
However, I was mostly talking about the cognitive load that comes with a large syntax surface and GoF-style OO, and how starting with something like Go is just easier.
Java nowadays basically means Spring Boot. Which is just best practices anyway.
And every Spring Boot project looks the same. It's boring and it works.
So from a technological standpoint, it doesn't really matter which one you choose. .NET might have an advantage here and there, but for my taste they are trying a bit too hard to sell me their cloud stuff.
If you compare it to something like Java, yes, it has much richer syntax. But having to process some extra unfamiliar syntax is compensated by removing a lot of boilerplate once you get familiar with the features. Also, Java's simpler syntax is far overshadowed by much bigger complexity and cognitive load in other areas of the Java project, including the entire plumbing besides the code itself. Ergonomics, simplicity and comfort of a .NET Core project infrastructure is pretty much unmatched.