
At the beginning, when people started doing code, procedural programming was the way to go: one instruction was written after the other. When applications started gaining complexity, and operations became repetitive, programmers started to implement functions that they could reuse and where they could group a set of instructions to be executed that were related to a functionality or a task.