Abstractions

An abstraction is useful because it allows you to ignore the details inside it.

A function is an abstraction. You give a name to a few lines of code and instead of executing those lines of code, you execute the function.

You can create abstractions using other abstractions. This can lead your code in some amazing directions in terms of expressiveness and thus maintainability.

But each abstraction you create is a thing you have to design and maintain. It’s a thing another programmer might have to learn, too.