Buscar este blog

7 de septiembre de 2012

Algo pasa con el Software



¿Qué tendrá la Ingeniería del Software que la hace tan diferente a las demás? He aquí algunas claves:



  • El software “no se ve”. Las demás ingenierías son comprensibles para el ciudadano medio. Los productos tienen entidad física y cualquiera puede opinar sobre la calidad de una obra terminada (carretera, edificio, coche, barco, avión, nave espacial, etc.) y también sabe opinar sobre el progreso de la obra en curso. Lamentablemente, ocurre con demasiada frecuencia que el usuario de un sistema software no sabe lo que quiere cuando lo está demandando, no sabe opinar sobre el progreso del proyecto y no sabe si el producto final es bueno o malo. Tampoco es muy predecible el ritmo de producción. Todo lo que rodea al software está rodeado de un omnipresente relativismo.
  • Los productos software son muy complejos. Incluso el edificio más inteligente hace menos cosas y está afectado por menos variables que muchos sistemas de información. Por inofensiva que parezca una aplicación software, siempre tiende a evolucionar de manera descontrolada. Cuando el sistema se pone en producción (no siempre), las tareas del mantenimiento, adaptaciones e incorporación de nuevas funcionalidades, lo alejan en poco tiempo del diseño original.
  • No es, ni será nunca, una ciencia exacta, susceptible de ser automatizada en alto grado. El software tiene un claro componente artístico, ligado a la experiencia de los individuos y al fenómeno creativo. Las herramientas sólo pueden automatizar una parte muy pequeña del proceso. Programar es un trabajo intelectual, muy difícil de “industrializar”.
  • Es una disciplina aún joven, en la que los que controlan el conocimiento sobre el producto final (ingenieros de sistemas, programadores, analistas, testers, etc.) utilizan técnicas que rara vez dominan los encargados de gestionar el trabajo. Los esfuerzos por controlar el trabajo de estos profesionales “desde dentro” (e.g. revisando líneas de código) se han revelado inútiles.
  • Tiene un marcado carácter “social”. Muchos programadores y jefes de proyecto piensan que trabajan en un sector tecnológico, pero un proyecto software rara vez fracasa por motivos tecnológicos (e.g. no existe un parche de sistema operativo, no funciona la indexación de la base de datos, la capacidad de cálculo es insuficiente, etc.). Los proyectos software, sobre todo en informática de gestión, fracasan la mayoría de las veces no por la innovación tecnológica que suponen. ¡Lo único que a lo mejor pasa es sencillamente que Pepe no se habla con Juan! La ausencia de “habilidades humanas” explica muchas veces el porqué de la imposibilidad de cerrar los requisitos, de superar las pruebas de aceptación, de la baja productividad, del excesivo re-trabajo, retrasos, sobrecostes, etc.
¿No estaremos trabajando más bien en un sector donde la Sociología tiene más peso que la Tecnología?