¿Qué quieren decir los programadores cuando dicen, "Código contra una interfaz, no un objeto"?

Comencé la búsqueda muy larga y ardua para aprender y aplicar TDD a mi flujo de trabajo. Tengo la impresión de que TDD encaja muy bien con los principios de IoC. Después de examinar algunas de las preguntas etiquetadas con TDD aquí en SO, leí que es una buena idea programar contra interfaces,...