Don't lose sight of large scale reusability.
Penny Foolish Pound Wise
I've seen two different project approaches in regard to reusability.
- don't care, it's faster for me to crank it or cut-paste-modify
- everything is designed and configurable for reusability whether it is needed or not
The OSID approach provides an interesting middle ground. Once an OSID Provider is developed and loadable, by definition it is reusable by any consumer of that OSID. OSID Consumers need not only be applications, but they can be used by providers of other OSIDs whether or not it was the intent of the programmer.
OSIDs does not concern itself with micro-reusability. That is, making sure everyone uses the same code for formatting a date or parsing an XML file. OSIDs enable reusability of entire services.
This is not to say that code reusability outside the OSIDs is wrong. It's just that if one had to choose, reusability is far more beneficial for large things. Fretting over small classes and utilities and ignoring the bigger picture provides little return. Programmers (like us) are too easily caught up in saving the pennies and the OSIDs have been helpful in reaping the pounds.