Como programador y como maniático del orden me gusta mucho el concepto de «caja negra» y lo uso con frecuencia. También me resulta muy apropiado al explicar a los clientes de nuestro software de gestión documental en qué consiste la gestión de procesos (o workflow), pero en muchas ocasiones noto que mi interlocutor no entiende lo que quiero decir.
La «culpa» es de la popularidad de las «cajas negras» de los aviones, los dispositivos que graban las conversaciones de los pilotos y los datos de los instrumentos de vuelo. Cada vez que se estrella un avión en cualquier lugar del mundo la aparición o no de sus cajas negras se convierten en el dato más relevante para los periodistas.
Y no, las cajas negras a las que me refiero al hablar de gestión de procesos no son las que llevan los aviones, que además son naranjas.
Creo que oí por primera vez esta expresión en una clase de electrónica. El concepto era en este contexto muy realista porque, efectivamente, en muchos dispositivos electrónicos existen físicamente cajas negras de plástico dentro de las que hay componentes electrónicos y tienen unos conectores para enchufar cables con una señal de entrada y otros para obtener una señal de salida. Esta es la imagen visual que tengo cuando oigo o utilizo la expresión «caja negra».
Lo interesante es que el concepto se puede generalizar a otras disciplinas, como la programación informática o la gestión de procesos.
En gestión documental, por ejemplo, lo definiría así:
«Una «caja negra» es una tarea que se realiza sobre un documento o expediente que se recibe en un determinado estado (con unas determinadas características) y que lo devuelve en un estado diferente.»
Con un ejemplo (el recurso del torpe, o sea, mío) es más sencillo: dentro de la gestión de una compra en una empresa, una de las tareas es aprobar y firmar digitalmente el presupuesto. Al definir todo el proceso, en este punto concreto tengo un documento (presupuesto) que alguien firma y aprueba. No sé cómo lo hace, si utiliza un programa externo, si la firma está en un DNI o es un certificado software… lo importante, al definir el proceso completo, es que al final de esta fase tengo el documento firmado y aprobado.
Lo interesante del concepto, y la razón de que esta «caja» se diga que es «negra» es que podemos utilizar esta etapa sin saber cómo se realiza, simplemente conociendo la «entrada» y la «salida». Separamos el diseño del procedimiento, la definición de las etapas, del problema de saber cómo realizar cada etapa.
Este «abstracción» es muy importante para definir procesos complicados y que afectan a personas con conocimientos y habilidades diferentes. Una de las reglas para resolver problemas complicados es dividirlos en pequeños problemas más sencillos y esto se consigue utilizando cajas negras, «componentes» que ensamblamos para construir el proceso completo.
En programación se lleva utilizando esta técnica desde hace muchos años. Antes se llamaba programación estructurada pero se ha perfeccionado en la programación orientada a objetos. Los programadores utilizan «objetos» creados por otros programadores (o ellos mismos, previamente) y los unen para formar un programa mucho más complicado que cada objeto individual. Lo importante es que no sé cómo funciona cada objeto, ni me hace falta. Solo sé que le paso un valor o parámetro como entrada (por ejemplo un documento en PDF) y me devuelve otro (por ejemplo, ese mismo documento firmado digitalmente). Obviamente podríamos llamar a esto «programación con cajas negras» pero parece difícil cambiar el nombre a estas alturas.
La programación orientada a objetos, como la gestión de procesos, se beneficia de la «modularidad» de las cajas negras para diseñar programas o procedimientos de una forma rápida y visual sin entretenerse en primera instancia en el detalle de cada tarea concreta. De esta forma se avanza muy rápidamente sin tener que resolver los problemas asociados a cada etapa en esta primera fase de diseño de la solución.
Y hay una ventaja adicional: definido un proceso con múltiples tareas (cajas negras independientes) se puede mejorar alguna de ellas sin que cambie el proceso general, simplemente asegurándonos de que la caja negra (tarea) que cambia mantiene los mismos parámetros de entrada y salida. Por ejemplo, si cambiamos la forma de firmar digitalmente los documentos, el proceso de compra no cambia en absoluto ya que las mejoras en la firma quedan «encapsuladas» en su caja negra particular y el resto de tareas no se ven afectadas.
Espero que después de enumerar tantas ventajas, desde ahora cada vez que te reúnas con un grupo de personas para hacer algún trabajo en grupo lo veas como un reparto de cajas negras que cada uno tendrá que preparar y otro ensamblar. Es una forma estupenda de delegar tareas, y asignar a cada uno la que mejor se le dé.
Pues aquí de visita y leyendo como siempre y en toda circunstancia tan interesantes cosas.
Buena semana.
Saludos.