Defining and using interfaces is one of the core tenets of modern software development. Interfaces are fundamental to making an application testable and keeping it loosely coupled, so why do so many get it wrong? As with many principals of software design, the benefits and goals are often misunderstood and therefore they are misused and abused. In this session we will examine what interfaces are and why you should care about them. We will also discuss when interfaces should be used and look at some of the common pitfalls and mistakes people make. Join us and make you software design fundamentals more SOLID.