Volver a la lista de entradas

Algunas respuestas de E. W. Dijkstra a alumnos de Ingeniería del Software (2000)

• Los chismes o artilugios no son necesariamente una mejora; considérese la sucesión

Pizarra → Proyector de transparencias → PowerPoint

• No necesito perder el tiempo con un ordenador precisamente porque soy un científico de la informática (no se les exige a los investigadores médicos que padezcan las enfermedades que investigan).

• No es asunto de la ciencia de la informática promover la "informatización", por ejemplo, desarrollando aplicaciones que requieran muchos recursos y de esta forma creen un mercado para la siguiente generación de hardware (no se les exige a los investigadores médicos desarrollar nuevas enfermedades y así crear mercado para más productos farmacéuticos).

• La tarea de la Universidad no es ofrecer lo que la sociedad pide, sino dar lo que la sociedad necesita (las cosas que pide la sociedad son fáciles de entender y no se necesita una universidad para eso; la Universidad debe ofrecer lo que nadie más puede proporcionar).

• Todos estamos moldeados por las herramientas que usamos; en particular, para bien o para mal los formalismos que usamos moldean nuestros hábitos de razonamiento y eso significa que tenemos que tener mucho cuidado al elegir qué aprender y qué enseñar, porque en realidad no es posible desaprender (hace muchos años, si yo podía tener un nuevo ayudante un prerrequisito era "no haber tenido contacto previo con el FORTRAN"; y en las escuelas de Siberia la enseñanza del BASIC estaba prohibida).

• Un programador tiene que ser capaz de demostrar que su programa tiene las propiedades requeridas. Si esto llega como una consideración posterior, es completamente seguro que no cumplirá esta obligación: solo si deja que esta obligación influya en su diseño hay alguna esperanza de que la cumpla. La simple verificación a posteriori impide esta influencia global y es, por tanto, "poner el carro delante del caballo"; pero esto es exactamente lo que ocurre en las empresas de software donde la "programación" y el "aseguramiento de la calidad" son efectuados por equipos diferentes (no es necesario decir que estas empresas entregan sus productos sin garantía).

• Las técnicas necesarias para razonar eficazmente son bastante formales; pero mientras que la programación sea realizada por personas que no las dominen, la crisis del software seguirá con nosotros y será considerada una enfermedad incurable. Y ya sabéis lo que pasa con las enfermedades incurables: atraen a los curanderos y a los charlatanes, que en este caso adoptan la forma de Gurús de la Ingeniería del Software.

• Algunos de vosotros dudáis que las mencionadas "técnicas de razonamiento eficaz", aun siendo atractivas para programas pequeños, escalen bien, (cito) "dado el abrumador tamaño y la absoluta complejidad de la mayoría de los programas." Bien; serán inútiles si tratáis de emplearlas para desenredar el horrendo lío producido por un grupo de programadores desorganizados e incompetentes. Su poder se manifiesta en la fase de construcción, cuando (i) tienden a producir textos mucho más cortos que los que se generarían de otra forma y (ii) las longitudes de las derivaciones de programas tienden a crecer no mucho más que linealmente con la longitud de los programas derivados. Por último, los programas así producidos suelen ser infinitamente mejores que la basura habitual.
Nunca debemos olvidar que los programadores viven en un mundo de artefactos, hecho que los diferencia de la mayor parte de los demás científicos. El programador no debe preguntarse cuán aplicables son las técnicas de programación correcta; debe crear un mundo en que sean aplicables. Esta es la única manera de proporcionar un diseño de alta calidad [...]

• No; me temo que la ciencia de la Informática ha sido víctima de la popularidad de Internet. Ha atraído a un creciente —por no decir abrumador— número de alumnos con muy poca inclinación científica; y en investigación solo ha servido para intensificar la obsesión prodominante (y en cierta forma vulgar) por la velocidad y la capacidad.

• Sí, comparto tu preocupación: cómo programar bien, aunque es una materia que se puede enseñar, apenas se enseña. La situación es parecida a la de las matemáticas, en donde el plan de estudios explícito se limita a los resultados; cómo hacer matemáticas es algo que el alumno debe absorber por ósmosis, por así decirlo [...]

• En la industria del software hay muchas empresas para las que no está claro que la ciencia pueda ayudarlas; que la ciencia deba ayudarlas tampoco está claro.

Austin, 28 de noviembre de 2000
Prof. Dr. Edsger W Dijkstra
Dpt. of Computer Sciences
The University of Texas at Austin

versión original del documento completo

Volver a la lista de entradas