Pero, ¿eso no se podía haber previsto?. Esta frase la he escuchado miles de veces cuando un software desarrollado se comporta de una manera inesperada. Las personas que no están involucradas en la construcción de la aplicación, se preguntan como es posible que tal o cual comportamiento no se haya pensado de antemano, y que por tanto ahora haya que dedicar un tiempo valioso a corregirlo.

Lo primero que hay que saber, es que la informática en general, y el desarrollo de software en particular, no es una ciencia exacta. No podemos ni debemos compararla con otras ingenierías, en las que todo puede calcularse y analizarse de antemano. Comparado con cualquier proyecto en el que se construya algo, no hay nada tan difuso, abstracto, impredecible y variable como una aplicación informática. En la mayoría de los casos, por no decir en todos, la persona que solicita el sw, no sabe lo que quiere, ni como lo quiere. Partiendo de esta base, ¿como se pretende que salga bien a la primera?.

Lo que quiero dejar claro es que esto no es un defecto, es solo una característica, y que por tanto debe ser asumida por todas las partes, desarrolladores y usuarios.

Los "fallos", aunque realmente esta palabra no es la más apropiada, deben gestionarse como un aspecto más del proyecto. Los usuarios, por su parte deben comprender que esto seguirá ocurriendo se pongan como se pongan, pero que su colaboración para detectarlos e informar al equipo de desarrollo es indispensable. Los programadores, por su parte, no deben ver dichos "fallos" como algo personal, es decir, como algo que han hecho mal profesionalmente, deben verlo simplemente como lo que es, un aspecto más de su trabajo.

Como contrapartida a esta imprevisibilidad, el software es infinitamente más fácil de modificar que cualquier construcción de las otras ingenierías con las que pretendía compararse, así que simplemente, aceptemos las caracterísiticas desfavorables y explotemos las favorables.