Faragiri

Aprender Programación

Tres de los ocho temas valen en cualquier parte y cinco son lugares con reglas propias. Lo que detiene a casi todos tras el primer curso no está en ningún temario.

7Secciones
11Minutos
1Profundidad

Programación

Lo que de verdad contiene aprender a programar

Cada rama es un oficio distinto con una forma distinta de fallar. Quien abandona suele abandonar en la segunda, creyendo que sigue en la primera.

  • Un lenguajeLa parte más pequeña, y la única que alguien enseña
    • Sintaxis
    • Tipos
    • Biblioteca estándar
  • Las herramientas de alrededorDonde quien empieza pierde tres semanas
    • Terminal
    • Git
    • Editor
    • Paquetes
  • Sacarlo de la propia máquinaNada funciona hasta que funciona en otra parte
    • Despliegue
    • Registros
    • Reversión
Aprender a programar
  • Pensar en pasosConvertir algo que se quiere en un orden de operaciones
    • Descomponer
    • Estado
    • Casos borde
  • Leer código ajenoLa habilidad que separa el segundo año del primero
    • Seguir un traceback
    • Documentación
    • Código fuente

Las ramas no son etapas. Uno es malo en las cinco a la vez durante un buen rato, y esa es la forma normal del asunto.

Ximena Robles escribió cuarenta líneas de Python para no volver a abrir uno por uno los CFDI de sus clientes. El programa recorre una carpeta de 214 facturas en XML 4.0, saca de cada una el RFC y el total, y arma la tabla de lo que cada quien le debe. Es correcto, y corre en exactamente una computadora: la suya, en Querétaro.

En la máquina de su contadora el mismo programa se cae en la línea que abre el primer archivo. Nada de lo que falló ahí es Python.

Ahí se parte esta rama del atlas, y al revés de como la parten los cursos que Ximena ya tomó. Cobrar ese trabajo es asunto del trabajo freelance; que el programa corra en otra máquina es asunto de aquí.

Tres de los ocho temas valen en cualquier parte, y cinco son lugares

Tres de los ocho no dependen de lo que uno termine construyendo. Fundamentos de programación es lo que quedaría si le quitaran a uno todos los lenguajes que sabe: cuánto cuesta un ciclo, para qué sirve una tabla hash y por qué un error se esconde. Lenguajes de programación es un lenguaje y los varios cientos de paquetes que lo rodean. Puesta en producción es todo lo que pasa después de que el programa funciona y antes de que alguien más pueda usarlo.

Los otros cinco no son temas que alguien elige por gusto. A cada uno lo define aquello que ahí mata un programa. En desarrollo web el código corre en dos máquinas y ninguna es de uno, y la red entre ellas falla de maneras que ninguna reporta. En desarrollo móvil los límites son la batería, una revisión de tienda antes de que nadie vea nada, y un teléfono al que no se puede entrar. Las bases de datos cargan un requisito que los otros cuatro no tienen: la información tiene que seguir ahí después de que se fue la luz a media escritura. En blockchain el código es público, permanente y casi siempre cuida dinero, así que no hay segundo despliegue. Y en desarrollo de videojuegos el presupuesto son 16 milisegundos por cuadro, 60 veces por segundo, y pasarse se ve en la pantalla de cada jugador.

Los cursos gratuitos parten esto de otra manera, y de ahí sale que el quinto intento se sienta igual que el primero. Se parten por lenguaje: Python desde cero, Java desde cero, JavaScript desde cero. Es una división cómoda para quien enseña, porque un lenguaje se puede terminar. Pero cuando la única división que alguien ha visto en cuatro comienzos es un lenguaje, el único paso siguiente visible es otro lenguaje.

Ordenado así, una sola página llamada Python tendría que cubrir una petición web, un entrenamiento, un ciclo de juego y un script que renombra archivos, y solo diría lo cierto en los cuatro casos, que es la sintaxis. Por eso dos personas que escriben Go con soltura pueden ser incapaces de hacer el trabajo de la otra.

Un oficio de este pilar se quedó sin tema propio, a propósito. Leer código ajeno no tiene temario: es lo que uno hace dentro de los ocho, y se practica abriendo un proyecto que no escribió.

Un lenguaje, sostenido hasta que algo propio corra en otra máquina

