C#
Good language, overcomplicated community, one config away from null chaos.
C# is a well-designed language — pattern matching, records, async/await, and LINQ are genuinely good features. The problem is the culture around it. The .NET community gravitates toward enterprise patterns — dependency injection frameworks, repository abstractions, CQRS for CRUD apps — that add layers of complexity for questionable benefit.
The nullable reference types tell the story. C# added null safety, then made it one .editorconfig setting away from being disabled. The type safety is opt-in and easily circumvented, which means you can't trust it across a team the way you trust TypeScript's strictNullChecks. Add the Microsoft ecosystem lock-in — Visual Studio, Azure, NuGet — and the case for choosing C# over TypeScript for new projects is thin.