Cuando comencé la carrera de analista de sistemas, me acuerdo de haber tenido materias como álgebra, análisis matemático, estadística, introducción a sistemas, otra que se llamaba arquitecturas de computadores, etc.; pero hubo una, sólo una, en donde su nombre no me ayudaba a descubrir de qué se trataba. Hay que tener en cuenta, que yo venía de un bachillerato orientado a ciencias sociales (sí lo sé, nada que ver), muy desvinculado a lo que luego elegiría como estudio terciario. Las demás te dabas una idea de cómo venía la cosa, pero con programación (esa era la materia) no sabía con lo que me iba a encontrar.
Recuerdo bien el horario de cursada de ese primer año en el instituto. Programación era el que más carga horaria tenía, para complicarme aún más. La primera materia del día lunes resultaba ser una de las "conocidas" y después de un break, ya de 10 a 12:05 venía programación. En ese break, charlábamos entre los que cursabamos sistemas sobre la materia que venía, por lo menos me enteraba que no era el único que estaba perdido, otros habían ido a la técnica y tenían como una base.
En ese pasillo, mientras esperábamos, mirábamos pasar gente y sacábamos conclusiones de quien sería el profesor. También me llamaba la atención la gente que iba llegando a ese primer piso, pero claro había otras carreras también y quizás alguna materia la cursaban en el aula de al lado nuestro. Pero no, gran sorpresa nos llevamos los que ya habíamos estado en la primera materia, al ver el grosor de gente que iba ingresando también en nuestra aula, cuando el profesor dio la señal de entrar. El aula sin duda no podía con todos, hubo que abrir unos paneles que separaban a la otra aula, para de esta forma unificar ambas. ¿Será sólo para programación? ¿O toda esta gente también cursaría alguna otra materia de la carrera?
Finalmente y ya al ir cursando todas las materias, me di cuenta que esas personas solamente estaban para programación. Impresionante. Después uno se va enterando que la mayoría eran recursantes y algunos recursante de recursante, aunque también se encontraban oyentes.
"A esta materia le tienen que dedicar más tiempo que a cualquier otra", así arrancaba el profesor y mirando de reojo a los recursantes (que asentían con la cabeza y se reían). Y yo que a la vez pensaba, "uy este quiere figurar pensando que su materia es la única de la carrera". De todas maneras, sabía que era la troncal y que poseía más carga horaria que las demás.
Así fueron pasando los días (las mañanas) con sus cursadas y me daba cuenta de esa frase del profesor, a darnos guías larguísimas para hacer ejercicios, y que nunca se terminaba de hacer de forma completa. La guía sin terminar, algunos ejercicios resueltos en el pizarrón (o por el profesor mismo o por alguno que había ido a la técnica). No entendía nada y no era el único, y luego un tema nuevo, y más guías con muchísimos ejercicios. Sólo llegaba a realizar la primera parte del programa (la declaración de variables), lo demás todo en blanco, me bloqueaba. Recuerdo de pedirle a algún compañero (de los que ya tenían una base en programación) de copiarme algún ejercicio.
Pero claro, si bien lo trataba de entender, no había forma. Miraba el ejercicio, intentaba hacerlo, pero no. "Dedicarle más tiempo que a cualquier otra", esa frase siempre rebotaba en mi cabeza. Es ahí cuando empecé a buscar más sobre programación (pseudocódigo, estructuras…etc.) tratando de entender de cómo hacer los ejercicios, leía y leía.
Una mañana me llamo la atención al ver en el pasillo, pegado en uno de los paneles (en donde uno veía notas de parciales, información para los alumnos, etc.). "Clases de apoyo para programación 1". ¡Nooooo!, decía yo, ya tengo la cursada, no quiero terminar en esas clases de apoyo. ¿A eso se refería con "dedicarle más tiempo"?
Lo que se mi daba cuenta en esta materia, que un ejercicio se podía realizar de muchas formas. A veces ocurría, que un alumno iba al pizarrón a plantear y resolver un ejercicio en particular con su hoja. Concluido lo de mi compañero, el profesor hacía toda una línea con una fibra, separando al ejercicio, por el que él iba a mejorarlo (como una segunda versión). Era una forma más eficaz y más corta. Pero no era todo. Borraba su planteo y lo mejoraba aún más (tercera versión) en alguna que otra parte. Y al costado ahí estaba, un lote de prueba (para verificar que el código funcionaba).
"El próximo lunes tomaré un parcialito", decía al final de la clase. Al que luego agregaría "no sé si vieron el cartel, pero están los chicos del último año de sistemas para dar clases de apoyo". "Si lo vi, no me lo recuerdes", pensaba.
Llegó ese día, ese lunes. La verdad había estudiado mucho y me encontraba muy nervioso, dormí poco. Se aconsejaba sólo usar lápiz y goma. Es una constante lo de borrar, es puro razonamiento. Entro al aula y lo primero que le digo al profesor es: "estuve leyendo mucho" y a lo que me contesta "entonces no tiene sentido que rindas". "¿Cómo?", "No es leer, es todo práctica, hacer los ejercicios". Era eso, la práctica: "dedicarle más tiempo"=hacer las guías que nos daba. Además de teoría no había mucho y de que servía conocer el significado de una estructura por ejemplo, si no sabía ni cuando y ni como usarla.
Dos ejercicios (o 3, no recuerdo bien), llegaba mi primera prueba (literalmente) sobre programación. El profesor explicaba y explicaba lo que teníamos que hacer en cada enunciado. Muchos entregaban enseguida, no es que habían realizado algún ejercicio a la velocidad de la luz. Entregaban en blanco, sin nada. Y ahí estaba yo, siempre declarando las variables, no iba más allá de eso. Capaz sumaba algún punto con eso sólo. Me animaba a tirar un Si-Entonces (lo que conocen programación saben de qué hablo), ahora un mientras (¿antes o después del Si?) podría ser o porque no un Para-Fin Para.
Encima al ser tan distinto la forma de programar de cada uno, copiarse no tenía sentido (con decir que no había tema A o B), es lo mismo. No es cómo matemática, donde todo el procedimiento y resultado es igual. Acá no, cada codificación y resolución es muy individual. No recuerdo exactamente que hice, pero intente hacer algo, hasta el lote de prueba (seguro que no me daba). Mejor voy a ver el segundo ejercicio. No había forma. De igual manera, de a poco me fui dando cuenta, de que si no comprendes el enunciado nada te puede salir, programación es razonamiento puro. Eso sí, la goma tuvo un trabajo arduo esa mañana. Me quede casi hasta el final (aún sin entender porque) y entregue. Veía que los que más sabían daban al profesor más de tres hojas (de las dos carillas) y bien llenitas. Yo sólo una. "Mmmmm", me hacía el profesor y se reía. Y yo de los nervios me fuí del aula como Speedy Gonzales.
Estaba ansioso por saber la nota, en realidad no tanto la mía, quería ver en general como había sido ese parcialito. Pasados unos días, allí se encontraba publicado en el panel del pasillo: "Programación 1 TM parcialito", justo al lado de "Clases de apoyo para programación" (al cual ya lo tomaba en serio). Busque mi apellido, sólo por buscar, 1 (uno) -así tal cual con el número y entre paréntesis el uno-, para que no tengas duda. Bueno por lo menos uno más que los ausentes, que eran muchos, pero asimismo muchísimos unos, no estaba sólo en ese nivel. Aprobados no más de tres y con notas bajas. Ahora sí, la clase de apoyo me estaba esperando.
Funciones, procedimientos, vectores, matrices... Ya estaba saturado de programación, no podía realizar un bucle o escribir alguna sentencia bien que ya venían temas nuevos. Me quedaba con otros compañeros para la clase de apoyo (y sí tenía que hacer algo), pasaban los parciales y yo que no pasaba de ese 1 (uno). El programa seguía: Archivos, registros y aún no veíamos ninguna PC. Todo en papel. Los chicos del último año (que daban esas clases extras) ponían lo mejor, pero yo seguía igual. Otro compañero ya había realizado el famoso clic (que es lo que se necesita para entender programación). Me acuerdo que nos habíamos quejado a la directora y ella más de una vez vino para charlar con nosotros por esta materia, hasta dio su explicación sobre como entender programación. El nivel en general de programación era bajo, muy bajo sería lo justo. ¿Estará acostumbrada en cada año que comienza a charlar sobre esto? Pasó el año y yo forme con otros mas, de ese grupo de recursantes, por lo cual no podía cursar Programación II.
Allí estaba entonces nuevamente, cursando la misma materia por segunda vez. Esperando que sólo sea eso, una segunda y no pase a otro número más. Mismo profesor, misma frase de comienzo (ahora al que miraba de reojo era a mi) y el mismo cartel de los chicos de apoyo en programación...
Sin lugar a dudas, cada cual tiene sus tiempos, para lo que sea o le vaya tocando en la vida. No sé si eso va en paralelo con la inteligencia, el aprender antes que otro alguna otra cosa. Tal vez era sólo falta de práctica y eso llevaba a no entender. Pasaba con un compañero que tampoco pudo aprobar la primera cursada y que me decía "entiendo lo que explica el profesor en el pizarrón... pero no puedo implementarlo por mis propios medios". Sinceramente es un caso aparte programación, algo que no se puede explicar realmente. Siempre me preguntaba (y ahora que lo pienso también), la forma de corregir esos parciales del profesor. ¿Cómo lo corregirá? ¿En que se basará? Porque así como hay muchas formas de resolver algo en programación, lo mismo debe pasar para poner la nota de una prueba. Me saco el sombrero con el profesor de esa materia, el explicar programación y la forma de hacerlo, además es tu primer contacto con algo maravilloso que es aprender a programar, ni más ni menos.
En ese primer aprendizaje es todo el entender, prestar atención, razonar, sobre todo razonar. Porque eso es lo fundamental. Ejercicios y más ejercicios, me empecé a romper la cabeza y reforzado con las clases de apoyo, pude empezar a entender de cómo era todo. Si señores me llegó el aclamado clic. Era de noche, estaba en casa, música de fondo que ayudaba y el primer ejercicio de programación que me salía. Ahí estaba, saltando cómo si hubiera ganado alguna medalla en alguna que otra olimpiada. Después pensaba en lo que había realizado y volvía a la hoja, quizás, no creyendo de mi tan ansiado logro. Si, si, está bien... "esta variable entra acá, incrementa en uno, asigna el valor, pregunto por el contenido, etc." (me convencía). Así fueron resolviéndose varios más. Los ejercicios comenzaban a tomar forma, funcionaban y estaba chocho con el lote de prueba cuando todo andaba. Luego, a hacer los más difíciles, costaban... pero con algo de tiempo llegaban a funcionar. Así fueron pasando varias noches. "Dedicarle más tiempo", que gran verdad.
Y todo esto me encanto, empezaba como una pasión. Primer parcial desaprobado, pero las hojas más llenas (y no precisamente con declaraciones de variables). El recuperatorio de ese primer parcial fue el envión. Era mi primer aprobado. Todo tenía sentido, ya no resultaba un imposible aprobar la cursada.
Cuando vi las notas publicadas y un 7 (siete), no entendía nada (que paradoja). Ahora resultaba ser yo, el de esa primera lista (en mi primer año de cursada) el que se eximía, un año después. Me contuve un rato, no quería que nada se interponga en ese momento, en mi momento. Me fui afuera a caminar y recapacitar de lo que acaba de lograr, el esfuerzo que me había conllevado y sin querer contenerme mis ojos que iniciaban su lagrimeo. Sí que valió la pena (me llegaba a decir). Cuando subí quería arrancar esa publicacion con las notas y llevármela. Luego, en la clase podíamos ver el parcial o pedirlo, pero no se nos permitía quedarnoslo (nunca entendí eso). Yo que quería hacerle un cuadro.
Más adelantes se pasaba de pseudocódigo a los lenguajes (Delphi, C, Visual Basic, ASP, etc.). Ahora que recuerdo el lenguaje C, una vez mi mamá me había preguntado "¿que rendís mañana?" y claro yo le digo tal cual es: "C", se me quedó mirando esperando que agregue algo más. No hay otra manera de llamarlo. Le tuve que explicar, más o menos como era la cosa, no creo que haya entendido y yo también la entendería.
Como dije anteriormente, te empezaban a enseñar distintos lenguajes de programación. Asimismo, no serían los únicos. Después uno va investigando y viendo que hay muchos más. Así que resultaba que todavía aún quedaba mucho por descubrir y aprender. En mi caso seguí orientado a Visual Basic, con el agregado de aprender PHP. Esto lo necesitaba para poder plasmar mi proyecto propio GlosarioIT, aunque demás tecnologías lo complementarían. Internet resultaba ser mi gran biblioteca para incursar y aprender.
Hay que decir que programación te abre totalmente la cabeza, te hace ver las cosas de otra manera. Una vez cenando en familia, mi mente se encontraba en algo que estaba haciendo y fue en esa comida que me acorde (o razone) de cómo solucionar lo que no me podía salir cuando estaba frente a esa dificultad. Había que alejarse del problema (así lo decía Einstein). Lo primero que hice fue irme un momento de la cena y plasmar la resolución en ese mismo instante, tenía que hacerlo.
Por todo esto y por lo que es programación en sí, aconsejo a todos (sin importar la edad) a estudiar programación. Si es a nivel terciario o universitario, claro que mejor. Ya que el ir a cursar la materia tiene sus ventajas, y si además, tienes la suerte de que te toque un profesor mostrando su pasión, como me pasó en ese primer año, has dado en el clavo.
Después va a estar en uno hacia donde orientarse, la programación es aplicada en un sinfín de lugares y dispositivos. Todo es programable, imagínate lo que puedes crear. Y como me ha pasado, vas a ver como tu cabeza empieza a razonar de forma distinta. Nunca me olvidare cuando por primera vez pude lograr ver en pantalla el famoso mensaje "Hola mundo". Era una sensación increíble... desde ahí todo empezaría a cambiar para mí.
PD: Tanto los nombres de las personas como así también el del lugar donde me he formado, no fueron revelados. No quiero herir sentimientos u otra cosa que pueda ocasionar.
Damian E. Garcia (@Elias_Dami)
Apartados: ¿Cómo optimizar y aumentar la velocidad de Internet? • ¿Cómo surge una idea? • ¿Existe la seguridad absoluta? • Consejos en la ergonomía informática • Consejos para aprender a programar • El auge de las redes sociales • En la búsqueda de archivos torrents • Entrevista laboral: cualquier cosa te llamamos • Estrategias para crear un sitio web profesional • Herramientas de respaldo y recuperación de archivos • Python, el lenguaje a aprender
Virus/gusanos: El origen de los virus • CIH • Happy99 • Hybris • ILoveYou • Life Stages • Melissa • Timofónica • ZippedFiles • Infecciones vía correo electrónico • Distintas vías de infección • Virus informáticos con historia
Historias: Acerca de paquetes ofimáticos • El CD • El MP3 • Evolución de la informática • Apple • Google • La evolución de los Disc Jockeys • Linux • La lógica • Microsoft • Navegadores de Internet • Origen y evolución de Internet • Redes neuronales artificiales • Surgimiento de la criptografía • Tarjetas gráficas
Videojuegos/consolas: Evolución de las consolas • Evolución de los videojuegos • Inventores de videojuegos • Jugando con la Xbox • SimCity