Vivir programando

Desde muy chico tuve mis primeras zambullidas en la pileta de la programación, no podría precisar con exactitud el año pero se aproxima mucho a 1997 o 1998. Tenía unos 10 años y en mi computadora (una pentium 166, con 32mb de RAM y Windows 95) tenía instalado el Visual Basic 6 porque mi mamá estudiaba una tecnicatura en computación. Como a todo niño me llamaba la atención, abría, exploraba, consultaba la ayuda del software. En esa época la incipiente WWW era prácticamente inaccesible, si bien mi computadora tenía un modem (creo que era de 64kbps) las páginas webs eran poquísimas, el material online limitado y la abundancia de tutoriales “Hola mundo” para empezar a programar no llegaron a mis manos. En esas condiciones empecé a realizar mis primeras lineas de código: un prompt que te solicitaba tu nombre y luego lo imprimía, un programa que te solicitaba una contraseña y si era incorrecta no te daba acceso, una calculadora simple, juegos de preguntas y respuestas o un navegador web personalizado. Lo que siempre fue una constante era horas y horas de romperme la cabeza, de probar de una forma, de otra,  de borrar casi todo el código y hacerlo de vuelta y finalmente la sensación de júbilo al lograr lo esperado, por pequeño que sea.

Y eso es lo que creo que más y mejor caracteriza a un programador, padecer la derrota, volver a levantarse y arremeter de nuevo hasta lograrlo.

Un par de años después con el surgir de los cibercafés se abrió la puerta de la internet, pero como los recursos económicos eran limitados me iba 30 o 60 minutos al ciber, bajaba todo el material que podía en diskettes de 3 1/2 y me lo llevaba a casa para analizarlo. Así llegaron las primeras nociones sobre HTML, python o javascript, que no por asomo tenían los usos que se les dan hoy. Javascript se utilizaba por ejemplo para agregar animaciones bizarras a los sitios web, como un title animado o una figura que siguiera al cursor en la página. Nuevamente, hacer que ese ícono con forma de estrella siguiera al mouse en el sitio era un tortuoso camino de intentos en los que uno no entendía por qué si copiaba y pegaba el código no lograba adaptarlo adecuadamente. Y otra vez, la emoción gritada como un gol en la final cuando aparecía la estrellita persiguiendo al cursor.

Aún en esa época en la que todo era menos complejo, parecía que el universo a explorar era infinito. Ni hablar del momento en el que comencé a incursionar en ASM y vi que el paquete del EXE no era tan hermético como pensaba, que aquellas contraseñas y números de serie podían ser burlados desarmando el código en partes a priori incomprensibles, pero que a la larga permitían saltar (literalmente JUMP) de ese prompt que nos pedía la contraseña al inicio del programa.

Algo así fue la sensación cuando decompilé por primera vez un exe con OllyDbg

Hoy muchas de las cosas que otrora estaban a simple vista se encuentran tras el velo de frameworks y librerías que lo hacen todo mucho más simple… y así a todo no hay programador hoy en día que no se encuentre con un problema que no pueda resolver en el primer intento. Sí, hoy… con google, con stackoverflow, con comunidades inmensas de programadores que hacen sinergia con la capacidad de uno mismo para resolver problemas mucho más complejos; con todo, hay problemas que te sacan del esquema, que te obligan a parar el carro, pensar, recular, tomar envión y probar otros caminos. Los tiempos también se han acortado, la inmediatez de las comunidades online y de la búsqueda en google nos hacen pensar que si no resolvemos algo rápido es porque aún no lo encontramos, pero que la respuesta tiene que estar ahí (Sí, si no está en google no existe. Decían)… y sin embargo a veces hace falta que paremos la pelota y nos pongamos a pensar, inclusive por varios días, mientras comemos, mientras salimos a correr o a pasear, mientras estamos en la cama con la luz apagada esperando dormirnos pero el cerebro sigue demasiado inquieto pensando posibles soluciones (¿quién no se ha levantado a mitad de la noche diciendo ¡lo tengo!?)

No se si siempre se llega a buen puerto, he abandonado muchos proyectos en mi vida, suelo tener ideas vagas para realizar, las empiezo y las dejo inconclusas. Creo que apenas el 10 o 20% de las ideas terminan en algo concreto, pero curiosamente aquellas ideas abandonas nunca se quedan en un punto en el que algo me impide avanzar, por el contrario esas trabas me incentivan. Los abandonos vienen cuando el entusiasmo por el proyecto se esfuma, cuando resulta inviable por falta un público o cuando resuelta una etapa del mismo te tomas un descanso del proyecto para no volver. Pero nunca, jamás, cuando hay un problema por resolver.

En las últimas vacaciones comencé un sitio web de desafíos de programación basado en el framework PHP Laravel. Durante el día disfrutaba del lugar, paseaba, me sentaba a la orilla de un arroyo a leer y seguía paseando. A la noche me ponía con la computadora a maquetar el sitio consultando la documentación de Laravel, ya que nunca lo había utilizado con anterioridad. Algunas características me resultaban novedosas y llegué a forzar funciones del sitio para utilizarlas aunque no eran realmente necesarias (cosas que uno hace en pos de la didáctica, vió). Al cuarto o quinto día desarrollando el proyecto hubo un par de problemas que me trabaron; no les encontraba la vuelta, escribía y reescribía el código, lo analizaba, me alejaba de la computadora y lo pensaba lejos de la pantalla a ver si surgía una idea nueva. Los problemas sin resolver empezaban a atormentarme, entonces salía a pasear y pensaba en el código, me sentaba a leer y pensaba en el código, comía y pensaba en el código, inclusive en el medio de las sierras, al borde de un arroyo recuerdo haber sacado la libreta más de una vez para anotar a lápiz y papel códigos que podrían resultar para los problemas a resolver.

Sin lugar a dudas ejemplos de estos sobran en la vida de un programador. Me pongo a escribir esto ahora mismo después de resolver un problema que me atormentó más de una semana, lo resolví ayer, después de fracasar con google, de fracasar con stackoverflow y de pensar lateralmente una solución alternativa que no era por la vía que estaba empecinado en tomar. Resolver problemas se vuelve una adicción, el gozo de resolver algo a lo que se le dedicó tanto tiempo y esfuerzo genuino empujan a buscar nuevos desafíos. Los programadores nos aburrimos de la rutina, nos morimos del embole cuando hay tareas arto laboriosas pero simples. Y en ocasiones incluso buscamos soluciones más complejas a problemas simples, sea para optimizar el código o sencillamente para demostrar que se podía hacer de otra manera. Con toda seguridad el esfuerzo no será en vano, además de nuestra satisfacción abrimos con cada desafío un nuevo sendero que los que vienen atrás también podrán transitar.

Autor entrada: admin

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *