So many words to describe a simple idea:<p>WRONG: build something factoring out potentially reusable parts<p>RIGHT: build something without factoring out potentially reusable parts. Later when you need to reuse those parts then factor them out. On the third time you need them you will already have a factored out price that can be readily reused.<p>REASON: while building and then factoring out might be more expensive than just building it properly factored in the first place, most of the time you don't get to reuse those parts so by employing delayed refactoring (or lazy refactoring) you are saving resources overall.