7.5.05

Complejidad inhabilitante

Este extraño título para el post tiene su origen en una lista de falacias y errores de lógica (1 y 2) que he visto en escolar.

En el segundo de los enlaces, habla de la llamada 'Complejidad inhabilitante'. Reproduzco parte del texto.

"Una especie de bloqueo que ocurre cuando alguien se encuentra con un gran cúmulo de hechos particulares pero no posee los principios generales necesarios para integrar los hechos en una explicación más simple y globalizadora. ... Al no percibir principios fundamentales, no puede ordenar los hechos de forma coherente, y para aprehender el todo recurrirá con seguridad a una solución ad hoc que no servirá más que para algunos casos particulares."

Al leerlo no he podido evitar trasladar esta idea al desarrollo de software. Es algo muy común al desarrollar una aplicación hacerlo sin dedicar el suficiente tiempo a dos cosas:
  • Hablar con los usuarios, no sólo para preguntarles qué quieren, sino para ayudarles a aclarar lo que realmente necesitan, analizando con ellos el problema planteado. Una cosa es lo que el usuario pide y otra lo que necesita. El usuario puede tener en la cabeza un par de situaciones para las que quiere una solución, y lo que posiblemente no conozca sean todas las peculiaridades de la aplicación, y las interioridades de ésta. Por lo que su petición puede estar bastante alejada de lo que realmente hay que hacer.
  • Diseñar una solución que cumpla con las necesidades planteadas y que mantenga la estructura de la aplicación. Si el primer caso no se cumple la aplicación no solucionará el problema del usuario. En el segundo nos encontramos con la típica situación en la que la aplicación es una mezcla de diversos estilos y soluciones que a la larga no encajan bien y suponen un quebradero de cabeza para el mantenimiento de la aplicación.
Todo lo anterior requiere de experiencia y conocimientos. Las mismas que se necesitan en cualquier otra situación en la que aparezca el problema de la complejidad inhabilitante.

Technorati tags: desarrollo software