Bjarne Stroustrup, the creator of C++, is believed to have said that programming in C++ involves writing libraries and then using them. Having worked with C++, Perl, PHP, Python and Javascript for the past ten years, I'm inclined to think the principle applies to more than one language. Especially the object oriented variety.
The idea makes sense. Large problems need to be broken down into building blocks. Then you must first build the building blocks before you use them to build the building. Build the building blocks wrong and the building comes out wrong.
How do you go about designing the building blocks? Based on your building's requirements, of course. Strangely though, in the world of computing, some programmers (including my past self) tend to forget this basic principle and try to stand the process on its head.