When working as a developer, knowing about synchronous and asynchronous models are important. By the term, it gives us a clue on what each programming model does and the main differences between them. Synchronous tasks happen in order, step by step. It has to finish its task until go to next task. Asynchronous tasks can be executed in random order. How do we use this models and when are they useful, let's go through examples and build a better mental model about synchronous and asynchronous programming.