reuse.mdwn (1513B)
1 **Reuse** means the use of a piece of technology for new purposes, often 2 ones that were never envisioned by the original designers. **Reusability** 3 refers to design that makes reuse possible. 4 5 In **[[hardware]]**, reusability is of utmost importance. In order to 6 maximize component longevity, it should be possible to reappropriate them to 7 different purposes. 8 9 In **software**, the question of reuse and reusability is more complicated. 10 Software can be constructed and discarded without waste (it's just patterns 11 of electrons), so it can't be compared to hardware in this case. You don't 12 need to feel sorry for programming something 13 [[from scratch|redo from scratch]], because the replaceability of software is 14 what computers are all about. 15 16 Excessive reuse easily leads to [[bloat]] and multiple layers of legacy, as 17 in case of [[Unix]]. [[Monoculture]] may also appear if a lot of programming 18 is framed as the reuse of a single [[silver bullet]]. Too much concern for 19 reusability may also make the piece of software unnecessarily big and 20 complex. 21 22 Minimal reuse, on the other hand, may easily lead to "[[Not Invented Here]]" 23 kinds of problems. 24 25 The reuse of **ideas** is less problematic than the reuse of software. 26 Wisdom and ideas can be accumulated and refined without the risk of bloat or 27 sedimentation. 28 29 Keeping ideas simple makes it easier to implement and reuse them. Having a 30 rich layer of different ideas at the bottom of the dependency pyramid may 31 also help with creating [[technological diversity]].