"Por qué aprender a programar es tan difícil"

29/5/2025

Lo que todo principiante absolutamente necesita saber sobre el camino que tiene por delante

Reflexión de Erik Trautman sobre las diferentes etapas del aprendizaje en la programación.

Quincy Larson era solo un "tipo con traje en una oficina" que decidió que quería aprender a programar. Así que preguntó por ahí. Empezó aprendiendo un poco de Ruby, luego se encontró explorando otros lenguajes como Scala, Clojure y Go. Aprendió Emacs, luego Vim e incluso la disposición de teclado Dvorak. Se familiarizó con Linux, incursionó en Lisp y programó en Python mientras vivía en la línea de comandos durante más de medio año.

Como una hoja en un tornado, los consejos que Quincy recibió lo llevaron primero en una dirección, luego en otra, y otra más, hasta que finalmente había tomado "todos los cursos en línea imaginables". Al final, a pesar de haber conseguido un trabajo en desarrollo de software, Quincy:

... estaba convencido de que los programadores aparentemente normales que conocía en realidad eran sociópatas que habían experimentado, y luego reprimido, el trauma de aprender a programar.

¡Ay! ¿Te suena familiar?

Fase I: La luna de miel del "tomar de la mano"

Es difícil culpar a alguien por entrar en la industria de la programación con expectativas desmedidas.

Por un lado, has escuchado rumores sobre lo difícil que es programar desde que eras joven, como cuentos para asustar a los niños y que estudien ciencias sociales en lugar de tecnología.

Por otro lado, el movimiento "Aprende a programar" ha hecho un trabajo fantástico derribando barreras y mostrando que el código es en realidad bastante inofensivo. Herramientas como Codecademy y Treehouse te guían suavemente para asegurarte que tú también (¡cualquiera!) puede no solo aprender a programar, sino convertirse en un desarrollador completo.

De repente, el problema no es el miedo, sino el exceso de esperanzas y expectativas altas.

Y, en su mayoría, estas herramientas introductorias hacen un gran trabajo guiándote como a un niño en un paso peatonal, pasando por las variables y sentencias condicionales que parecen aterradoras, y a través de las primeras fases de la sintaxis de programación. A medida que superas uno tras otro de sus desafíos gamificados, tu confianza crece. ¡Quizás sí puedes hacerlo! ¿Qué tan difícil puede ser? ¡Ya eres básicamente un desarrollador!

El problema: estás en la fase que llamo la "Luna de miel del tomar de la mano"

Aunque sientas que el final está cerca, apenas estás al principio...

Trazando el camino por delante

Antes de sumergirnos en la Fase II, veamos el panorama general.

En este texto te guiaré a través de las cuatro fases típicas del viaje hacia la programación y lo que necesitarás hacer para sobrevivir a cada una. También verás cómo dos factores clave — la densidad de recursos y el alcance del conocimiento requerido — definen este recorrido.

El camino hacia estar listo para un trabajo puede graficarse en función de cómo cambia tu nivel de confianza a medida que aumentan tus capacidades. Esta relación es importante porque la confianza está altamente correlacionada con la felicidad, y porque el punto donde tu confianza y tus capacidades coinciden es el mejor indicador que tengo para el momento ideal en que estás oficialmente "listo para trabajar".

Las cuatro fases esenciales:

Luna de miel del tomar de la mano: Es la etapa llena de alegría en la que usas recursos muy pulidos que te enseñan cosas que parecen difíciles pero son totalmente realizables con su apoyo intensivo. Aprenderás principalmente sintaxis básica y te sentirás genial con tus logros.

El acantilado de la confusión: La dolorosa realización de que es mucho más difícil cuando termina la ayuda constante y sientes que no puedes hacer nada por tu cuenta. Los desafíos principales son depurar constantemente y no saber cómo hacer las preguntas correctas mientras luchas por avanzar.

El desierto de la desesperación: El largo y solitario camino por un terreno sin rumbo donde cada nueva dirección parece correcta pero a menudo das vueltas en círculos y te falta el recurso adecuado para avanzar. Cuidado con los "Espejismos de la manía", que como sirenas del desierto te desviarán.

El ascenso del asombro: Finalmente encuentras un camino a través del desierto y logras entender cómo construir aplicaciones. Pero tu código sigue siendo frágil y aislado, como un castillo de naipes. Ganas confianza porque tus sitios funcionan, dominas algunos patrones útiles y tus amigos piensan que tus interfaces son geniales, pero tienes miedo de mirar debajo del capó y no sabes cómo llegar al código "listo para producción". ¿Cómo cruzas la brecha hacia un trabajo real?

Fase II: El acantilado de la confusión

