Hacker News new | comments | show | ask | jobs | submit login

LINQ (the syntax) is borderline useless in a post-lambda C#. The query expressions don't fit with the rest of your code well, and it makes it unclear that you're calling library code to perform the query. LINQ (the standardized collection library) is amazing to work with, very powerful, and most importantly of all, very intuitive and discoverable (thanks to great IDE support from Microsoft). You don't need to take a course to use learn to use the basics of LINQ's Enumerables - I would even suggest that most novice C# programmers start using it without even realizing they're doing so.

Async/await, just like query expressions, are a syntax construct - they are something that is difficult to discover. You don't find it in the auto complete list in the IDE (usually). This is why you need to learn about it to use it at all, let alone use it correctly, hence why it should be in the top things a modern C# dev needs to actually learn about - since the upsides for using it correctly are so great (code clarity), and the alternatives are so poor (chained tasks? managed threads? All comparable minefields that are difficult to grok). Plus, all the "call stack problems" you claim are inherent to any asynchronous tasks in C# - async/await actually gives your better traceability and debugging across asynchronous operations than any alternative.

So yeah, I'd say in terms of actual learning, knowing what/how/why for async/await is much more important than from/in/where/select (which you can forget using and just use the more discoverable library methods instead).

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact