Yesterday I wrote about top down approach to design, bottom up is the reverse approach
With this approach we first predict what components on going to be required. Going back to the EchoServer example, the echoServer class depends on a echoConsole module, this means by first designing the echoConsole, we're taking a bottom up approach.
In this example it doesn't seem to make much of a difference however when designing a larger system, the difference becomes more apparent.
In addition with larger system you don't get the immediate feedback on whether the domain objects that you've implemented will even be needed. This leads to wastage, requiring deletion of tests and classes(worse is if the developer forgets these classes, yikes!)