An interface is the names, inputs, and outputs of a piece of code. They are the knobs and handles we use to interact with the code.
Interfaces are defined by three things:
When building applications, we organize our code with functions and organize our functions into modules or classes. The interface of a module or class are it's functions along with those functions arguments and return values.
It is important to test and document our interfaces. This provides us and our collaborators with a better understanding of how to use the code.