The goal is to minimize the amount of a program you have to think about at any one time. You might think of this as mental juggling – the more mental balls the program requires you to keep in the air at once, the more likely you’ll drop one of the balls, leading to a design or coding error.