The fastest way to write software is to let someone else do it for you. Reuse can eliminate some or all of the spec, design, code, and test phases. There are several different kinds of reuse. What most software engineers think of is taking some code and copying it to another program. But the most efficient reuse technique is to reuse a complete program. The correct tools must be used to solve a problem. Reusing parts of existing programs is much harder than the two previous techniques. Many people try to reuse code but most don’t get much out of it. Smart developers do it on their own, but really, smart teams do it together.