In no particular order and with no particular emphasis:
in reply to code-sharing at work.
- Don't "share" code - reuse code. Create a set of infrastructure modules that everyone reuses.
- Document APIs - you can't reuse what you don't understand how to use
- Tests - most people rewrite the wheel because they don't trust the other code. Seeing 1000 tests pass goes a long way to giving someone confidence.
- Source Control - everyone checks their stuff in and can see the latest versions.
- Managerial dictates - sometimes you need a whip to get out of your rut.
Ultimately, you need to soft-sell them on the benefits. If you and a coworker started to reuse each other's code, you can demonstrate how you found a bug in his code that he'd been trying to fix for months (and vice versa). Two heads working together are better than three heads apart, and all that jazz.
Being right, does not endow the right to be rude; politeness costs nothing.
Being unknowing, is not the same as being stupid.
Expressing a contrary opinion, whether to the individual or the group, is more often a sign of deeper thought than of cantankerous belligerence.
Do not mistake your goals as the only goals; your opinion as the only opinion; your confidence as correctness. Saying you know better is not the same as explaining you know better.