lunes, 6 de abril de 2009

Entre la formación y la realidad.

Creo que hay una gran brecha entre la orientación que brindan las distintas carreras de sistemas y la realidad del mercado del desarrollo de software, por lo menos aquí en Buenos Aires y con respecto a la UBA (la Universidad de Buenos Aires, que es la universidad pública, gratuita y –por lo menos para las carreras que nos ocupan- de acceso irrestricto).

IMHO, por un lado el mercado requiere programadores para satisfacer una demanda creciente (incluso en estos tiempos de crisis) de desarrollo, mantenimiento (sobre todo), adaptación o implantación de sistemas de gestión de la información. Sistemas de pago, de facturación, de cuentas corrientes, de control de la producción, etc., y cada vez más orientados a negocios o rubros específicos (panadería, gestión de un taller mecánico, de una tienda de ropa), donde pequeñas empresas o equipos de desarrollo y profesionales independientes encuentran un nicho al que no pueden llegar los sistemas más conocidos como SAP o Tango (supongo que sólo tiene vuelo local, pero es muy conocido aquí).

Desde el punto de vista de la programación o codificación estos sistemas no son muy complejos… de hecho no son complejos en lo absoluto. Como se mencionaba hace algún tiempo en ¿Aburrido?, básicamente existe una base de datos que representa objetos y transacciones de la vida real, un software que materializa en múltiples pantallas de ingreso las reglas que indican cómo y cuándo esa información puede ser actualizada y un montón de reportes a través de los cuales es distribuida a través de la empresa o, hablando más en general, la organización.

Cada sistema tendrá algunas funcionalidades únicas (si no es así probablemente esté condenado al fracaso) o problemas particulares que representarán un verdadero desafío, pero no suelen representar más que un pequeño porcentaje de la funcionalidad total, y muchas veces son extras más orientados a diferenciarlo en la venta que al uso real y cotidiano.

El éxito o fracaso de un proyecto dependerá, más que de la pericia o ingenio de los programadores para crear algoritmos complejos que resuelvan problemas complejos, del conocimiento que posean, tanto éstos como los analistas y líderes del proyecto, del negocio que están modelando.

Este conocimiento tiene más que ver con facturas, recibos, remitos, balances, arqueos, tickets, inventario, impuestos, control de costos y esas cosas que con optimización, índices, grafos, métodos de ordenamiento, operaciones por ciclo de máquina, lenguajes, compiladores.

Eso por el lado del mercado.

El problema es que, del lado de la formación, las carreras de sistemas con contenido de programación poco y nada tienen que ver con el mundo de los negocios, y viceversa. Esa fue siempre mi sensación. Para este artículo estuve haciendo un poco de investigación tratando de verificarla o refutarla.

De las carreras de grado de la UBA, las que tienen algo que ver con sistemas son:

Más o menos a ojo (espero no haber pifiado mucho, si alguno de ustedes es o fue alumno de esas carreras me gustaría conocer su opinión al respecto), por los nombres de las materias, se deduce que:

  • Para Análisis de Sistemas (Fc. de Ingeniería, 1739 alumnos) el 27% de las materias están orientadas a la programación propiamente dicha, y sólo el 7% tiene que algo que ver con lo administrativo, lo contable o la gestión de una organización.

  • En Ingeniería en informática (Fc. de Ingeniería, 3194 alumnos), la programación ocupa entre el 26 y el 33%, contra un 4%, 2% y 15%, con la salvedad de que éste último porcentaje corresponde a la Orientación en Sistemas de Producción, por lo que imagino que estará enfocado a esa área.

  • En la Licenciatura en Ciencias de la Computación (Fc. de Cs. Exactas, 1573 alumnos), los porcentajes son 38% contra… 0%. 38% para el lado de la programación, por supuesto. Debe ser duro para un egresado de esta carrera enfrentarse a un ERP o a un CRM armado sólo con lo que la universidad le ha enseñado.

  • En la Licenciatura en Sistemas de Información de las Organizaciones (Fc. de Cs. Económicas, 1566 alumnos) nos encontramos que el estudio acerca del funcionamiento de la organización ocupa el 29% de la carrera (menos mal, ya que es de la Facultad de Ciencias Económicas), pero la programación sólo un 12%.

