Synchronous vs asynchronous programming and their use cases