The main imperative of the programming is to manage complexity.

Why is that? Because the most scarce resource any programmer has is his/her brainpower. Thus a good programmer is not the one that can understand complicated systems, but the one that can write a simple instead.

Complexity management is the tool that we use to reduce mental load at any given moment in time. We extract, we separate, we hide, we abstract, we comment, we declare non-obvious and make explicit what was implicit, so that every little and big piece can be digestible and independent and its role is clear and visible in total picture.