You should build up primitives and compose them instead.<p>---<p>In top-down design we say, in effect, "this problem is too complex for me; I shall dissect it into a number of smaller problems, and those into smaller problems still, until I have a set of problems simple enough to solve."<p>In bottom-up design we say instead "this machine is not well-suited to my problem, because the elementary operations are too elementary; I shall therefore use the elementary operations to create a more powerful machine, and the operations of that machine to create one still more powerful, until I have a machine on which my problem can be easily solved."<p>-- Jackson, M.A. <i>Principles of Program Design</i> (1975)