This is so important. We all know beautifully "designed" API's or libraries.
The secret is that the "elegant" API design you see is usually the n-th iteration.
Growing code is much like growing trees. The tree grows itself, what it requires is that it is pruned and helped to reshape in a fashion that will allow it to stay alive for a long time and bear fruit.
But one needs to constantly prune the damn thing.