When I work on a computer, be it building up the infrastructure or creating a fairly complex web application, I work with layers. Each layer does its own thing and builds on the previous layers while leaving itself open enough that it can be used to build the next higher layer. This comes in part from my experience with FORTH, a stack-based language that organizes code into dictionaries of word definitions so that the programmer works entirely bottom-up. The result is often a set of tools for attacking a problem instead of a monolithic application.