One of the best ways to improve the quality and reduce the cost of software is to increase software reuse. One of the best technologies for increasing software reuse is object-oriented programming. Languages like C++ are making object-oriented programming accessible to more people, but many do not realize the impact that increasing reuse can have on the software development process. Reusable software is easy to use, but hard to produce. Object-oriented programming decreases the time spent coding and debugging, but increases the proportion of time spent designing. Object-oriented programming can have a big pay-off, but like all new technologies it has costs and risks, and the most successful uses of object-oriented programming are by those who are aware of the potential problems.