Ignorance Through Abstraction 
I found this great quote while reading Eugene
Wallingford's
blog entry about
Richard Gabriel's presentation at
OOPSLA:
Perfect understanding requires abstraction, which is the ability to see the simple truth. Abstraction ignores the irrelevant. Hence abstraction requires ignorance. Therefore, perfect understanding requires ignorance.
The essence of software architecture is abstracting away those details that you don't care about so that you can concentrate on those that you do. Ignorance through abstraction provides you with the freedom to vary unessential details and the power to work at a higher and more productive level. More concretely, abstraction relates to the design and exploitation of good interfaces. A good interface allows for reuse (not having to write new code which is similar to old code) and isolation (not having to rewrite old code when you have some new code).