I don't agree that async/await is in "should know" and LINQ is in "nice to know".<p>LINQ took C# from MS's Java clone with nicer generics to one of the best languages out there. It is phenomenal for increasing developer productivity.<p>Async/await, while a nifty, sometimes useful addition, is overhyped, code-complicating, unnecessary for most programmers, adds almost no performance benefits to most programs and infects the call stack above and below it with debugging problems, bad stack messages and extra code. It can introduce subtle and very nasty bugs, as well as impeding your ability to code some common patterns.<p>Why they keep pushing it as if every tom, dick and harry should write all their code using it, I do not know. It has a price so you should only use it when it's actually useful.
I've been writing C# code for four years now and love it, but you have to be careful with the Microsoft stack, they would have you chasing your tail with the constant stream of new frameworks and tools.
Hanselman mentions Reactive Extensions. Has anyone here built a large reactive extensions application and been happy with the readability/maintainability of the result?<p>I built one. And while it worked, it was never as readable or maintainable as if we had skipped Rx all together and written using other parallel paradigms.
From my "less than awesome" experience over the last couple of days with .net core on Linux, I doubt that there is <i>anything</i> I ought to know about it in 2017.<p>I realize that the situation on Linux is very new for Microsoft but the current state after this much time is quite sad.