The most general view of program development approaches claims we have two basic coding options. The first one, synchronous code architecture, works step-by-step, and all the processes run the same way. For instance, each process performs data input and receives output from the server. Consequently, if we have operation one and process two, as well as input/output one and input/output two, input two starts only after output one.
In asynchronous code, the architecture is not that strict and hierarchic. Our example with two operations looks different, as both operations can be performed simultaneously and remain independent. It is also called concurrent code.