Thus, although the principle of information hiding was first enunciated in the early 70’s, (and illustrated even earlier), it is rare to find a software product that was properly designed from this point of view. The code is often clever, efficient, and correct; it performs rather amazing functions, but rarely is it designed to be easily changed. The problem is not that nobody knows how to do it, but that most programmers don’t do it. I that some programmers think that heir program will be so good that it won’t have to be changed. This is foolish. The only programs that don’t get changed are those that are so bad that nobody wants to use them. Designing for change is designing for success.