An approach to programming wherein development of the lowest-level primitives required in a problem are written before the higher-level components that require them.
Not surprisingly, this is the opposite of TopDownProgramming.
- Unit testing is made easier since these primitives can be tested right after being written, before anything else uses them
- Requires a well designed project which won’t change much before it is completed. This is because it is very easy to write code which is not needed or will not naturally interact with other components unless their interactions were already designed (designing in this way is actually depending on the design being an application of TopDownProgramming)
Fill in any other ideas that come to mind. Most of the developers I know shy away from these terms since they are frequently confused so it would be good if we can nail down some concrete terms, here.