¿Es difícil programar?
Tags: programacion, tecnologia, educacion, coding
Published: 2020-08-04 19:56:10

Actualmente tengo más de tres años programando, dos de manera profesional y menos de uno habiendo aprendido buenas prácticas y buscando optimizaciones en el código, así cómo preocupándome por la legibilidad y otras cuestiones técnicas. Ha sido un esfuerzo de tiempo completo, pues no sólo son cosas que he aplicado y aprendido en el trabajo, sino que ya mucho de mi tiempo libre lo utilizo para seguir aprendiendo programación.

Y pese a todo ese esfuerzo considero que tengo un nivel intermedio de habilidades, en parte porque mis aspiraciones son muy altas y en parte porque por cada cosa nueva que aprendes y dominas en programación, te das cuenta que hay unas 40 cosas nuevas que no conoces o que te faltan por entender.

Con todo esto, creo que se responde sola la pregunta de: ¿es difícil programar?
¡Por supuesto que lo es! Sin embargo, es de las cosas que más valor tienen y mejores resultados brindan, es decir, para mí ha resultado la mejor inversión de mi vida.
Mejor aún, que sea difícil no quiere decir que esto no es para cualquiera, al contrario, entre más aprendo, más me doy cuenta de que cualquiera puede y debería aprender a programar. Sin importar que tengas 8 años o más de 90. Programar siempre te va a retribuir algo -_generalmente mucho_-, a largo y corto plazo.

Yo he podido identificar 4 aspectos que hacen de la programación algo difícil de aprender e implementar, pero que una vez que se conocen, te facilitarán las cosas para que disfrutes más haciéndolo y sufras menos frustración. Después de todo la frustración, impotencia y falta de confianza en uno mismo es el único motivo que te hará imposible hacer las cosas difíciles de la vida.

1. ## Lógica
Definitivamente necesitas de la lógica para programar, pero es la menor dificultad, porque en realidad toda actividad humana requiere lógica, y la programación no requiere casi nada más que las de las demás actividades.
Por ejemplo, si te gusta cocinar, requieres mucha lógica al seguir las instrucciones, utilizar las porciones adecuadas y el tiempo correcto de cocción. Si te gusta escribir historias, es necesario aplicar mucha lógica para los eventos que los personajes realizan y para que la trama de la historia tenga una correcta hilación; en realidad una buena historia o una buena comida requieren de lógica más compleja que la creación de un algoritmo. Incluso si practicas algún deporte necesitas utilizar la lógica para saber realizar tus rutinas de ejercicio, para poder ejercitar sin riesgo tus músculos y no sufrir lesiones. Al manejar, jugar o incluso al ir de compras; todo requiere de cierto grado de lógica, es algo que el humano está muy acostrumbrado a usar... ¡Lógicamente!
Quizás donde a la gente le cuesta un poco más trabajo es, no por la cuestión lógica, si no por el nivel de las piezas: que en cuestión de código son mucho más pequeñas que las que se utilizan al realizar nuestras actividades diarias o _hobbies_. Lo que nos lleva a:

2. ## Nuevo lenguaje
Esto es ciertamente bastante más complicado que lo primero. Ninguno de nosotros está acostrumbrado a alguno de los lenguajes de programación. Estos lenguajes, a diferencia de nuestros idiomas, no son naturales; son lenguajes artificiales.
Pero hay una buena noticia y tengo crédito al decirlo porque en realidad tengo título de lingüista: la lenguas humanas son, **por mucho**, más complejas y más difíciles de aprender que un lenguaje de programación. Es más, cuando realmente aprendes un lenguaje de programación (casi el que sea), aprender otro nuevo, te será sumamente sencillo. En cambio con las lenguas humanas eso nunca es así. Si tú aprendes Japonés no significa que aprender Italiano te va a resultar más sencillo. Evidentemente el humano aprende a aprender, pero aquí la diferencia es abismal. No hay comparación de la complejidad que hay en un lenguaje de programación con la de otra lengua humana, pues en esta última es mucho más grande.
Sin embargo sí requiere un esfuerzo acostumbrarse a estos nuevos caracteres y las posiciones que deben tener al crear tus propios programas. ¡Pero créanme, es un lenguaje sumamente bello y adictivo!

