Hace ya mucho tiempo leí un artículo de Nic Ferrier titulado algo así como Piensas que eres un ingeniero, pero no lo eres. Nic habla de los ingenieros de software, y de por qué cree que en realidad no lo son.
Esta es una discusión que tengo conmigo mismo muchísimas veces. Soy un ingeniero, o no lo soy. Me gusta pensar que sí lo soy, pero ¿me gusta pensar así porque es lo que he estudiado? Como he dicho, es una lucha interna que no termino de ganar o perder.
Bueno, pues este artículo va en la dirección de que los ingenieros de software, los que nos dedicamos a crear software, en realidad no somos ingenieros.
Y estos son los puntos con los que fundamenta su opinión:
Me pueden enviar a la cárcel si mi trabajo no funciona o si mata a alguien y me tengo que preocupar por ello. Estoy sujeto a unas normas y requerimientos que funcionan bajo unas leyes físicas. Tú, como ingeniero de software, no eres más que un crío creando cosas que, con mucha suerte, funcionan sin errores durante una semana. Yo soy un ingeniero. Tú, no.
Los ingenieros tienen leyes físicas que gobiernan lo que pueden y lo que no pueden hacer. Los programadores apenas tienen restricciones fijas.
¿Cuáles son las leyes fijas de la ingeniería del software? Recursos disponibles para la aplicación, tamaño de memoria, espacio en disco, tiempo de acceso a memoria, tiempo por instrucción de la CPU,… ¡ninguna de ellas es una restricción!
De hecho, las únicas restricciones físicas que son aplicables podrían ser: velocidad de la luz, velocidad de los electrones, densidad de información almacenable en ciertos materiales. Pero todavía no se ha alcanzado su límite.
Hacer software no es una ingeniería, pero llamarlo así tiende a resultar en soluciones de ingeniería. Los ingenieros construyen cosas que no matan a gente y que duran durante mucho tiempo.
La durabilidad en sí no es una propiedad que deberíamos buscar en el software, por las mismas razones por las que hacer software no es una ingeniería. El entorno en el que vive el software es tan cambiante que no merece la pena hacer que las cosas duren
Si hay una cosa que sabemos del software, es que va a tener que ser modificado en el futuro
Después de leer mis notas (ha pasado mucho tiempo desde que leí el artículo), estos argumentos me siguen pareciendo flojillos: ¿que no hay leyes físicas que limiten el software? Meh, discutible. ¿Que no es una ingeniería porque el entorno es muy cambiante? Hmmm, no me convence para nada que esa pueda ser una razon.
Lo dicho, aquí sigo con mi lucha interna.