domingo, 10 de diciembre de 2017

Don't Panic!

A la hora de programar, uno de los errores más comunes en los que se puede caer es el de rendirse prematuramente y entrar en pánico: relegar el funcionamiento de nuestras ideas a la suerte y cambiar pequeñas cosas progresivamente, en intentos mecánicos y poco planificados, con la esperanza de que esa "magia oscura" que reina sobre los programas, finalmente comprenda lo que queremos decirle y la computadora haga lo que debe.

Hmm, súmale uno...
Bueno, no, réstale uno...
¿Y si cambiamos el menor por menor o igual?
¿...o mejor por mayor o igual?
¿...o mejor por un no igual?

Una vez aceptamos la verdad, resolver cualquier problema se hace mucho más sencillo y natural. El secreto es elemental y, sin embargo, completamente elusivo en nuestros primeros años como programadores: no hay tal cosa como la magia oscura. Todo lo que un programa hace es consecuencia lógica de aquello que escribimos, con reglas bien establecidas y concretas que podemos seguir meticulosamente, si tenemos la disposición y la paciencia para hacerlo.

Por esto, la mejor metodología a seguir cuando se programa es la de planificar antes de echar la primera línea de código, entender lo que se está haciendo e investigar cuando hayan dudas. En resumen: no entrar en pánico. Incluso las tecnologías que podrían parecer más extrañas se fundamentan en ideas y reglas básicas que pueden entenderse con calma y detenimiento.

En una época en la que la información es completamente ubicua, no tiene sentido estancarse al intentar entender un problema. Con tanta gente que programa, ha de haber al menos otra persona que se ha topado con un problema similar. ¡Ojo! Esto no quiere decir que en internet estará la solución exacta al problema, ni que se resolverá con un simple copy+paste (no suele funcionar así e, incluso si funcionara, de nada sirve arreglar un problema si no se entiende cómo se arregló, pues nos estamos condenando a repetirnos y a caer en los mismos problemas).

Una de las mayores fortalezas que puede desarrollar un programador es el reconocimiento de patrones. Y no me refiero a la técnica relativa al aprendizaje de máquina, sino a reconocer patrones en lo que hacemos y saber aprovechar esos patrones para ayudarnos a hacer nuestro trabajo. Muchas veces, las ideas se repiten y son aplicables a una gran cantidad de tecnologías y aplicaciones. Por eso, debe ser prioridad de cualquier programador aprender todo lo que pueda, sobre todo lo que pueda. Cuanto más experiencia tengamos, más fácil será reconocer patrones en las herramientas que usamos y los problemas que resolvemos.

Aunque parezca material de charla motivacional, el trasfondo es muy cierto e importante. He visto pasar mucho que la gente se hunde en sus propias inseguridades, temerosos de detenerse, pensar, entender y actuar. No me considero alguien particularmente brillante o talentoso, pero en la medida de lo posible intento no entrar en pánico. Todo problema que surge en nuestras vidas como programadores tiene una explicación y, en la mayoría de los casos, la solución está en nosotros mismos; sólo hace falta ser perseverantes, investigar y no conformarse con resolver sin entender lo que estamos haciendo. Con el tiempo, los patrones se harán evidentes y podremos resolver más y más problemas. ¡Es un ciclo de aprendizaje que crece y se realimenta a si mismo! Y todo comienza con no entrar en pánico. :)

Gracias por leer, hasta una próxima entrada. :D

1 comentario:

  1. Ricardo, excelente artículo. A pesar que no soy programador de profesión y a modo muy personal, me topé y me sigo topando con problemas en los que no me queda otra alternativa que respirar, tomar un poco de agua e ir a dios "Google". Algunas veces he podido encontrar una respuesta directa, pero la mayoría he tenido que hacer un cruce de información. El detalle está en que la programación es como la redacción, nadie te enseñará a redactar bien, solo a seguir cierta lógica y reglas gramaticales. Sin embargo, una vez que se tiene una respuesta (o se piensa que se tiene), trato de aprender que hace cada comando y usarlo de manera separada, simplificando cada tarea, para luego poder incorporarlo al código principal.

    Por otra parte, el no entrar en pánico se aplica a todas las situaciones de la vida. Creo que podríamos definir la vida, desde un punto de vista muy computacional, como la ejecución de un gran algoritmo que comienza con un "Hello world" y termina con un "Exit".

    Un fuerte abrazo y feliz navidad.

    Jorge Briceño

    ResponderEliminar