Have you ever designed programs and written software? If so you know that you "borrow" extensively from previous designs where appropriate, and absolutely reuse code wherever you can. Why write something from scratch if you can take something that does 70% of what you need and re-work it? So you end up doing a bunch of copy&paste. Not to mention that the object oriented model is designed to enable this through the concept of inheritance.
So -- in fact your point is equally applicable to intelligent design as it is to evolution. Except for evolution, it must imply a common ancestor, whereas with intelligent design, it just implies "mostly" common ancestry.
You bring up something I have been arguing for a long time -- that designs evolve. Unless the designer is completely outside of time, it is impossible to design a complex working system without cut and try.