Andrés Villalba terminó un programa del SENA en Bucaramanga, escribe Java desde hace dos años, Python desde hace uno y empezó con Go en marzo. Lee los tres. Nada de lo que ha escrito en los tres ha corrido nunca en una máquina que no sea la suya. Un segundo lenguaje es la manera más cara de posponer la segunda materia.

Es tentador por una razón que vale la pena decir de frente: un lenguaje nuevo devuelve el primer mes. Todo vuelve a ser nuevo, cada noche termina con algo que funcionó, y la sintaxis que uno ya trae hace rápida la semana uno. Sacar un programa de la propia máquina no regala nada de eso durante quince días, y después regala una dirección.

Así que el orden es un lenguaje, sostenido hasta que un programa propio corra donde uno no está sentado, y después ampliar. Los fundamentos no son un curso previo que haya que terminar antes, aunque el orden universitario lo sugiera. Llegan la tarde en que el script de Ximena compara cada uno de sus 9400 renglones de concepto contra la lista de claves que ya vio, y el mismo trabajo escrito con un diccionario termina antes de que arranque el ventilador. Tomar esa lección en abstracto es el otro orden equivocado.

Semana seis

La bifurcación que sigue al primer programa que sí funciona

Los dos brazos se sienten como avance. Solo uno termina en algo que un desconocido puede abrir.

El primer programa ya corre en tu máquina. ¿Y ahora?
  • Lo que hace casi todo el mundo
    Meterse a otro curso desde ceroEl mes uno otra vez, y se lee como avance porque todo adentro es nuevo
    • Sintaxis que ya se tiene, escrita distinto
    • Sigue sin correr nada propio en ningún lado
    • La brecha se abre en silencio, en los dos lenguajes
  • Lo que sí paga
    Poner el mismo programa en una máquina ajenaQuince días en que nada funciona, y después una dirección
    • Una terminal abierta por uno mismo
    • Un repositorio con las versiones fijadas
    • Un enlace que otra persona puede abrir

No dice que el segundo lenguaje sea un error. Dice que no es la semana seis, y que quien lo toma en la semana seis suele tomarlo en lugar de lo otro.

El día en que el código tiene que correr donde uno no configuró nada

La frase existe en inglés y todo el gremio la usa: it works on my machine. Alguien que avanzó parejo durante cuatro meses deja de avanzar y concluye que es malo para programar. No lo es. Se metió en una segunda materia que nadie le dijo que fuera una materia, y llega disfrazada de fracaso en la primera.

Las cuarenta líneas de Ximena dan por ciertas cuatro cosas que no aparecen en el archivo: un Python que vino con el sistema y va dos versiones atrás, una biblioteca que instaló en 2024 alguien que ya no lo recuerda, una ruta con el nombre de usuaria adentro, y una codificación de texto que eligió la máquina que escribió el XML. Ninguna es Python, ninguna está anotada, y las cuatro tienen que ser ciertas antes de que corra la línea uno.

La tercera es la que se lleva más tardes. Una ruta relativa se resuelve desde donde corre el comando, no desde el archivo que la escribió, así que el mismo script encuentra la carpeta cuando se ejecuta desde el escritorio y no la encuentra cuando la contadora lo corre desde sus descargas. El programa no cambió. Cambió desde dónde se llamó.

La razón de que nadie avise es honesta: quien enseña el lenguaje no cuenta el entorno como parte del lenguaje, lo cual es correcto e inútil. La respuesta tiene nombre, contenedores, y son quince días de trabajo en lugar de un año. La otra mitad del atasco es la terminal, que tiene gramática propia y vive bajo sistemas operativos.

Las palabras que conviene dejar en inglés

Aquí hay una ambigüedad que la edición en inglés no tiene motivo para nombrar. El error llega en inglés, la documentación está en inglés y media interfaz también, así que cuando algo no funciona hay dos posibilidades: o el concepto no cuadra, o la oración que lo describe no cuadra. Creer que era la primera cuando era la segunda es lo que hace que alguien se declare malo para esto.

