What did you think of my discussion of that issue in the article? And the description of the solution I’m pointing to?
It took me years to teach co-workers and management that if we write it once, we test it once. Quality Assurance was always the bottleneck to releasing new sftware. We had so much spaghetti code that had to be tested that it impacted our release date by months, not weeks, every single time.
The key to success in changing the culture at my (former) company was to implement a suite of software tesing tools. Once the testers realized they could build (write) a set of tests and run it against the code over and over to their hearts' content, I had an army on my side. They began asking for reusable code so they could reuse the test harnesses they had already built.
I prototyped examples for the application developers and encouraged them to expand upon the ideas. Even the "quick and dirty" programmers began to catch on. I added extensive comments to my prototypes always making an effort to explain why more than what. "The user documentation explains what it does," I would tell them. "Use your comments to tell the next programmer what you were thinking and why you decided to write it this way."
The time it took to test and release software updates that included the reusable code decreased exponentially. Management was so impressed by the "time factor" that they began allowing us to rewrite sections of the spaghetti code with each new update/release. And what programmer doesn't relish the idea of rewriting some piece of crap instead of fixing it over and over?
Convincing the software testers of the benefits of reusable code was where I started. It was a huge success in my particular experience because they had always been the bottleneck. Removing that obstacle enabled more software releases in less time, which made management and customers ecstatic.
The “advertising” might work. The hard part is of course that the developer needs to know there’s an in house solution to Problem X before he realizes he has Problem X. Because developers tend to be natural problem solvers once they know they have Problem X their natural tendency is to tackle it, not to step back and wonder if somebody in the building has already solved it. And of course the other part of the problem is people tend to have tunnel vision, until they have to tackle Problem X most people don’t give a crap if anybody has a solution. So it all combines to put you in a position where you need to tell everybody you have that solution, knowing they don’t actually care, and hoping they remember when it matters.