3. ## Egoísmo y privación
Lamentablemente el tercer punto es un problema muy humano. Como dije antes, programar es difícil, pero no es algo ni imposible ni demasiado difícil. Pero he visto lo que frena su aprendizaje es el miedo que a todos nos provoca, todos antes de saber mucho de esto, tenemos la impresión de que es algo que nunca vamos a poder hacer bien y que nos va hacer quebrar la cabeza. Y esto sería enteramente falso si en algún momento se logra eliminar este punto -_yo espero que sí_-.
En mi aún joven carrera como programador he tenido la oportunidad de conocer en persona a algunos ingenieros, informáticos y desarrolladores, y sinceramente son pocos lo que abiertamente te tienden la mano y comparten su código para que aprendas.
Y también he sido como esas personas, es decir, este punto hace que te retrases mucho y por lo mismo, el esfuerzo y tiempo que se dedican es mucho, por lo que a veces no se quiere mostrar así como así y tampoco a cualquiera todo el esfuerzo de ese trabajo.
Pero pienso que esto debe ir cambiando conforme avancemos más como sociedad, porque facilitarles a otros el trabajo es requisito para el crecimiento humano.
Creo que esta cultura de egoísmo es principalmente culpa de los primeros gigantes de la tecnología, en especial: _Microsoft_, _IBM_ o _Macintosh_ quienes por tanto tiempo han resguardado e impedido que el _hardware_ y el _software_ puedan ser manipulados y estudiados libremente. Cosas que en la actualidad están cambiado gracias a la gran ola de _Open source_ tanto en _software_, y ahora también, en _hardware_ que existe y que espero siga creciendo y se vuelva la regla en lugar de la alternativa.
Yo, gracias a gente de otros países y sitios de libre acceso, he podido aprender de manera autodidacta, pero sin duda siempre será mejor que los accesos sean locales y que lo autodidático no sea la única forma de aprender.
También he notado que a algunas personas del mundo de la informática les cuesta mucho darse a entender para ayudar y contrarrestar estas limitaciones. O sea que no es tanto egoísmo sino una habilidad que les hace falta desarrollar. Lo que sin duda cambiará entre más personas de distintas áreas comiencen a aprender a programar, eso nos va ayudar a poder alcanzar una mejor comunicación. Eliminando esta dificultad, se pasará de un círculo vicioso a uno virtuoso.

4. ## Abstracción
Finalmente, llegamos al punto de mayor dificultad: la abstracción.
Una de las ventajas de la programación y de la era digital, en general, es la capacidad de replicar las cosas "infinitas veces" y sin gastar o conseguir herramientas y materiales muy sofisticados, más allá de una computadora, pero en la actualidad ya es raro que alguien no tenga una, y ni siquiera se necesita una computadora moderna.
Esa ventaja encuentra su contrapeso en la abstracción, pues como ya no se trata de cosas tangibles y concretas, para aprender a programar es necesario ejercitar el pensamiento abstracto.
Este punto se puede extender para un post completo y es muy posible que en un futuro lo haga, pero por ahora sólo puedo decir que la programación requiere utilizar esta forma de pensamiento, pero a la vez, va a ayudarte mucho a desarrollarla.
Honestamente por ahora no conozco los procesos de aprendizaje del pensamiento abstracto en los humanos, y tampoco tengo una guía de pasos para mejorar en ello o al menos decir cabalmente cómo es que yo he estado aprendiendo a desarrollarlo, pero el que entiendas que la abstracción es algo que necesitas, te va ayudar para saber hacia dónde encauzar tus esfuerzos y también saber que esto es lo más complicado que encontrarás es una ventaja.
El único tip que puedo darles es que si se sienten inseguros con esta forma de pensamiento, pero quieren aprender a programar, empiecen tratando de dibujar o esquematizar de alguna forma lo que sea que quieren conseguir. Recuerden que hablamos de piezas pequeñas, donde muchas veces tendrán que dar instrucciones a una máquina, lo cual quiere decir que tienen que ser mucho más explícitos que si hablaran con otro ser humano. Puesto que ellos sobreentienden muchas cosas, pero eso es **lógica**, no necesitan confundirse. La abstracción es una habilidad más compleja, pero ciertamente es la parte medular de esto, es lo que trae las recompensas más grandes porque de verdad te hace descubrir nuevas partes de tu cerebro que comunmente no utilizas, y eso te va dar la llave de lo que sea que quieres hacer: ser más creativo, aprender nuevas cosas, inventar, descubrir, liderar, avanzar...

La razón de programar es resolver problemas, eso es lo más importante. Y estamos en un momento y lugar donde lo que más necesitamos es solucionar un montón de problemas. Aprender a programar va hacer que esa idea que tenías para salvar la Tierra, evitar las extinciones, disminuir la inequidad, hacer de este mundo un lugar más justo, pueda hacerse realidad.

Así que no importa a qué te dediques o qué te guste: ¡aprende a programar!

_Happy coding!_