A mantra of software design is to hide complexity. If our desire is to make a program as complex as possible, we will be more successful if this complexity is kept out of sight. The process ofhiding complex code behind simpler interfaces is called “encapsulation” in coders’+1000 to Miller Puckette.
jargon. The idea is that a program may be made more complex if the complexity is well divided up into smaller portions, all hidden away to keep those portions from mixing and making a larger tangle.
Arguably, though, an even more powerful strategy for managing complexity is simply to avoid it altogether, that is, try to think of simple things a program could do instead of doing complicated ones. This is because, if to be able to do complicated stuff we have to hide the complexity, then the user probably won’t understand what the program is really doing.