Several days ago a topic with the title "Software Reusability: Myth Or Reality?" was posted on Artima. Following the comments on this post since the first publishing I think you should take a look there too. Developing SW for 6 Years now (by far not that long as the poster) I have to agree with him. The problem with reusability is that there are several issues that must be fulfilled that libraries objects .... can be reused.
1) Clean self speaking code
a) Tests: they are the best documentation of a program because their actual status (which is documentation) can be verified easily by executing them.
c) Diagrams: all the UML Stuff which in my opinion is even more difficult to hold up to date.
I would answer the question raised in the article as follows:
1) Is reusability something that can be trained for?
2) Should reusability be a requirement?