While I agree for the early learning, it is also very valuable for the later learning ... since it puts focus on where you write crapy code. When you loop around a resource access code 10.000.000 times, then you go in/out of your process for that often.
For that I find the explicit async/await quite valuable. Could non textual code highlighting in modern editors do that as well: Sure, but that is not the tech of 10 years ago when C# team came up with that.
> When you loop around a resource access code 10.000.000 times
I don't thing async helps with this. People will always write code like everything is in memory. My feeling is the best antidote is to artificially introduce worst case latencies even when developing locally so the pain will be felt during development instead of production. Perhaps static analysis could help as well.
For that I find the explicit async/await quite valuable. Could non textual code highlighting in modern editors do that as well: Sure, but that is not the tech of 10 years ago when C# team came up with that.