I think your initial sentence summarizes .Net well.
I'm not a .Net developer and never have been. But I used to do a lot of technical due diligence work. Which sometimes means sitting down and going through the most critical code, and sometimes nearly all of the code in a project. When you do this kind of work you encounter lots of different languages and software cultures.
One thing I notice about .Net in particular is that it is often the choice of companies that have a weak software development culture. My guess is that people choose .Net in these companies because they already have a "relationship" with MSFT products. MSFT is what management knows and trusts. Often because they're not qualified to make technical decisions and they think MSFT is somehow a safe choice.
This is also why they tend to choose Azure. It isn't so much a conscious choice based on the merits of the technology. They almost never tried AWS or GCP first, and there is very often some financial incentive to choose Azure (eg licensing package deals).
The .Net projects I've reviewed are often often mediocre software engineering. In particular during M&A, you encounter a lot of code bases that use old .Net versions, old libraries and critical code that hasn't been touched for years. Presumably because the companies that tend to choose .Net often do not invest in the codebase once it is "done".
It also isn't unusual that much of the code is written by junior consultants.
This is my experience and it is what it is. It isn't so much about technology as it is about certain types of companies.
But it does result in me having certain prejudices when I hear that something is written in .Net. It is easy to expect bad things when people say "we use .Net".
I haven't reviewed any Kotlin codebases. My guess is that if people choose Kotlin then at least they had some opinions on languages, so I'd expect more. But as I said, that's just a guess.
On average Java codebases I have reviewed tended to be slightly better than the C# codebases. The C# codebases I've seen have tended to be more "garden variety meh" while Java tend to be either south or north of "meh" - if that makes any sense. They're more often either terrible or fairly nice. Though I've been lucky and seen more nice than awful Java. (There is a separate circle of hell for Spring and other metastasizing frameworks).
That being said, the all-time worst codebase I have reviewed was in Java. An EMV system written in a hurry with almost zero error handling.
I'm not a .Net developer and never have been. But I used to do a lot of technical due diligence work. Which sometimes means sitting down and going through the most critical code, and sometimes nearly all of the code in a project. When you do this kind of work you encounter lots of different languages and software cultures.
One thing I notice about .Net in particular is that it is often the choice of companies that have a weak software development culture. My guess is that people choose .Net in these companies because they already have a "relationship" with MSFT products. MSFT is what management knows and trusts. Often because they're not qualified to make technical decisions and they think MSFT is somehow a safe choice.
This is also why they tend to choose Azure. It isn't so much a conscious choice based on the merits of the technology. They almost never tried AWS or GCP first, and there is very often some financial incentive to choose Azure (eg licensing package deals).
The .Net projects I've reviewed are often often mediocre software engineering. In particular during M&A, you encounter a lot of code bases that use old .Net versions, old libraries and critical code that hasn't been touched for years. Presumably because the companies that tend to choose .Net often do not invest in the codebase once it is "done". It also isn't unusual that much of the code is written by junior consultants.
This is my experience and it is what it is. It isn't so much about technology as it is about certain types of companies.
But it does result in me having certain prejudices when I hear that something is written in .Net. It is easy to expect bad things when people say "we use .Net".