¿Qué es un contrato?
En el artículo de Wikipedia sobre Design by Contract, podemos encontrar la siguiente afirmación:

[…] Los diseñadores de software deberían definir especificaciones formales, precisas y verificables para las interfaces de los componentes de software, que extiendan la definición ordinaria de tipos de datos abstractos con precondiciones, postcondiciones e invariantes.
De ahí, hice mi propia adaptación de la filosofía de Desarrollo Guiado por Contrato (Contract-Driven Development) para backends:
Los backends deben cumplir con un contrato, que define entradas, salidas y errores.
Entonces, ¿qué es un contrato? Es un conjunto de afirmaciones que contiene la siguiente información:
- Valores de entrada válidos, y su significado.
 - Valores de retorno válidos, y su significado.
 - Valores de error que pueden ocurrir y su significado.
 
En un contrato hay dos partes:
- Consumidor: proporciona los valores de entrada y espera el retorno.
 - Proveedor: espera los valores de entrada y proporciona el retorno.
 
Entonces, ¿cómo escribimos un contrato? Chequeá la próxima lección ;)