This document discusses why asynchronous programming is important. It begins by defining synchronous vs asynchronous programming. It then discusses how asynchronous programming works at a low level using I/O completion ports and shows timelines comparing synchronous and asynchronous operations. The document also covers different asynchronous APIs like Begin/End methods and async/await. It provides examples of available asynchronous APIs in .NET and different platforms. Finally, it shares some practice asynchronous applications on GitHub.