Cuáles son los mayores problemas en la ingeniería de software?

El Problema de la Higiene.

Un Factor de Higiene es un término utilizado por el psicólogo Frederick Herzberg, que escribía sobre la satisfacción en el trabajo; pero también se aplica a otras cosas. Esencialmente, un Factor de Higiene es una propiedad de un servicio, trabajo, producto, etc. que nunca puede proporcionar satisfacción positiva, pero puede proporcionar insatisfacción si está ausente. Esto suele deberse a que es algo que se supone que está ahí. La higiene en sí misma resulta ser un gran ejemplo: a ningún restaurante se le ocurriría poner un anuncio que dijera "¡Todos nuestros cocineros se lavan las manos después de haber ido al baño!". Esto es ciertamente una buena propiedad de un restaurante, pero todo el mundo lo asumiría como cierto de todos modos.

Desgraciadamente, con el software, cosas como la seguridad y la fiabilidad -que son mucho más difíciles de ofrecer- tienden a comportarse como factores de higiene para el grueso de los usuarios, con la excepción de unos pocos compradores corporativos extremadamente técnicos. Es el mismo problema; poner "¡este programa no bloqueará su ordenador!" o "¡ejecutar este programa no hará que pirateen su ordenador!" en su anuncio no hará que el producto sea más atractivo para la mayoría de los clientes (excepto, posiblemente, los compradores de servidores corporativos)

Y este es un problema que todo gestor de software conoce. Cuando un programa tiene un fallo de seguridad catastrófico, ¿qué pasa cuando se descubre? Que se parchea. La gente no deja de usar el programa. Por lo general, debido a una combinación entre la inercia del cambio (o lock-in) y la seguridad como higiene.

¿Qué les dice esto a los fabricantes de software? Que no se molesten en hacer su software seguro, porque si se toman el tiempo de hacerlo, su competidor les ganará en el mercado. Cuando aparezcan sus fallos de seguridad, simplemente se les permitirá parchearlos. La gente no se cambiará a su programa. Y usted quebrará.

Lo mismo tiende a aplicarse a la fiabilidad, la compatibilidad, la prueba de futuro, e incluso los factores que son invisibles para los usuarios, excepto con el tiempo - como la calidad del código (que sólo es visible para el usuario en términos de velocidad y eficacia de las actualizaciones). Y está mordiendo la informática y el software en todo tipo de lugares.