A good abstraction is one that emphasizes the essential and suppresses the irrelevant.
Inside every large program is a small program struggling to get out.