¿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.
Muy interesante Jose, trabajo en esto desde hace y ciertamente reflejas las peculiaridades de los proyectos de desarrollo de sw
ResponderEliminarSaludos
Gran verdad.
ResponderEliminarNo sé como será ahora, pero en mi época de estudiante no era raro ver cómo licenciados en informática iniciaban también estudios de filosofía.
Saludos José.
ResponderEliminarExcelente artículo. Te comento:
Los egresados de los Programas de Gerencia de Proyectos en Venezuela desde la Fundación Gerencia de Proyectos en Venezuela u la UCV son en un 85% del área de Tecnología de Información y Comunicación. Es decir, participan en la Gestión de Proyecto de TIC. Algo que hemos evidenciado para el logro del éxito de los proyectos es la incorporación a la Gestión Gerencial de las áreas de conocimiento del PMI como son: Gestión de las Comunicaciones del Proyecto, Gestión de los Interesados del Proyecto, Gestión de los Recursos Humanos del Proyecto. Con un peso equivalente a las áreas de conocimiento tradicionales. Al igual que la Gestión Técnica.
Este comentario ha sido eliminado por el autor.
ResponderEliminarEl artículo me ha gustado y estoy bastante de acuerdo en su gran parte. Sin embargo, hay un punto en el que creo que se comete un grave error que perjudica a la informática por cuanto oculta ciertos aspectos de esta rama de la ingeniería, que hace que se confunda su verdadera condición.
ResponderEliminarEn primer lugar la relación que hay entre las ingenierías y las ciencias en las que se basa no se explica. Esto es necesario hacerlo si se van a hacer afirmaciones como las que se hacen en este artículo. La Arquitectura no es tampoco estrictamente hablando una ciencia, sin embargo, para sus cálculos es necesario apoyarse en varias de ellas, como la física, las más obvia e importante. Sin embargo, para el diseño estético de los edificios, no hace falta ninguna ciencia exacta (si de otro tipo). Esto significa que tiene varias capas.
La informática es muy similar. Los ordenadores funcionan mediante circuitos electrónicos diseñados en función de principios físicos. Para los programas se utilizan proposiciones lógicas que están directamente relacionadas con el álgebra y las matemáticas. Todas ellas ciencias completamente exactas. El SO UNIX funciona como un reloj, es preciso y siempre hace lo que ha de hacer y lo que se espera de el, salvo ciertas tolerancias presentes en todo proyecto de ingeniería.
Por tanto, ¿qué pasa con el software? (sic). Pues pasa que tiene varias capas, en este caso, además de una base científica basada en ciencias exactas, tiene por encima otras sobre todo sociales y comerciales. Hacer un proyecto informático preciso basado en un SO como el UNIX, que sea comercialmente viable, deseado y entendible por el usuario medio, seguramente no es posible. Por este motivo se han creado productos COMERCIALES que se alejan de lo que en su definición de origen sería el ideal.
La culpa no es de la informática, sino de nosotros como sociedad. La culpa es del mercado. Hacer un sistema informático que no tenga cuelgues inesperados ni sea vulnerable a virus, es científicamente posible, y en caso de que algún día se llegue a Marte, así será el que tenga el ordenador de a bordo.
Saludos