Estás en la Fase I — la "Luna de miel del tomar de la mano" — ganando insignias y completando desafíos mientras tu confianza y capacidades crecen. Esto no está tan mal... ¿de qué tanto se quejan? Has llegado al "Pico del entusiasmo irracional"...

¡Cuidado! Estás a punto de sobrepasar un precipicio que ha derribado a muchos aprendices fuertes y los ha relegado al bando de "programar es demasiado difícil". Este salto ocurre la primera vez que te sientas frente al teclado, abres tu editor de texto y tratas de construir un proyecto desde cero sin editores en el navegador, código prearmado ni pistas útiles.

Mierda.

Quizás alargues esto siguiendo tutoriales, pero nadie ha llegado al cielo sin despegar del suelo, y en algún momento tendrás que crear magia desde un archivo de texto en blanco. Acabas de entrar en la segunda fase de aprendizaje, donde la confianza se desploma — el "Acantilado de la confusión":

Construyes, luchas y arañas hasta lograr una solución apenas funcional, pero falta algo. Estás en guerra con los bugs, que hacen que la batalla de Starship Troopers parezca benigna. Cada victoria parece fruto de una búsqueda afortunada en Google y tu confianza en que puedas entender esto alguna vez se desploma.

Los dos factores clave en juego

¿Qué marca realmente la diferencia entre una fase y la siguiente? ¿Por qué la Fase II (el Acantilado de la confusión) fue tan terrible comparada con la Fase I (la Luna de miel)?

Básicamente, hay dos fuerzas clave en cada fase: Densidad de recursos y Alcance del conocimiento.

Solo cuando encuentras tracción y sales del desierto, el alcance vuelve a estrecharse porque sabes qué necesitas aprender y cómo avanzar.

Fase III: El desierto de la desesperación

El dolor causado por la combinación tóxica de un alcance de conocimiento que crece rápido y una densidad de recursos que cae, resulta en el "Desierto de la desesperación".

Es un camino largo y peligroso, lleno de "Espejismos de la manía" — recursos tentadores que parecen tener la solución pero que solo te dejan en el mismo lugar.

Quizás te inscribas en cursos en Coursera, Udacity o edX, o sigas un tutorial que promete llevarte hasta el final. Pensaste que habías aprendido la lección de la Luna de miel — que no hay respuestas fáciles — pero la tentación es grande y caes en la promesa de que esta vez sí llegarás.

No puedes aprender esto en una semana, un mes o una sola clase universitaria, sin importar lo que digan.

Hay mucho más por aprender de lo que esperabas. Aunque logres hacer correr algunas apps, es fácil sentirse perdido en el gran esquema de ser un profesional real. Es difícil medir tu progreso o saber qué necesitas aprender.

Pero con perseverancia y una buena brújula, eventualmente lanzarás tus primeros proyectos "reales" y te darás cuenta de que estás empezando a entender.

Fase IV: El ascenso del asombro

Has atravesado el desierto y tu confianza crece. Tu habilidad para buscar en Google es excelente y entiendes blogs y screencasts técnicos. Quizás te has especializado en un lenguaje o framework y sabes cómo construir y lanzar una aplicación funcional.

Pero sabes que aún no estás listo.

Tu código es una mezcla de parches y trucos, y no sabes qué partes están mal y cuáles están bien. Tienes momentos de brillantez, pero cometes errores de novato y sientes que no tienes ni idea de lo que haces.

Es una fase bipolar: te sientes a la vez un desarrollador a prueba de balas y un novato perdido. Temes que alguien te descubra como un fraude.

Sientes que deberías ser desarrollador ya, pero la distancia entre tu código y un entorno profesional parece enorme.

Sin embargo, lo lograrás. El desierto y el acantilado quedan atrás. Aprendes más rápido y mejor que nunca y absorberás las mejores prácticas hasta que tu conocimiento fragmentado se convierta en un conjunto de habilidades de nivel profesional.

Este ascenso siempre toma más tiempo del que esperas y parece interminable porque estás tan cerca... pero llegarás. Si eres lo suficientemente persistente y haces las cosas bien, convencerás a alguien de pagarte para seguir aprendiendo. El trabajo será tuyo.

Cómo sobrevivir y avanzar

El camino parece intenso y, francamente, a menudo lo es. Es importante que entiendas a qué te enfrentas, especialmente si vas solo. Pero no tienes que hacerlo solo. Hay formas de evitar la mayoría de estos problemas.

Aprender a programar rara vez es tan fácil como parece, pero tampoco es tan difícil como se siente en los momentos de desesperación.

By Erik Trautman

https://web.archive.org/web/20230630111131/https://www.thinkful.com/blog/why-learning-to-code-is-so-damn-hard/