In the movie The Truman Show, the lead character, Truman, grows up unaware that that all of the people who surround him, including his parents and wife, are paid actors. The town he lives in is actually a domed soundstage with over 5000 cameras following his every move for a rapt worldwide audience.
The amount of work that it takes to preserve the illusion for Truman is incredible. Every way that he interacts with his environment forces requirements on the "man behind the curtain". In this respect, Truman reminds us just how much people need from their environment. No organism lives in a vacuum. We require an ecosystem and ecosystems are subtly dependent on us.
Let's pretend that Truman is an object. As an object, he probably has collaborators. How easy is it to rip an object out of a context and use it in another? Why is it easier to rip a nail out of a wall and use it in, say, a door than to rip a class out of one application and use it in another?
If we wanted to make software as widely reusable as nails, screws, and pipes, what would we have to do? Do we do enough already? What do we give up when we move in that direction?
I think we get carried away making analogies between software engineering and the construction industry. The simple fact of the matter is that software engineering isn't anything like constructing buildings.
Just because nails, screws, and pipes are reusable doesn't mean that software should be reusable too. Software should be written to be reusable when making it reusable is a way to solve a problem that needs to be solved. Reasons why software should be reusable are likely to be very different from the reasons why nails, screws, and pipes should be reusable.
I suspect that many software re-use initiatives have failed because they involved making code re-usable that didn't really need to be re-usable. This was compounded by the fact that making code re-usable is harder, and consequently more expensive, than writing once-off code.
-- Curtis Bartley
We rip primitive types out all the time and shuffle them around. We've even been known to do that to methods. These are your nails and pipes. Classes are much more like foundations for a bridge; there is certainly a certain sense of what a coffer dam should be like, but each one needs a bunch of little nudges due to deep water pressure, bedrock shape, etc.