Pueden consultar la lista de materias (fuente oficial aquí, siguiendo el vínculo de cada carrera), cuáles conté para uno y otro lado y cuáles dejé afuera, aquí. La cantidad de alumnos proviene, desgraciadamente, del Censo de Estudiantes 2004, que es el último disponible (ese vicio tan habitual en la cosa pública Argentina, de ir a ciegas por la vida).

Es obligatorio aclarar que esto no dice nada acerca de la competencia de los profesionales que egresan de esas facultades (habrán buenos y malos en todos los casos). La experiencia aporta el resto y si hay algo que hace (en mi opinión) a la UBA una de las mejores universidades (seguro que de Argentina y puede que de Latinoamérica) es que sus alumnos salen con una innegable capacidad de seguir aprendiendo y enfrentarse a nuevos problemas, gracias también a que el resto de la plantilla brinda un conjunto de herramientas teóricas de carácter general que el profesional puede adaptar a su situación específica. Finalmente unos tendrán que aprender qué es eso de la partida doble y otros qué es una lista doblemente enlazada, si es que lo necesitan.

Se me dirá que se requiere de profesionales de más de una de esas carreras para completar un equipo. Cierto. En los papeles. Es verdad que en un proyecto mediano o grande habrán analistas (probablemente egresados de económicas) que interpreten el negocio y lo transmitan a los programadores.

Pero yo veo eso no como una característica inherente a los equipos de desarrollo sino como un problema (tal vez generado por la segmentación de las unidades de formación, las universidades) que afecta directamente al mercado de software “de gestión”.

Para un producto que pretenda concentrarse y especializarse en un nicho pequeño (lo que llamamos con cariño “el programita del verdulero”) un equipo de desarrollo compuesto por analistas y programadores es extremada e innecesariamente caro.

En general es un nicho cubierto por uno o dos profesionales que se ocupan de todo, incluso del management de su propio emprendimiento. Si son egresados de alguna de las carreras mencionadas deben superar un duro aprendizaje acerca de “la otra mitad” del negocio, para la que la carrera no los ha preparado.

Recordemos que en conjunto los sistemas de gestión representan la gran mayoría de sistemas existentes, los más cambiantes y dinámicos (tanto como los negocios que soportan), y por ello los que requieren más mano de obra en desarrollo y mantenimiento. Finalmente es donde van a trabajar la mayoría de los programadores, analistas, líderes de proyecto o profesionales independientes con cualquier orientación.

Pero lo que la universidad está produciendo es una mano de obra sobre calificada técnicamente (son los que o se aburren en el trabajo o resuelven los problemas más simples con los algoritmos más inútilmente complejos y eficientes, o no entienden los requerimientos) o en conocimiento del negocio (que producen ese software que resuelve exactamente lo que el usuario necesita pero que por dentro es un desastre y que finalmente se vuelve imposible de mantener o modificar).

Lo que sucede finalmente es que prima la realidad, la necesidad del mercado, y los profesionales se ven obligados a complementar su carrera con experiencia y cursos. En este contexto devalúa el título obtenido. Antes de llegar a ese punto (del que creo que hoy por hoy estamos lejos, pero acercándonos progresivamente) la UBA debería orientar alguna de esas carreras hacia un contenido más balanceado. Una carrera de la cual egrese un profesional que pueda programar algoritmos simples (validaciones, búsquedas, interacción con bases datos, cálculos, reportes) y que conozca el funcionamiento administrativo de las organizaciones (circuitos administrativos, documentos, conceptos contables básicos). Creo que la Licenciatura en Sistemas de Información de las Organizaciones es la que más se acerca, más que nada por el contexto que brinda la Fc. de Cs. Económicas, su proximidad con la carrera de Administración de Empresas y la de Contador.

6 comentarios:

Cerebrado dijo...

Yo estudié en la UTN, y tuve materias como Análisis de Costos, Investigación Operativa o Estructuras de las Organizaciones. Claro, eran otros tiempos, y era otro plan, uno muy viejo... tan viejo que la carrera duraba 6 años.

Pero creo que las carreras de ciencias exactas necesariamente tienen que tener un desfasaje importante con la realidad. Porque la realidad es cambiante.

