title: What do programmers mean when they say, "Code against an interface, not an object."?
body: <p>I've started the very long and arduous quest to learn and <strong>apply</strong> TDD to my workflow. I'm under the impression that TDD fits in very well with IoC principles.</p>
  
  <p>After browsing some of TDD tagged questions here in SO, I read it's a good idea to program against interfaces, not objects.</p>
  
  <p>Can you provide simple code examples of what this is, and how to apply it in real use cases? Simple examples is key for me (and other people wanting to learn) to grasp the concepts.</p>