El diario de José Chasar

La historia de un simple informático

Primeros días de verano

Hay una cafetería cerca de donde vivo. Es bonita y agradable, quizá me gusta por el ambiente; o por las personas que atienden; o por el café con leche (maravilloso) que bebo cada día –ya sea en invierno o verano–; o puede ser, por el internet que va bien (no todos los lugares pueden decir lo mismo). ¿Cuál será el motivo? Yo creo que es una combinación de todos ellos; eso me recuerda que la vida se trata de relaciones y combinaciones, algo así como un grafo dinámico donde hay nodos que se conectan y desconectan, formando o reduciendo sus aristas con cierta frecuencia. Bueno, bueno, no quiero asustar a nadie (todavía).

Dicen que soy informático. Quizá. Aún lo sigo averiguando, hace casi 40 años que comencé a programar, recuerdo que fue primero con C, luego con C++; me gusta la sintaxis de C, esos puntos y comas por todos lados, esas llaves para indicar una nueva expresión; esas largas horas buscando los errores de fugas de memoria gracia a los benditos punteros; o sea, lo «fácil». Usted me entiende. Ahora bien, en tantos años desempeñándome como programador he aprendido muchas cosas: otros paradigmas de programación; algunos «trucos» con ciertos lenguajes; metodologías de desarrollo; lidiar con buenos programadores (y también con malos, aunque estos están más dispuestos a mejorar); tratar con clientes amables, otros no tanto. Cada experiencia es un aprendizaje. Eso dicen, ¿no?

Así es la vida de un programador, nada más ni nada menos, que, algo similar a la propia actividad de escribir código, la búsqueda de la simplicidad para reducir la complejidad. Eso me lo dijo un profesor hace muchos años cuando recién comenzaba (no recuerdo su nombre), no obstante, nunca lo tuve en cuenta –ni a lo que me dijo ni a él–. Uno es algo distraído y rebelde a cierta edad, cree –en su ingenuidad– que todo lo puede aprender por sí mismo, el ego se agranda y se olvida de los consejos realizados por viejos y experimentados personajes, algo así me pasa ahora (todo se regresa de una u otra forma), ya retirado pensaba que nadie se interesaría en mis enseñanzas, que dicho sea de paso, no son muchas, pero bueno. Algunos todavía confían en mí.

Sobre ello, hace unos días sucedió algo que me sorprendió gratamente: me invitaron a dar unas clases de programación durante el verano. La invitación vino de un señor con el cual trabajé hace algunos años que, a mi pesar, me despidió porque las cosas iban mal en la empresa (terminaría cerrando y despidiendo a todos). Pero debo admitir que siempre me trato bien, con cariño y respeto. Incluso el día que me comunico mi salida fue de manera cordial. (Un consejo: es bueno salir bien desde los lugares donde te trataron bien.)

Me convenció de dar unas clases de programación en su nuevo centro de estudio. Un centro privado, su nuevo emprendimiento. Ahora la programación y la tecnología son populares, parece ser un buen negocio. Yo creo que se acordó de mí porque yo siempre me ofrecía en dar charlas a mis compañeros de trabajo. Aunque no sé si tengo habilidades para la enseñanza, solo tengo entusiasmo por enseñar (que es diferente). Así fue como acepté dar unas clases sobre programación, con total libertad de definir el temario. A mi manera, bajo mi responsabilidad y bajo su riesgo. Me han dicho que algunos distraídos se han inscrito. Aunque no me han dicho cuantos.

Ante tal desafío he estado pensando en cómo hacer un curso de programación dirigido a seres del siglo XXI; la programación ha cambiado desde mi época de oro, aquellos años... me da nostalgia recordarlos. Ahora las cosas son más complejas, muy diversas, pero hay cuestiones que lo hacen una actividad aún desafiante, que reta al cerebro, que lo insta a cruzar la frontera del código. Esto me llevo a reflexionar que sería bueno hacer un curso donde se intentara interceptar distintas áreas del conocimiento con la idea de enseñar conceptos fundamentales de la programación, me parece, creo, una buena idea. Algo novedosa pero arriesgada.

Aunque con las ideas nunca se sabe, a veces algunos las reciben con cariño y entusiasmo, otras veces, con silencio y miradas indiferentes.

