When developing software, one of the key factors of value that can be obtained is time. If you can get something up and running faster with no economic sacrifice, then you have a better value proposition than otherwise.
Knowing that, software developers create reusable code, hoping to invest Today in Tomorrow’s software.
Sadly, that code is not always used. In fact, it’s common to have a load of projects just sitting around gathering dust, instead of being used to speed up the next project. On the other hand, there are tools too cumbersome to use.
The proper way to go about this is to not write reusable code until you need to reuse it. At that moment, you can refactor the code into reusability, thus preserving the gains in time and ensuring that the code is going to be used again.
Similarly, the tools should only be written when they’re going to be used – and while they’re being used. Many of Eric Raymond’s projects are a good testament to this practice.