Conversando con un muy estimado amigo psicólogo de profesión, charlabamos sobre el concepto de “Caja Negra” dentro de la industria de TI, el cual notamos que es un concepto de ambas profesiones:
"Es una metáfora para designar aquel elemento estructural de un modelo abstracto sobre el funcionamiento de un sistema que se halla entre la entrada (input) y la salida (output)"
Esta cita es sacada directamente de psicología, pero el concepto es similar a lo que es en programación y fácilmente aplicable.
El concepto es simple si lo pasamos a algo más digerible, imaginemos un lavado de coches automatizado, al ingresar nos pedirán salir del coche y dejarlo en la entrada (Input), automáticamente se va moviendo y pasando por unos túneles que nosotros no vemos y no tenemos acceso, nos pediran esperar unos 15-10 min, terminado este lapso de tiempo saldrá nuestro coche realmente limpio y como nuevo (Output).
Todo el proceso automatizado que no supimos cual fue y que el coche no estuvo visible es la “caja negra”.
Este concepto es muy fundamental en mi día a día, por que todo el tiempo nos enfrentamos a cajas negras: librerías externas, librerías internas, service providers, helpers, utilities, métodos que solo cargas, le envías parámetros (Inputs) y te retornan algo (Output).