Ni traducir todo ni aguantarse todo. Las palabras que además son comandos o etiquetas se quedan en inglés, porque son lo que uno teclea y lo que pega en el buscador el día que algo truena:

  • commit, branch, merge, pull request. El vocabulario de Git. «Rama» y «fusión» se entienden en una conversación, pero el comando se escribe branch y el choque se llama merge conflict.
  • traceback. El bloque que sale cuando algo truena. Llamarlo «rastreo» no ayuda: ninguna respuesta útil lo llama así.
  • dependency, lockfile, build, deploy. Las cuatro palabras de la segunda materia, y ninguna viene traducida en la herramienta.
  • issue, release, rollback. Lo que aparece en las pestañas de un repositorio ajeno el día que uno entra a leerlo.

La segunda lista es la contraria: ciclo, arreglo, cadena, variable, función, herencia, consulta. Son conceptos, tienen palabra en español desde antes que la herramienta, y la documentación en español los llama así.

Lo comprobable cabe en una frase: el error llega en inglés, así que la búsqueda que lo resuelve también va en inglés. Copiar el renglón del error tal cual, quitarle la ruta con el nombre de usuario adentro y pegarlo en el buscador es el movimiento que más tardes ahorra en el primer año.

El atasco

El temario de la materia que nadie dijo que fuera una materia

Cuatro meses de avance parejo llegan a una orilla, y del otro lado empieza la semana uno de otra cosa, con su propio nivel de principiante.

Adonde llegaron cuatro meses de avanceSintaxis, ciclos, funciones, y algo nuevo cada semana
  1. 01Una terminal, y que una ruta es una cosaDesde dónde se llama un comando decide qué puede encontrar
  2. 02Un lockfile, para que las versiones sean tuyas a propósitoCódigo de otros, fijado en lugar de recién salido
  3. 03Un repositorio, antes de que haya algo que perderEl deshacer que sobrevive a cerrar la computadora
  4. 04Una máquina que uno no configuróNo trae encima ninguno de tus cuatro meses, y ese es el punto
La máquina de un desconocido, corriendo tu programaLa misma persona, otra materia, la semana uno de esa

Cuatro tablones y no hay un quinto. Esta materia es finita, que es la parte que nadie menciona mientras uno sigue parado en la primera orilla.

Qué abrir en 2026, y lo que cuesta desde México o Colombia

VS Code es el editor por defecto desde alrededor de 2016 y es gratis. Reemplazó a Sublime Text y a Atom, y Atom se archivó en diciembre de 2022, cuatro años después de que su fabricante fuera comprado por el de VS Code. Dos alternativas son serias: los editores de JetBrains, que valen su precio para quien pasa el día entero en un solo lenguaje, y Neovim, para quien trabaja sobre máquinas ajenas. El error clásico es instalar treinta extensiones antes de escribir nada: cada una es algo que se puede romper, y en la máquina que de verdad hay sobre la mesa, más vieja aquí que la del tutorial, cada una es memoria.

Git se escribió en 2005 para el núcleo de Linux y reemplazó a Subversion, y de paso a la costumbre de copiar una carpeta antes de tocar nada. Es gratis, y GitHub y GitLab guardan repositorios privados sin cobrar. Aquí es un tema y no un consejo suelto, y vive en control de versiones. El error clásico es aprender add, commit y push como un conjuro de tres palabras: la primera vez que algo sale mal, el único movimiento conocido es volver a clonar y pegar las ediciones a mano. git restore --staged saca un archivo del área de preparación y deja la edición intacta, y ese comando es toda la diferencia entre deshacer y volver a empezar.

Un asistente de código dentro del editor es el cambio más grande en este oficio desde que GitHub Copilot salió de forma general en 2022, y la mitad de quienes leen esto está aprendiendo con uno. Es muy bueno en el código que uno habría escrito despacio, que es la mayor parte del código. Es confiadamente incorrecto en cualquier cosa poco común, y lo entrega bien formateado, igualito al que sí sirve. Y quien empieza todavía no distingue cuál de los dos tiene en pantalla, porque distinguirlos es la materia misma. El hábito que sobrevive a esa frase es pedirle que explique la línea que uno no escribió y contrastar la explicación contra algo que corra, que es el movimiento de la ingeniería de prompts.

El plan gratuito es real y alcanza para aprender. El de paga cuesta USD 20 al mes, sin precio local, así que en 2026 llega como 380 a 420 pesos mexicanos según el tipo de cambio, más el IVA de servicios digitales del exterior: 16% en México y 19% en Colombia, donde el emisor de la tarjeta lo retiene al pagar. Que haya cuentas revendidas en Mercado Libre a meses sin intereses es un hecho del mercado; recomendarlo es otra cosa.

