Contrary to the old saying. . .
Consider a software manufacturer that makes several products for different industries and applications and does this by setting up separate teams of developers. At the end of the day you have modules with different names performing essentially the same functions. Highly inefficient.
Object-Oriented Programming gurus warn against this MO– they believe in small, adaptable, re-usable and extendable code fragments. Developers who follow the O-O methodology not uncommonly work ten times faster than colleagues who do not.
On the software support side, which includes training on rollout of new product features in addition to responding to ongoing “how-to” questions, staff is also able to adopt re-use strategies simply by turning on a video recorder at the end of their testing phase and uploading recordings to YouTube or an internal FTP site for downloading.
Customers like this because they can a) view videos at any time they wish, b) view videos as many times as they need to understand the presentation content and then replicate protocols at their sites and c) greatly reduce internal training time/costs for their users.
Bottom line, all stakeholders quickly get to Win-Win-Win-Win (the software organization, the developers/support staff, customer staff, and the customer organization).
That’s it – best you not get me started on the many valuable software design lessons I learned from the O-O guru of all gurus, Dr. Bertrand Meyer, inventor of the Eiffel programming language and “design by contract”. http://en.wikipedia.org/wiki/Design_by_contract.