From 11:00PM PDT on Friday, July 1 until 5:00AM PDT on Saturday, July 2, the Shmoop engineering elves will be making tweaks and improvements to the site. That means Shmoop will be unavailable for use during that time. Thanks for your patience!

# At a Glance - In the Real World

In computer programming there's an idea called "top-down design" or "stepwise refinement." This is essentially the art of breaking a big problem down into little problems, then breaking the little problems into itty-bitty problems, and continuing to break the problems down until they're small enough to deal with.

Example. This page has a good example of top-down design. The big problem is to draw a house. This can be broken into the littler problems of drawing the outline, the door, and the windows. The problem of drawing the windows can be broken down into one problem for each window, and so on.

### Sample Problem

The problem of finding the derivative of a product fg can be broken down into several smaller problems:

• find '

• find g'

• apply the product rule

• simplify

We're not only practicing taking derivatives here. We're practicing the skill of breaking problems down into smaller problems, and this skill will be valuable everywhere else in your life.

### Sample Problem

Think about the big problem of "doing your homework." This can be broken down into the smaller problems of math homework, that English paper, studying for the Spanish test, etc.. That English paper can be broken down into the even smaller problems of writing an introduction, writing 3 middle paragraphs, and writing a conclusion. Suddenly the problems are much more manageable - instead of trying to sit down and "do your homework," you can sit down and write the first middle paragraph. Then you can cross something off your to-do list and feel good about yourself!