El cuarto no es un editor: responde al atasco, no al trabajo. Para Python, uv apareció en 2024, es gratis y de código abierto, y reemplazó a pip, virtualenv y pyenv, que eran tres herramientas haciendo un solo trabajo: uv instala la versión de Python que pide el proyecto y fija cada paquete en un lockfile, de modo que quien clona el repositorio recibe lo que había y no lo más nuevo de hoy. Cada ecosistema tiene su versión de ese archivo, y el error clásico es leerlo como ruido y dejarlo fuera del repositorio. Ninguna de las cuatro herramientas tiene problema de acceso desde México ni desde Colombia. Lo que llega tarde no es la descarga: es la factura en dólares el día que se acaba el plan gratuito.

La señal

El mismo programa en cuatro estados, cada uno con menos de ti adentro

Entre el primer cuadro y el último no cambia una línea del código. Lo que cambia es cuánto se sigue recargando en tu propia máquina.

  1. 01Corre cuando le das a ejecutarDentro del editor que instaló todo por ti
  2. 02Corre en una terminal que abristeLa misma máquina, sin nada que ayude
  3. 03Corre desde una copia recién clonadaTu repositorio, y la primera auditoría honesta de lo que nunca anotaste
  4. 04Corre donde nunca iniciaste sesiónEl cuadro en que el programa deja de ser tuyo

Los cuadros no están parejos en el tiempo. El último suele costar más que los tres anteriores juntos, y una tira no sabe dibujar eso.

La señal de los tres meses es un repositorio ajeno

La medida no es cuánta sintaxis se produce de memoria. Es si uno puede tomar el proyecto de un desconocido, clonarlo y dejarlo corriendo en su propia máquina, solo, en una tarde.

Al mes esto falla, y falla de una manera que no se puede describir: algo no sirvió y no hay nombre para cuál cosa. A los tres meses o corre, o no corre y uno puede nombrar el paso que lo detuvo. El intérprete va una versión atrás de lo que el proyecto pide. Falta una biblioteca del sistema. Espera una base de datos contestando en el puerto 5432 y ahí no hay nadie escuchando. Quiere una variable de entorno que nadie documentó. Nombrar el paso que falló es la habilidad; arreglarlo es una búsqueda.

Hay otra señal más chica, comprobable esta misma tarde. Cuando un programa truena, el marco del traceback que nombra un archivo tuyo es el que hay que abrir primero, porque el error se notó adentro de una biblioteca y se causó en el archivo propio. La tercera señal necesita a alguien más: una colega tendría que poder correr lo que tienes, desde el repositorio, en su escritorio, sin ti al teléfono.

Por dónde entrar

Fundamentos y Lenguajes es donde empieza casi todo el mundo, y la división honesta entre los dos es que uno sobrevive a un cambio de lenguaje y el otro es el cambio. Puesta en producción conviene abrirlo antes de lo que parece razonable: el control de versiones, las pruebas, los contenedores y un despliegue salen mucho más baratos sobre un programa de cuarenta líneas que sobre uno de cuatro mil.

De los cinco lugares, el web es el primero cuando no hay razón para preferir otro, y la razón no es técnica: un desconocido ve lo que uno hizo haciendo clic en un enlace, y al segundo mes eso pesa más que cualquier discusión sobre lenguajes. El desarrollo móvil es para cuando la cosa solo tiene sentido en el bolsillo. Las bases de datos se alcanzan tarde y convendría alcanzarlas temprano, porque casi todo programa que no es un juego tiene que recordar algo. Los videojuegos dan el ciclo de respuesta más corto del pilar a cambio de la restricción más dura. Blockchain es el más angosto, para quien de verdad necesita un registro que ninguna parte pueda enmendar en silencio.

Queda la pregunta con la que casi todos llegan, que es en qué lenguaje empezar. Importa menos que las horas que se gastan eligiendo, y tampoco da lo mismo: el primer lenguaje es donde eso se resuelve, y la versión corta es que el lenguaje correcto para empezar es el que usa la gente que va a contestarte las preguntas.

Al lado de esto

Arriba de esto