Systems are designed by architects, and then coders translate the plans into code via a process of construction. For me, this isn't the most heartening analogy. Software is much more pliable than the average building. It offers us many more possibilities. To me, object-oriented development is closer to a biological process.
Objects are like cells.
As their volume increases, the ratio of internal substance to interface grows. At a certain point, growth becomes hard and it is easier to split than it is to grow. This is good because a few smaller interfaces can present more opportunities than one large one. For an example, see Martin Fowler's video store example in his Refactoring book. At the start, a single method contained just about all of the code in a small system.