Acta Académica Universidad Autónoma de Centro América |
|
Adolfo Di Mare
|
Es patético. Los programadores no somos profesionales. Siempre nos han dicho que somos aspirantes a analistas.
Revisando los periódicos, he encontrado que los salarios iniciales para programadores varían desde 17,000 a 25,000 colones por mes en el sector público. En el sector privado, el sueldo más alto que he oído mencionar es 30,000 colones.
¿Cómo es posible? El salario en empleos que no necesitan de entrenamiento especializado alguno fácilmente llega a 15,000 colones con un poquito de antigüedad. Al examinar estos salarios, pagados en el mercado de la programación, no cabe más que concluir que la mayoría de los programadores están mal entrenados: no conocen su oficio. La situación es tan grave que al hablar de un programador no pensemos en un profesional, sino en un técnico de bajo nivel, que si acaso está en una Universidad tratando de obtener un grado académico.
Los programadores debidamente entrenados no son reconocidos del montón, y el resultado es que no hay incentivos para profundizar conocimientos en programación.
¿Qué entrenamiento debe tener un programador? Obviamente, los programadores conocemos lenguajes de programación. En nuestro tiempo, los que reúnen las mejores cualidades son tres: C++, Ensamblador, y Prolog. Un buen programador debe dominarlos, aunque lo usual es que conozca muchos otros: Ada, Cobol, PL/I, Pascal, Link, CSP, SQL, Ingres, Today, Dbase, etc.
Un buen programador también conoce sus herramientas: el sistema operativo de la máquina, manejo de bibliotecas de programas, uso de generadores de aplicaciones, manejo de editores y otros utilitarios, uso de depuradores simbólicos. O sea, un buen programador conoce el ambiente en que desarrolla programas y puede usarlo para hacer su labor en un corto tiempo.
De mi experiencia personal, puedo afirmar que el uso de herramientas es singularmente importante. Un programador C que conoce bien sus herramientas es capaz de escribir un sistema de información completo más rápidamente que si usara cualquier lenguaje de cuarta generación (4GL). La diferencia cualitativa es siempre significativa, pues en la mayoría de los casos el código C++ es mucho más claro y eficiente que el código equivalente escrito en el 4GL. La ventaja del 4GL estriba en que programdores inexpertos pueden usarlo rápidamente, aunque en general el programa que producen es de calidad precaria.
Hasta aquí he descrito las pericias que es usual encontrar en cualquiera de nuestros mejores programadores. Ahora detallo nuevas destrezas que han surgido del avance en Ingeniería de Sistemas.
El programador debe ser capaz de medir el rendimiento de sus programas. Debe conocer algoritmos sofisticados, y debe poder inventarlos si no existen. Debe manejar la matemática que le permita predecir el tiempo de ejecución de un programa, y la cantidad de memoria que ocupa. Debe conocer muchos métodos para organizar los datos que manipulan sus programas. De hecho, esta es la razón que me movió cambios en la Tercera Prueba de Grado de la carrera de Sistemas de Computación de la Universidad.
Un buen programador es capaz de definir sus programas: sabe escribir especificiones, entiende qué es la documentación y sabe como crear una interfaz hombre-máquina apropiada. El programador debe ser capaz de asegurar la calidad de su programa y predecir su costo, tanto en tiempo como en capital. Es capaz de identificar los componentes básicos de un sistema, delimitándolos y organizándolos para que trabajen armónicamente. Como diseñador, es un arquitecto que define cómo deben construirse sus sistemas.
Por último, el programador es un estudioso que busca constantemente mejorar sus destrezas. Tiene el hábito de leer, y es capaz de digerir manuales con gusto y celeridad. Un buen programador es un profesional que conoce las herramientas de su profesión, las aplica con destreza, y que constantemente busca mejorar su formación.
La formación que he descrito puede ser lograda en dos o tres años de estudios superiores, pero creo que es mejor formar el programador a nivel de licenciatura. Un estudiante universitario de licenciatura podría asimilar no sólo lo que he mencionado, sino también complementar su formación con otros conocimientos afines: programación en ambientes de bases de datos, programación concurrente, programación de sistemas, programación por objetos, simulación, ambientes de programación, etc.
Cuando reconozcamos a nuestros programadores sus calidades técnicas comenzaremos a mejorar nuestros sistemas, que a la postre serán más baratos. Nuestros gerentes deben promover la carrera del programador, evitando que el buen programador se convierta a otro oficio en que tal vez no se desempeñe idóneamente.
Nuestras universidades están haciendo algunos esfuerzos para promover la creación y mejoramiento de programadores. En la Universidad Autónoma de Centro América, el Concejo Académico de la carrera de Sistemas de Computación ha incluido como Tercera Prueba de Grado para el bachillerato el tópico de programación. En la Universidad de Costa Rica, la cátedra de programación ha venido cambiando los contenidos de los cursos en los últimos tres años, y ahora se ha instaurado una secuencia de cursos que busca impartir, de forma general, las destrezas básicas del programador. En el TEC de Cartago se han venido haciendo esfuerzos en este mismo sentido en los últimos dos años.
En mi opinión, es en la UACA es donde existe una mayor oportunidad de realizar cambios, dado el ambiente de libertad académica que impera. Específicamente, en el Stvdivm Generale estoy trabajando con mis estudiantes para formarlos no sólo como analistas de sistemas, sino como programadores profesionales.
Como diríamos a la hora de almuerzo en el Mercado Central: "¡Programar no es cajeta!".
Como complemento a estas ideas, el lector puede leer la excelente monografía del profesor Edsger W. Dijkstra, padre de la programación estructurada: "Selected Writings on Computing: A personal perspective", Springer-Verlag, 1982. También le ofrezco mis escritos sobre programación en Pascal, los que con mucho gusto enviaré en diskette a quienes me los soliciten. Para esto, puede usted contactarme en la Rectoría de la Universidad.
Indice
|
|
Acerca del autor
|
|
Acerca de este documento
|
|
Principio
Indice
Final
|
Adolfo Di Mare <adolfo@di-mare.com>
Referencia: | Di Mare, Adolfo:
Licenciado programador,
Revista
Acta Académica,
Universidad Autónoma de Centro América,
Número 14,
pp [56-57],
ISSN 1017-7507, Mayo 1994.
|
Internet: |
http://www.di-mare.com/adolfo/p/licprog.htm
|
Autor: | Adolfo Di Mare
<adolfo@di-mare.com>
|
Contacto: | Apdo 4249-1000, San José Costa Rica Tel: (506) 207-4020 Fax: (506) 438-0139 |
Revisión: | ECCI-UCR, Septiembre 1997
|
Visitantes: |
|
|