El arte dinámico de la programación: El programador y las herramientas

En días pasados me encontraba revisando un servicio web que había estado desarrollando con ASPs. Mi atención estaba enfocada al proceso de integrar el servicio al resto del diseño de un portal de Internet, y consultaba un manual del lenguaje mientras verificaba la interfaz de mi código. Fue entonces que reparé en que realmente no soy un experto programador de ASP. Para ser honesto, prácticamente desconozco el lenguaje. Miré con una sonrisa mis 300 líneas de código y me di cuenta de que, de no ser porque estaba usando Web Developer –una herramienta de la compañía de las ventanitas–, probablemente aún estaría escribiendo el cuerpo de mi servicio web, en lugar de ya estar revisando la interfaz. Fue así que empecé a explorar con curiosidad los componentes de mi portal: las líneas de XML, las consultas de SQL embebidas dentro de un código en C++. De hecho, me sentí orgulloso de ese código en C++: creo que escribí personalmente como el sesenta por ciento de él.�Yo aprendí a programar en los ochentas. Aprendí a programar con compiladores de línea que arrojaban oscuros mensajes de error, me hice adicto a los ambientes integrados de desarrollo que señalaban el lugar donde (más probablemente) se encontraba el error, sobreviví al fiasco de los llamados lenguajes de cuarta generación y tuve mis dudas con respecto a la programación visual. Y hoy en día trabajo con herramientas WYSIWYG que me permiten diseñar mi portal, mi conexión a servidores y la consulta de datos de un modo visual e intuitivo.

He escuchado decir que las herramientas de desarrollo de software han cambiado el rol del programador. Incluso he escuchado argumentos publicitarios con respecto a que los programadores son una especie en extinción. La verdad, yo difiero mucho de estas ideas. El papel del programador, y más en general, el del programador analista, no ha cambiado mucho desde la invención de las máquinas de Von Neumman: el programador analiza un problema, plantea una solución computacional y codifica un algoritmo en el lenguaje de su elección. Ningún algoritmo no trivial está exento de este proceso de análisis y diseño. Así como tampoco está exento del debido proceso de verificación y validación, en el que de nuevo el programador juega un importante papel.

Como verán, el rol del programador está vivo y coleando: estos algoritmos deben ser necesariamente codificados por un ser humano, línea por línea. Entonces, ¿cuáles son los beneficios que las herramientas de desarrollo le dan al programador? Estos son muchos también:
• Facilitan la realización de tareas rutinarias, como generar la conexión al servidor de base de datos, o realizar la apertura de un puerto de HTTP.
• Simplifican las tareas tediosas, tales como el formateo de pantallas y reportes.
• Automatizan el trabajo repetitivo, como la ejecución de baterías de casos de prueba.
• Permiten integrar los diferentes procesos del ciclo de vida de desarrollo de software, con herramientas que, por ejemplo, integran la documentación de casos de uso de un sistema con la creación de las clases que surgen de su diseño.
• Facilitan procesos de alta complejidad para el equipo de desarrollo. Un ejemplo claro es el control de configuraciones de software, una tarea verdaderamente titánica sin una herramienta automatizada.

Es cierto que aprender a usar estos ambientes requiere de un esfuerzo mayor que los antiguos compiladores (he pasado varias semanas comprendiendo Visual Studio Team System y Rational Architect, y todavía me falta), pero el beneficio a corto plazo para el equipo de programación con una herramienta correctamente utilizada, resulta evidente.

He terminado mi código, mi portal está completo. Y mi libro de ASP está sobre la mesa. Debo de aprenderlo. Después de todo, hay programación para rato.

Acaerca del autor
Dr. Raul A. Trejo es profesor investigador del Instituto Tecnológico y de Estudios Superiores de Monterrey, campus Estado de México. Aunque su área de especialidad es la inteligencia artificial, siempre ha sido un apasionado de la Ingeniería de Software y de la programación en particular. Ha programado en Basic, Pascal, C y sus derivados, pasando por lenguajes más esotéricos como Lisp, Scheme y Prolog, antes de dejarse convencer por la programación orientada a objetos. ASP y C# están en su mira.