Concerns like network communication or user interaction might seem easy, but they are devilishly difficult to get right. The pristine world of algorithms devolves into the gory reality of failures and inconsistency.
Traditionally, we've coped with Effects incompletely and often unwittingly. Programs have been difficult to build, adapt, and maintain.