Jeff Atwood – The Rule of Three:
“We think we've built software that is a general purpose solution to some set of problems, but we are almost always wrong.
[…] To build something truly reusable, you must convince three different audiences to use it thoroughly first.
[…] One customer or user or audience might be a fluke. Two gives you confidence that maybe, just maybe, you aren't getting lucky this time. And three? Well, three is a magic number.
[…] We're spending all our effort slowly, methodically herding the software through these three select partners, one by one, tweaking it and adapting it for each community along the way, making sure that each of our partners is not just happy with our discussion software but ecstatically happy, before we proceed to even tentatively recommend Discourse as any kind of general purpose discussion solution.”
I have long experienced this to be true. (It’s painful, because we’re in the “Enterprise Software” business and generate way too much code used by only one or two clients…)
It’s also true at a smaller scale: The APIs and formats and configuration settings internally used by our software need different use cases as well to prove that they’re well-designed. It helps that DC-X offers a lot of its functionality via UI, Web service, command line and PHP API (see Five faces of a Web app). Still, lots of areas remained “one-hit wonders” though we tried to make them reusable.