Ingenieria de software vrs. ciencias de la computación

Aunque aun esta en debate que la ciencia computacional es una ciencia como tal. En las ultimas semanas he tenido esta comparativa en la cabeza desde que hable con un fisico de la USAC en un sabado de trollware libre. Me gustaria compartirlo con la mis pocos lectores :).

A diferencia de otras universidades la USAC (donde yo estudie), tiene como nombre en la carrera «Ciencias y Sistemas» que al menos que alguien me corrija se refiere a Ciencias de la Computación y Sistemas de información.

En los tiempos de universidad y estudio recuerdo que la gente maldecia grandemente a cursos como:

  • Compiladores
  • Sistemas Operativos
  • Teoría de Sistemas
  • Arquitectura del computador y ensambladores(ese si lo maldije yo por la dificultad :P)

Los principales argumentos que escuche:

  • Enseñan cosas viejas
  • Enseñan cosas que no sirven para la vida
  • Que hueva aprender algo que las herramientas ya hacen

Esto debido al ¿mal? enfoque que ha tenido la carrera respecto a lo que se debe estudiar. Como en los post anteriores que hice acerca de ingeniería en la USAC, resalte el hecho de que la carrera tiene 2 areas bastante contrastadas. Y en lugar de complementar la ingeniería de software con las ciencias computacionales o viceversa se producen sentimientos encontrados porque la mayoría de gente solo quiere aprender a fabricar software y ya.

No digo que lo anterior sea malo, sin embargo en un ambiente donde conviven las 2 areas aparecen catedráticos enseñando cosas practicas para producir software (como en los cursos de Software Avanzado en la era Contreras) vrs. cosas muy teóricas que son la base de la computación como la conocemos (como en los cursos de Arquitectura del Computador con Escobar).

Por ejemplo en Estados Unidos se suelen hacer combinaciones más digeribles por decirlo asi. Como en el MIT donde se combinan Ciencias Computacionales con Ingenieria Electronica. Pero siendo realista en guate hay que hacerle huevos como se pueda y no culpo a los genios que se han ido de guate. Es de lo mejor que pudieron hacer.

Y es que en realidad la ingenieria de software no se trata de entender como funcionan las cosas fondo. Se trata de entender teorias para hacer diseños de software funcional y entregarlo a tiempo o al menos intentarlo.

Por ejemplo un ingeniero de software no se deberia preocupar de los algoritmos de planificacion del sistema operativo asignen el segmento de memoria que el considera correcto para su aplicación. El a lo mucho se debería de preocupar por saber que el sistema operativo que elegiría tiene buen rendimiento y soporta sus herramientas.

Sin embargo las ciencias computacionales son un area totalmente diferente donde el objetivo contrario a la ingenieria de software si es entender como funcionan las cosas y en dado caso mejorarlas.

Podriamos tomar a Torvalds como el ingeniero de ciencias computacionales lidiando con cuestiones de computabilidad, y a Young o Ewing como los ingenieros de software que hicieron del trabajo de Torvalds uno de los productos más exitosos a nivel empresarial (Red Hat le dicen :P).

¿Entonces que propongo?

  • Si tanta fuera la gana de dejar a un lado el aprender como funcionan las cosas pues cambiar el nombre de la carrera a Ingeniería de Software o separarlas. Si ahora hasta Ingeniería Ambiental hay y los cursos se parecen a Industrial. Asi no habría gente quejándose de porque aprender como funcionan las cosas y que por ejemplo no los dejen usar las Collections Frameworks de Java en cursos de estructuras de datos.
  • O si en verdad se quiere tomar lo mejor de los dos mundos pues al menos aclararle esto a la gente, para que ya no surjan excusas como las anteriores.

¿Que opinan ustedes?

29 Replies to “Ingenieria de software vrs. ciencias de la computación”