A principle of good software engineering.
Before planning for developing reusable artifacts, make sure that you make the best use of what is already provided for you already. Like language specific libraries, OS specific functionality, utilities, etc.
Is this not part of the poorly-named principle OnceAndOnlyOnce?
The page name suggests to me the important fact which I once (can't remember where) heard expressed as "Reuse is just a special case of use."
There are two common approaches to building reusable software that have very high failure rates:
-
- 1. Harvesting software that was built for a specific application with never a thought to reusing it.
-
- 2. Building software that is intended to be reusable across lots of applications.
The purely tactical approach of the first case results in tremendously tricky rewrites of components that may or may not result in anything that anyone else can use. The purely strategic approach of the second case results in
BigDesignUpFront and huge amounts of scope creep since no one project is actually driving the requirements.
The "third alternative" is
-
- 3. Building what one (or possibly two) real live applications actually need RIGHT NOW, then extending it over time to meet the needs of other projects.
Which reminds me:
StrategicAndTacticalAreNotAntonyms
-- BillBarnett
See: YouArentGonnaNeedIt, YouAreGonnaNeedIt
CategoryReuse