“La perfección se alcanza, no cuando no hay nada más que añadir, sino cuando ya no queda nada más que quitar”. Con esta frase de Antoine de Saint Exupéry, autor del Principito [1], quizá se resuma » a la perfección» la idea de que los seres humanos podemos llegar a complicar innecesariamente los problemas de tal forma, que al final resulte más el esfuerzo que el valor agregado de la solución.
Guillermo de Ockham propone a través de un principio filosófico que lleva su nombre – La Navaja de Ockham–que cuando dos teorías en igualdad de condiciones tienen las mismas consecuencias, la teoría más simple tiene más probabilidades de ser correcta que la compleja[2].
Tiempo más tarde, y extrapolando este valioso concepto a la ingeniería del software – aunque también válido para cualquier ámbito donde existan problemas–, se encuentra el principio KISS («Keep It Short and Simple»). Este principio, sugiere realizar implementaciones en partes sencillas, comprensibles y con errores de fácil detección y corrección, rechazando lo enrevesado e innecesario en el desarrollo de sistemas complejos.
Así como la frase de Antoine de Saint ilustra el principio de Ockham, el siguiente extracto obtenido de [3] ilustra perfectamente el principio KISS:
Cuenta la leyenda que cuando la NASA inició el lanzamiento de astronautas, se dieron cuenta enseguida de que los bolígrafos no funcionarían con gravedad cero. Para resolver este problema, la NASA contrató a Accenture (la antigua Andersen Consulting). Una década y 12 millones de dólares después, la NASA disponía de un innovador bolígrafo que escribía con gravedad cero, hacia arriba y hacia abajo, bajo el agua, en prácticamente cualquier superficie, incluido el cristal y en un rango de temperatura desde -30ºC hasta más de 300ºC. Los Rusos utilizaron un Lápiz.¹
Quizás a veces quienes trabajamos en la ingeniería del software no nos gusta utilizar lápices cuando se nos presenta una gravedad cero. Es importante reflexionar acerca del costo-beneficio de tomar una decisión o adoptar una determinada estrategia de implementación. Para ello primero se debe comprender, tal como sugiere [4], que una de las características de la solución de problemas es que siempre son imperfectas. El perfeccionismo es muy caro. Un sistema, por ejemplo puede funcionar correctamente el 99% de las veces, pero siempre existirá al menos un 1% de fallos. Hay que tener en cuenta que la cantidad de imperfección puede diferir: para sistemas de vital importancia es mayor la proporción de la perfección, pero incluso para ellos, siempre hay un punto en el que la eliminación de un riesgo no vale el esfuerzo necesario.
En segundo lugar, pudiera ser necesario aceptar que las soluciones informáticas para la mayoría de los casos son pautadas por el negocio y en un tiempo limitado, por lo que no se dispone de todo el tiempo necesario para pensar y hacer complejidades.La tecnología no es un fin, sino un medio, una herramienta. En ese sentido no debe considerarse el desarrollo de software como la construcción de una obra de arte perfeccionista y separada del tiempo (realizar un bolígrafo en una década capaz de escribir en gravedad cero), pues su finalidad es generar valor de negocio (simplemente escribir en la luna). Estos conceptos: la navaja de Ockham y el principio KISS – por cierto incorporados en la filosofía de desarrollo ágil – pueden resultar de gran utilidad y plasmar enfoques diferentes para abordar los problemas, siempre bajo la perspectiva de atacar solo lo necesario en un determinado momento.
Pero ojo, tal como se ha comentado más de una vez en este blog, no se puede hacer de esta idea un martillo y mirar de ahora en adelante todos los problemas como un clavo. Pueden existir contextos y escenarios donde es necesario y si genera valor adoptar la estrategia de solución más compleja. Y es que… ¡Sí!, este es un mundo «complejo».
¹ La historia no es exactamente real, fue tomada para este artículo por su moraleja resultante y para fines ilustrativos, se puede observar una aproximación a la historia real aquí.
Referencias
[1] Saint Exupéry de A. (2001).El Principito. Selector S.A
[2] http://es.wikipedia.org/wiki/Navaja_de_Occam
[4]Nicolai M.(2007).SOA in Practice. The art of Distributed System Design. O’ Reilly
Ojo con esa historia de la NASA el bolígrafo y el lápiz de los rusos, aparentemente tiene mucho de ficción. En efecto si hubo un programa para diseñar un super bolígrafo, pero antes de tenerlo listo la NASA también usó un lápiz.
Muchas gracias por leer el artículo y por tu aporte Leonardo. En efecto, la historia no es real, es una leyenda, tal como aparece en el articulo. Sin embargo, colocare una nota al final para que no surgan dudas. Gracias y saludos!