Hace unos dias en una reunion conoci a un egresado de Ing. Informatica de una de las universidades surgidas a la amparo de la Ley de Promoción de la Inversión en la Educación durante el fujimorismo, y sin querer la conversacion derivo a conversar sobre el enfoque que se da a nuestra carrera en las universidades.. y fue mas o menos asi.
Comentaba sobre el hecho de que algunos egresados de una tercera universidad tenian a honra el hecho de casi no haber programado, y que cuando les toco hacerlo contrataron a alguien para que lo hiciera por ellos, actitudes como esa serian desconcertantes en la UNI o en la PUCP pero a este caballero le parecia lo mas normal del mundo, arguia que lo importante era el negocio que todo formaba parte del negocio, etc etc, y que al final el programa final es lo de menos. Un poco mas y casi se dirige al lugar comun de que el codigo es la pieza mas basica del todo y que un Ing. Civil no necesita saber colocar ladrillos para hacer su trabajo. Eh??? Si, no es raro que se llegue a dicha peregrina conclusion, ignorando que los diversos modulos de una solucion tienen una tarea intelectual detras de ellos, que no homogenea precisamente.
Vayamos por partes, si… las aplicaciones informaticas al final de cuentas deben estar alineadas a los objetivos de la organizacion, y significar un medio para la mejora de sus procesos o para lograr ventajas competitivas, hasta ahi las cosas claras. El problema que ocurre es que a veces se llega a un nivel tan abstracto en el como implementar las cosas, todo diluido en pilas de documentacion e informes a la gerencia, que en la practica tratan de enmascarar que no se esta cumpliendo los objetivos que se tenia con la implementacion o desarrollo planificado. Y nos olvidamos que dentro de nuestro ambito de competencia lo que importa es la entrega de lo realizado, la obra visible y que sea de utilidad a la organizacion.
(Aprovecho para recordar los principios del Manifiesto Agil:
Estamos poniendo al descubierto mejores métodos para desarrollar software, haciéndolo y ayudando a otros a que lo hagan. Con este trabajo hemos llegado a valorar:
A los individuos y su interacción, por encima de los procesos y las herramientas.
El software que funciona, por encima de la documentación exhaustiva.
La colaboración con el cliente, por encima de la negociación contractual.
La respuesta al cambio, por encima del seguimiento de un plan.
Aunque hay valor en los elementos de la derecha, valoramos más los de la izquierda.)
Parte de los problemas que se tiene en los procesos de desarrollo de aplicaciones vienen dados por malas estimaciones y una gestion irrealista de las expectativas del cliente, situaciones que en varios casos vienen dadas porque dichos pasos han sido dados por profesionales que han visto la informatica de manera muy ligera, osea: no saben la clase de complejidades que puede implicar el desarrollo de tal o cual funcionalidad, o no saber las limitaciones que puede tener cierta tecnologia y el impacto en los plazos de entrega que tendra el “puentear” dichas limitaciones. Se me dira que si, pero que un jefe de proyecto no esta para tirar lineas de codigo, y doy toda la razon, pero voy al hecho de la necesidad de este jefe de proyecto de haber tenido, ya sea en su educacion o experiencia previa, de un conocimiento interno de que es lo que hay detras de las aplicaciones informaticas.
Cierto, he tenido jefes que no han pasado por la programacion y han sido capaces de sacar adelante sus proyectos, pero en estos casos han tenido el suficiente sentido comun de saber escuchar a la gente tecnica que lo rodea, pero aun asi, de mi experiencia puedo decir que a un jefe que haya pasado por las trincheras es mucho mas dificil pasearlo, y que ademas te dara una estimacion fiable.
Por otro lado esta el otro perfil de nuestra carrera, el que permanece siempre detras de las lineas de codigo, si, es facil decir que con un curso de medio año ya se puede programar, pero olvidamos la importancia de una formacion matematica y logica en el perfil de un programador de calidad, la necesidad de introducir principios de eficiencia, programacion metodica, y por que no? algo de elegancia al momento de plantear las ideas en codigo.
Entonces, llegamos al punto de la importancia que tienen las bases (programacion, matematicas, logica, ciencias de la computacion) en la formacion de un ingeniero informatico, independientemente del curso profesional que luego se siga (gestion, programacion, comunicaciones), esas bases son las que nos definen y las que hacen que no seamos Administradores de Empresas con conocimientos de Informatica, que es lo que parecia el perfil de mi interlocutor de entonces.