Divide and conquer
Divide and conquer is the process of breaking a problem down into smaller parts. You might not know how to solve a particular problem, but by breaking it down into smaller parts, you can then solve each part in turn, which then solves the original problem.
This is a very general technique, of course, and doesn't just apply to the use of modules and packages. However, modular programming helps you work through the divide and conquer process: as you break your problem down, you discover that you'll need a part of your program which performs a given task or range of tasks, and Python modules (and packages) are the perfect way of organizing those tasks.
We have done this several times already in this book. For example, when faced with the challenge of creating a chart-generation library, we used the divide and conquer technique to come up with the notion of a renderer that could draw a single chart element. We then realized that we would need several different renderers, which...