Interface vs. implementation
37signals' Ryan Singer puts it succinctly:
"Interface vs. implementation" is a split that runs all the way down a software project, from UI vs. code to the names of individual methods. Knowing which of the two hats you're wearing at a given moment is key to keeping complexity under control and communicating better with your team.
I'd add that it's also the key to creating the best product you possibly can, regardless of what you're producing.
If you require a short url to link to this article, please use http://ignco.de/149