Espera. Se me había olvidado mencionarlo, mi nombre es José Chasar, aunque solo me llaman Chasar, tengo 60 años, comencé a programar por primera vez cuando tenía unos 20 años, si no mal recuerdo por el año de 1981. En un IBM PC 5150 que tenía disponible en la universidad. Me sentí totalmente enamorado por esas máquinas que podían hacer las cosas que yo les indicaba, que aunque lentas uno se sentía como un mago, esa sensación de resolver problemas es algo que siempre me ha perseguido, es por así decirlo, la única droga que he consumido (el café no cuenta, la cerveza menos). Ha mediado de esa década y después de graduarme de la universidad ya contaba con un trabajo decente que me permitió aprender muchas más cosas sobre la programación. Y también sobrevivir. Más tarde y con la llegada de Internet las cosas han cambiado mucho, por ejemplo yo también he cambiado. La agilidad mental y la vitalidad para programar por largas horas se ha ido. Así es la vida. No obstante, debo admitir algo: mis ganas no se han mermado, sigo con el mismo entusiasmo que tenía de joven. Algo es algo.

Volviendo al tema que me atañe. El curso de programación que dictaré quiero experimentar con nuevos temas y con otro enfoque. Más dialogante, no tan pasivo; me explico: quiero dar un curso donde los estudiantes participen activamente, preguntando, reflexionando, criticando, pero con alturas de miras. Similar a un guía y no tanto a un profesor. En cuanto al tema, comenzaré con conceptos que, desde mi punto de vista, son fundamentales antes de escribir ningún código. Busco crear los cimientos de sus pensamientos lógicos-computacionales (algo ambicioso, lo sé). La primera clase será sobre abstracción. Exacto, esa palabra es clave para entender la programación. Pues todo se basa en distintos niveles de abstracción. ¿Qué sentido tiene hacer un curso explicar a sintaxis de un lenguaje? Eso viene después, un programador debe ser un ser que sepa resolver problemas, independiente de la existencia de un ordenador o no. Ya mi admirado Dijkstra lo decía, aunque hay cuestiones que nunca estuve de acuerdo con él, pero eso es otra historia.

Cuando era más joven pensaba que la programación era una actividad que podía relacionarse con las artes, con las matemáticas y con la filosofía. A mi pesar nunca pude desarrollar esas ideas, quedaron ahí, en papeles dispersos que sobreviven en mi casa y ya, en suma: pasaron los años y no hice nada al respecto. Ahora con más tiempo libre quiero intentar explicar la programación haciendo uso de todo ello, ¿los alumnos lo entenderán? No lo sé. Espero que sí. Nunca he sido bueno adivinando el futuro.

Inicio del curso

El curso se llama: «Introducción a la programación desde una óptica sistémica». ¿Suena bien, no? Con «sistema» me refiero a que trataré de enseñar programación a través de otros conceptos que viven en otras áreas. Una enseñanza integral. Emplee la palabra sistema porque los conceptos que presentaré no están aislados, todos están relacionados de alguna manera. Colaboran entre sí.

Me han avisado que solo tendré tres alumnos, lo cual parece ser un logro, pues, ¿quién en su sano juicio va a un curso de programación comenzando el verano? ¿Acaso no tienen vacaciones? ¿No tiene amigos/as? ¿No tienen vida? Bueno, pudo haber sido peor. Yo esperaba que me llamaran diciéndome: «vamos a tener que suspender el curso porque nadie se inscribió», pero, dadas las circunstancias aquí estoy, esperando a los alumnos, aún falta una hora para comenzar la primera clase. Es a las 10 am, me parece que este horario de clases es razonable, no hay mucha calor y al medio día acabamos. Serán tres clases a la semana, de dos horas cada una, los lunes, miércoles y viernes.

Esta primera clase comenzaré con algo muy simple, y es, presentar la abstracción, como concepto que nos permite ocultar la complejidad de nuestro mundo, ya sea real o virtual, trayendo a colación ejemplos de las artes (simetría), matemáticas (isomorfismos) y filosofía (transparencia referencial), sobre este último concepto permítame decirle que es esencial en la programación funcional, en la construcción de sistemas fiables y con menos probabilidades de errores [1].

Bueno ya falta poco para comenzar, iré a buscar un café…

[1] La clase lleva el título de «Abstracción: Simetría, Isomorfismo y Transparencia Referencial».