ASP.Net has been growing in capability and complexity as a developer offering since version 1. In some ways, the sheer number of those capabilities makes it something that's really scary for developers who are just getting started. Still, I think with the most recent LTS version 8, which is now in production and even more so with 9, now in preview, the barrier to entry is actually much lower than ever to build SIMPLE projects that can serve as jumping-off points to bigger and more complex things.
No Windows? No Problem.
I use MacOS for 99% of my development, and except for a few libraries, I have zero problems running everything on my machine. That goes for many of the Agility APIs and SDKs, but even more so for our recently updated .Net starter.
.NET doesn't need Windows, nor does it need Visual Studio. I do all of my .NET work from the command line inside VS Code.
Simpler than Ever
For those coming from .NET 4.x MVC sites, things look a LOT different now, and in a good way. No longer are things like headers black boxed away in wierd HTTP modules - you have complete control over your pipeline and middleware. I find now that I can move between something like Express.js and a .NET site and find a lot more in common. If you're looking to build a backend project that will scale easily in terms of project size, especially if it's hosted in Azure, I choose .NET for sure.
Where I do NOT choose .NET
I've been an avid supporter of Next.js for years now. While it has become more complex as the framework matured to allow for more options, better caching, I still feel it's a lot easier to work with on a website than .NET. Mostly that's because I've come to appreciate the beauty of React and how it is so much easier and faster to work with - especially for those who are new to development, or who lack back-end experience.
I find creating a .NET project with a React or Angular front-end to be a major pain. I'd rather create a .NET API project and have all the front-end be in Next.js, Astro or Remix, all of which I think do a better job at componentizing front-end concepts.
.NET 9 and the Future of the Framework
Something that I've been following along with is a project called Aspire that proposes an opinionated to build really complex Azure projects that are distributed, observable, have orchestration built-in, and a bunch of other fancy things. This isn't the first place to start with your .NET journey, but it's certainly something you should look at if you have an idea for something that's going to turn into its own platform or SaaS product. Having built a SaaS product on .NET, no other platform will keep you going into the future as well as .NET. Code that my team wrote over a decade ago still trucks along just fine. We have API versions from 2012 running .NET 4 sitting alongside .NET 8 with no problem.
With .NET, I see many incremental fixes and simplifications for things like dependency injection, unit testing, better tokenization with ML.Net, and, generally, stuff you'd expect. C# is the most mature and complete server-side programming language out there, and this next version (13!) looks to continue that trajectory.