The entire world works asynchronously and lots of things are happening in parallel, activities are forked and must be orchestrated and coordinated all day long. On top of that, parallelising and asynchronous events are neither new nor rocket-science.
So why do some developers (not all, but a good part of it) still cringe when someone just mentions words like "asynchronous" or "parallel"? Why is it so hard for some developers (again: not all) to think parallel?
Of course, synchronous singlethreaded straightforward programming is much easier, because everything happens neatly orderly like a charm. In an asynchronous and parallel world things are more on the chaotic end of the continuum.
Of course, we still don't have adequate tools to deal with async + parallel adequantely, although we go step by step in the right direction. We still sometimes struggle while debugging race conditions, deadlocks and other problems that come along with the benefits of async + parallel.
We already have some tools and some language support we never dreamt of only a few years ago, things like async/await, like TPL and Rx, like F# and much more beyond that (and of course also things beyond the MS world), that make asynchronous and parallel operation more and more feel like a natural extension of the way we are used to program for years.
But I'm pretty sure that's just the starter. You (and me) ain't seen nothing yet.
I really will praise the day, where it will sound like an odd tale from "ye olde days" of SW development, when some of the older guys around will grab itself a beer and start telling stories of how we used to develop software back then in the old days, at the beginning of the 21st century. When the young eleves will shudder from the thought of being restricted to only one thread or forced to have to do their calls synchronously.
Ok, maybe I exaggerated a little. So please have mercy and omit the beer ...

