En medicina, el cuerpo humano no cambia tan rápido. En abogacía, las leyes tampoco varían mucho. Ni hablar de las carreras artísticas.

Entonces en las de ciencias exactas (todas las ingenierías) se les enseña a pensar y a resolver (Ingeniería = usar el ingenio)

Si de la UBA salís capacitado para aprender, entonces creo que cumple bien su misión.

Improbable dijo...

Yo, más que la orientación, critico el contenido: hay gente que sale de la facultad programando como la mismísima mierda (creo que del único caso donde no conozco un mal programador es de exactas).

Yo he tenido (an. sistemas, fiuba) matemática financiera y contabilidad, como electiva (una pena que no fuera obligatoria). De todas maneras, debo decir que no es algo que no se pueda aprender en quince minutos: la matemática es de secundario y los conceptos sencillos e intuitivos.

Coincido con Cerebrado, las carreras que tienen algo que ver con las ciencias, necesariamente tendrán algún desfasaje con el mercado: no se puede seguir las modas del mercado y pese a lo que se diga, los conceptos nuevos no salen como hongos después de la lluvia, son escasos: lo que abunda en el buzzwording marketinero.

BlackTigerX dijo...

ese problema existe practicamente a nivel mundial, al menos en el continente americano, en general asi es

AcP dijo...

Odio llegar tarde a mis propias discusiones. Perdón, un día atareado en el que apenas tuve tiempo de moderar sin leer más allá del autor (ya los conozco y sé que si bien a veces escriben gansadas -las menos- por lo menos no ponen malas palabras fuera de lugar ni faltas de ortografía).

@Cerebrado: Ok, los negocios cambian rápido... pero los sistemas administrativos de soporte siguen siendo más o menos los mismos... es decir: todos compran, venden, pagan, reciben, liquidan sueldos, hacen la contabilidad, pagan impuestos (bueh, algunas por lo menos...) con los mismos circuitos, ¿y no es que son estos la mayoría de los sistemas que se desarrollan? Hasta las empresas más innovadoras y revolucionarias tienen que comprar y facturar como la que menos.

Si, la UBA cumple bien su misión, sólo digo que puede haber espacio para una carrera más... digamos... entre exactas y económicas (menos "exacta" y más "económica") ¿"Desarrollador de sistemas de información y gestión"?

@Improbable: Los planes de estudio son una pinturita, una hermosa expresión de buenísimas intenciones. Entonces ¿es el contenido o los profesores y alumnos? A unos por dejar pasar y otros por no esforzarse lo suficiente y "tirarse a chantas". Igualmente (y esto lo digo desde mi humilde experiencia) por mejor y más exigente que sea el profesor el que sólo quiere aprobar aprueba y listo y después en su vida laboral tira todo a la basura y hace lo que quiere, es inevitable. ¿La chantada (en uno y otro lado) está escrita en nuestra idiosincrasia latinoamericana (digo, por el comentario de @BlackTigerX)?

@todos: raro, nunca consideré el desarrollo de software de gestión como una ciencia... por eso me siento en otra rama, un poco pero no del todo alejado de la gente de exactas o ingeniería... Pero claro, yo no aprendí a programar en la facultad (vengo de económicas, no os olvidéis). Más bien fui aprendiendo lo que necesitaba para engendrar esos sistemas y circuitos que (eso sí) me enseñaron a ver y analizar por todos lados. Supongo que soy un analista funcional renegado.

Unknown dijo...

The computer scientist as toolsmith II [PDF], Fred Brooks.
¿Y si les sacás lo que llamás materias orientadas a la programación a las carreras que no son de exactas? De yapa mejoraría el código en general… =P

Improbable dijo...

Ah... mi estimado, bastante me cuesta definir el problema con las facultades como para encima pensar en una solución.

Creo que la principal falencia es no ejercitar el pensar, más que el hecho de que profesores y alumnos nos tiremos a chanta.

Como se podría ejercitar el pensamiento?, insisto, no tengo idea, pero me gustaría pensar como hacer para que el hacer una carrera universitaria esté más enfocada a generar o fortalecer las habilidades (habilidades, no solo conocimientos) necesarios para ir por la vida profesional.