Aprender a programar sigue valiendo la pena
(stevekrouse.com)- Incluso en la era de los LLM y del vibe coding, programar sigue siendo más que una habilidad laboral: es un medio para aprender matemáticas, métodos de aprendizaje y expresión creativa
- El ambiente en el que “learn to code” se usaba casi como un lema de movilidad social rápida se debilitó, y unas pocas líneas de JavaScript no garantizan un salario de seis cifras
- Como muestran los casos de LOGO y Mathland, programar permite entender las matemáticas mediante la exploración en lugar de memorizar instrucciones, y también entrena la depuración, la composición y la lógica
- La programación combina la imaginación de la escritura, la precisión de las matemáticas y la retroalimentación inmediata de los juegos, obligando a refinar el resultado deseado en un lenguaje que la computadora pueda ejecutar
- Así como el valor de las humanidades no desaparece aunque los LLM manejen bien el inglés y el código, la necesidad de una alfabetización universal en código también sigue vigente
El valor de programar más allá de garantizar empleo
- Steve Krouse, fundador de Val Town, dirige una “startup de Silicon Valley” para escribir y desplegar código, pero aun así afirma que todo el mundo debería aprender a programar
- En Making Sense with Sam Harris #481, se comenta que en Silicon Valley hacía meses que no se escuchaba la frase “learn to code”
- En algún momento, “learn to code” se repetía como si fuera una vía rápida para salir de la pobreza, pero poder escribir dos líneas seguidas de JavaScript no trae consigo un salario de seis cifras
- Vale la pena aprender a programar no solo por su utilidad profesional, sino también por razones educativas, al igual que las matemáticas, la literatura, la ciencia y las humanidades
Un medio para aprender matemáticas y entrenar el pensamiento
- Programar puede ser un medio poderoso para aprender matemáticas
- Steve Krouse llegó a disfrutar las matemáticas gracias a un programa de programación extracurricular, y terminó siendo mejor en matemáticas de lo que esperaba
- Seymour Papert quería que los niños aprendieran matemáticas como aprenden a hablar: no mediante instrucciones, sino mediante la exploración
- El “Mathland” de Papert era el lenguaje de programación LOGO, que consistía en darle órdenes a una tortuga en la pantalla para que dibujara
- Steve Krouse también creó una versión de LOGO que se puede probar en línea
- En el proceso de aprender programación, también se desarrollan metahabilidades como la depuración, la composición y la lógica, además de la sensación de que no hay nada que no se pueda aprender
La programación como actividad creativa
- Programar es una actividad donde se encuentran la creatividad de la escritura, la precisión de las matemáticas y un ciclo de retroalimentación inmediata parecido al de los videojuegos
- Obliga a refinar lo que uno quiere en un lenguaje preciso que la computadora pueda ejecutar
- Se compara con recitar hechizos, en el sentido de que, tras aprender una sintaxis desconocida, uno logra que la computadora cree realmente aquello que imaginó
- Los LLM pueden escribir bien tanto en inglés como en código, pero así como eso no elimina la relevancia de las humanidades, el código también sigue siendo importante
- Como los documentos legales, el código puede parecer un conjunto de detalles difíciles y aburridos, pero es la base sobre la que funciona el mundo, y una línea de código elegante puede cambiarlo
- Programar es una actividad placentera y, incluso en la era de los LLM, sigue vivo el sueño de una alfabetización universal en código o de una “verdadera revolución informática”
1 comentarios
Opiniones de Hacker News
Incluso entre quienes ya sabían programar antes de los LLM, las habilidades de programación ya se están atrofiando, y parece que seguirá así durante otros 10 o 20 años
Aprender a programar durante ese mismo período quizá tampoco tenga una gran recompensa
Al final, el único código con el que se entrenarán los LLM del futuro será código generado por LLM, y la calidad de las bases de código en producción probablemente caerá hasta un nivel en el que a los humanos les resulte difícil entenderlas y a los LLM les cueste mantenerlas, dejando ver las grietas
Para entonces, programar volverá a ser una habilidad valiosa, pero desde el punto de vista de planear una carrera, ese momento es incierto, y el mercado puede seguir siendo irracional más tiempo del que una persona puede aguantar
Seguirá haciendo falta gente que escriba código directamente y recupere la artesanía
Si todo el mundo depende de código generado, solo se podrá repetir lo que ya se conoce, y únicamente quienes hayan aprendido el camino difícil mediante estudio real tendrán la creatividad y la inteligencia para crear conocimiento nuevo y nuevas cintas educativas
Los puntos 1 y 2, que las bases de código en producción se vuelvan incomprensibles para los humanos y difíciles de mantener para los LLM, sí ocurrirán, pero no creo que ocurra el punto 3, que luego programar vuelva a ser valioso
En particular, la gerencia bajará sus expectativas, o será obligada a hacerlo
Basta pensar en lo común que es que una “versión nueva y mejorada” elimine funciones importantes que uno usaba, sin un reemplazo adecuado
Cuando una base de código se vuelva inmantenible, lo más probable es que simplemente generen de nuevo otro montón de basura y llamen mejoras a cambios aleatorios por todos lados
Cuando Fujitsu intentó reanudar la producción de laptops hace unos 5 años, la única forma práctica era volver a reunir a trabajadores japoneses jubilados
Parece que las generaciones más jóvenes no tenían la habilidad o no tenían muchas ganas de hacerlo, y tras unas cuantas tandas de producción, al parecer se terminó
Panasonic todavía fabrica laptops empresariales, pero son muy caras, y esta historia está directamente relacionada con este tema
Aprender a programar es indispensable, y hay que saber qué es posible y qué es fácil para saber cuánto se puede pedir
Lo que se vuelve menos importante es mantener el filo siempre bien afilado
Si uno escribe menos código durante un tiempo, aumentan los errores puntuales o los errores de copiar y pegar, pero gracias a los LLM, la importancia de mantener caliente el instinto de programador disminuye
Aun así, si no hubiera sabido hacerlo yo mismo, no creo que pudiera hacer mi trabajo aunque existiera Fable
Mientras tanto, más gente que nunca creará y usará software, y es probable que las peroratas de “todo se está yendo al demonio” parezcan absurdamente exageradas
Decir que “el código es una forma de expresión creativa hermosa y tan rica como la literatura o la música” parece una exageración, y me pregunto qué tan familiarizado está el autor con la literatura y la música
La mayor parte de la programación se parece más a trabajos de plomería
Llegas, te quejas del trabajador anterior y resuelves un rompecabezas con restricciones particulares
La razón por la que los LLM programan bien es que en programación se quiere código aburrido y común
Nunca tuve un plomero que llegara a insultar al anterior; cambiaba algo o arreglaba algo que yo había roto
El resultado funcionaba perfectamente durante años o décadas, aunque yo no lo tratara con cuidado
Hacer algo aburrido y común también puede llamarse arte, a falta de una palabra mejor
No puedes nombrar una función como si fuera código abreviado, ni tampoco como ThisIsTheEntryPointOfTheProgram(), y qué es mejor se vuelve objeto de reflexión y debate interminables
Damos por sentadas estas cosas “pequeñas” porque asumimos como normales los reemplazos frecuentes y la hinchazón, pero un plomero jamás haría eso
Ellos no introducen un nuevo material de cañerías cada semana para luego cambiarlo por la siguiente moda, y como en general construyen cosas que duran más que las personas, parecen ejercer un oficio de un planeta completamente distinto
La demoscene es programación para diversión y expresión creativa, y también existe el IOCCC
Eso equivale a una novela escrita de forma creativa
En cambio, también está la escritura hecha simplemente como trabajo, como redactar una base de conocimiento, y eso es programación de plomería como CRUD y la nube
Aun así, hay muchos algoritmos hermosos, como los que aparecen en los libros de Knuth, y personalmente me parecen más hermosos que cualquier música
De hecho, se podría argumentar que el código tiene mayor expresividad que la literatura o la música, porque es más general
Si uno piensa en el espacio de todos los videojuegos posibles, demos/intros, imágenes generativas y música generativa, nada de eso sería posible sin código
Creo que se está confundiendo el uso común de un medio con su expresividad
Muchos usos del lenguaje cotidiano tampoco son interesantes, pero hay que mirar el espacio completo de posibilidades
El código es artesanía y un medio para un fin
Aun así, puede ser hermoso, impresionante y creativo, pero es de otro tipo
No es un juicio de valor
El arte también puede ser malo o insípido, y el código puede ser una obra genial
Pero la razón por la que un módulo lunar o un reloj artesanal son hermosos es que realmente funcionan, y eso es difícil de comparar con la música
Como programador profesional que está entrando en el último tercio de una carrera que fue disfrutable, ahora pongo aprender a programar en la misma categoría que “ganarse la vida como poeta”
Es un arte realmente disfrutable y algunos le reconocen valor, pero conviene planear otra forma de ganarse la vida
Los seniors que ya saben programar por ahora parecen estar más o menos bien, pero el trabajo se está convirtiendo cada vez más en cuidar modelos como si fueran colaboradores junior
Me viene a la mente un viejo amigo
Estudió música antigua en Harvard, obtuvo un MFA y era muy brillante
Leía y escribía latín y griego, podía componer e interpretar música en notación medieval, y también publicó un libro sobre bordado antiguo
Pero no consiguió un puesto académico ni encontró empleos que necesitaran esas habilidades
Murió solo hace unos años
Ese podría ser también el destino de muchos programadores
La gente se aferró a la idea de que los LLM no pueden reemplazar verdaderamente a los desarrolladores, y eso es cierto, pero no importa
Para que el mercado laboral se sacuda fuerte, basta con que se reduzca la cantidad de personas necesarias para encargarse de las partes que los LLM no pueden hacer
Aunque la eficiencia de los desarrolladores existentes aumente apenas un 30%, la demanda de desarrolladores podría caer un 20%, y eso tendría un impacto enorme en la demanda y los salarios
Fuera de Occidente, donde la IA no es aceptada, según https://hai.stanford.edu/ai-index/2026-ai-index-report, la IA impulsó la demanda de software
Lo que intento hacer ahora es construir algo, pero sin escribir código con un LLM
Lo sigo usando para consultas
Estoy haciendo en Elixir un agregador de partidas de torneos de Dota2: recibe streams de torneos y los ordena cronológicamente para reducir la incomodidad de ver en YouTube una serie continua de videos
Lo hago porque me gusta programar y me gusta construir cosas
Los LLM me vuelven intelectualmente perezoso, y construir con ellos me resulta menos satisfactorio
Quiero crear, y querer crear es humano
Algunas personas prefieren una forma de crear y otras prefieren otra, y está bien
Al final, creo que mucha gente olvida que programar es una actividad bastante creativa
Dicho de forma un poco polémica, creo que hacer un programa, para bien o para mal, se parece más a pintar un cuadro que a construir un puente
“La concentración misma al enfocarse en el trabajo es profundamente placentera. El placer que se obtiene del producto terminado después de acabar el trabajo no es igual. El artista disfruta el resultado, pero mientras pinta disfruta el arte en sí”
El problema de los LLM es justamente ese
Me quitaron el momento de disfrutar el arte mismo de programar
Hay tantos datos que es muy divertido, y definitivamente me ayudó a ser mejor programador
Personalmente, conocidos que antes de los LLM no eran desarrolladores muy buenos siguen produciendo mal código usando los modelos más recientes
Un conocimiento y una comprensión sólidos de la buena arquitectura y de las prácticas habituales siguen siendo clave
Es fácil olvidar que los conocimientos básicos y el criterio que hoy damos por sentados requirieron mucho tiempo y esfuerzo para aprenderse cuando teníamos menos experiencia
Es algo que observo constantemente
Un LLM puede ser una herramienta que amplifica la fuerza, pero quien no sabe hacer las preguntas correctas o no entiende los matices termina creando mal código, y eso malo simplemente se amplifica
No creo que los modelos actuales puedan evitarlo, especialmente porque los datos de entrenamiento históricamente fueron creados por humanos
¿Alguien conoce a un matemático que no sepa hacer división larga o álgebra básica?
Probablemente no
Porque la matemática básica es necesaria para aprender matemática avanzada, así que una persona así no existe
Que una calculadora haga los cálculos básicos es irrelevante si quieres ser matemático
Del mismo modo, creo que “si dentro de 5 años el desarrollador promedio escribirá código a mano” no tiene relación con si debes aprender a programar cuando quieres dominar el diseño y la construcción de software complejo, sin importar qué método uses
No recuerdo en absoluto cómo hacer división larga, aunque en algún momento sin duda la dominaba
Hoy también soy pésimo con el cálculo mental
Aun así, esas cosas fueron indispensables en el camino para convertirme en matemático; simplemente dejaron de ser relevantes a medida que subió el nivel de abstracción
Escuché muchas veces a matemáticos bromear diciendo que “cuanto más avanzado te vuelves, peor eres en matemáticas”
La mayoría de los matemáticos tendría que pensarlo bastante para resolver un problema de división larga, porque dejaron atrás esa habilidad hace mucho tiempo
Aun así, aunque existan calculadoras y notebooks de Python, la gente aprende y hace matemáticas a mano en todos los niveles para hacer avanzar el campo
La gente está demasiado metida en los LLM como si fueran todo el futuro, pero los LLM en sí son por completo un producto del pasado
Los LLM son más bien un JPEG con compresión con pérdida del lenguaje y del conocimiento expresado en lenguaje que una máquina pensante
Por lo tanto, para expandir el campo y avanzar hacia el futuro, no podemos depender únicamente de algoritmos que regresan a la media
¿No será que el código que reemplazan principalmente los agentes de IA es la capa externa del desarrollo?
Cosas como aplicaciones para usuarios finales, apps, dashboards, aplicaciones empresariales, etc.
En esta “cáscara”, la gente puede tolerar hasta cierto punto un 99% de precisión o código inflado, y las apps hechas con vibe coding pueden afirmar que son “lo suficientemente buenas”.
Aun así, basta ver en qué desastre se convirtieron las apps de Microsoft después de adoptar IA.
Pero en los compiladores, frameworks, herramientas y librerías centrales de las que la gente realmente tiene que depender, todavía se evita usar LLM.
Nadie quiere construir sobre código 99% correcto o inflado, y nadie quiere usar un navegador web programado por IA.
Para crear materiales de construcción realmente buenos, hay que programar uno mismo y saber qué está haciendo.
¿Dónde hay algún caso que se haya acercado a eliminar gradualmente la programación en esas áreas centrales?
Pero terminas pasando mucho tiempo conceptualizando y puliendo abstracciones.
El problema es que conceptualizar requiere cierto estado mental.
Antes de los LLM, era 10% pensamiento difícil y 90% implementación.
La implementación era una especie de recompensa, y se sentía muy bien concretar ideas en estado de flow.
Después de los LLM, bastante seguido me encuentro caminando de un lado a otro solo pensando.
Ahora se parece más a 40% pensamiento y 60% planificación/revisión de código.
Desde entonces no he vuelto a experimentar el estado de flow.
Pensar es divertido pero agotador, y revisar es simplemente molesto.
Sobre todo cuando el LLM cae en patrones de falla raros.
Antes, cuando veía mal código, podía entender de inmediato qué estaba pensando quien lo escribió y por qué no funcionaba.
Ahora hay menos code smells, pero muchas abstracciones mal elegidas, así que hay que tener mucho más cuidado.
De verdad, instrucciones
Dijiste que “nadie quiere construir sobre código 99% correcto o inflado”, pero, amigo, ¿alguna vez usaste Windows?
Si les pregunto a amigos y familiares cercanos, todos odian el software lento e inflado.
Ni siquiera se dan cuenta de cuánto tiempo y productividad les consume.
Desde la aparición de los LLM, lejos de mejorar, empeoró.
Si para ganarse la vida como programador uno tuviera que conseguir solo esos trabajos, la programación podría volverse muy parecida a un deporte.
Puedes disfrutar el básquet como amateur y tomártelo más en serio en la secundaria o la universidad, pero si quieres vivir del básquet tienes que ser lo bastante bueno como para entrar a la NBA.
Creo que los argumentos presentados son muy débiles.
Más que esperanzado, me dejó deprimido; si la lógica restante es esta, siento que la situación se está volviendo realmente desesperada.
Desarrollándolo un poco más: si programar es arte, entonces es el peor arte.
Más bien se parece mucho más a algo como Lego, a la satisfacción de completar un ensamblaje significativo.
Quizás ese sea precisamente el punto del autor.
Como hobby puro, todavía tiene valor, eso sí.
La afirmación de que “programar ayuda con las matemáticas” es igual de débil.
Sin duda ayuda con el álgebra, pero en general creo que las matemáticas de estilo programación ayudan sobre todo a las matemáticas de estilo programación.
Es un tipo raro de matemáticas con bucles, reglas y condicionales, y si el software no se hubiera vuelto tan dominante en primer lugar, no se habría vuelto mainstream.
Si le quitas la cáscara, esa lógica suena más circular que una afirmación con sustancia.
Aprender a programar significa entender un problema, dividirlo en partes pequeñas y manejables, y volver a ensamblarlas.
También incluye depurar e iterar hacia mejores métricas.
Son habilidades y formas de pensar enormemente valiosas que también pueden trasladarse a otros ámbitos de resolución de problemas.
Incluso antes de los LLM, era bien sabido que no se podía decir que realmente entendías un programa si no intentabas escribirlo tú mismo.
No hay atajos para eso.
Lo mejor que puedes hacer es lograr que el modelo lo averigüe por ti.
Tampoco sabes cómo diseñar una buena API ni cómo dividir un sistema en módulos.
El problema es que muchos gerentes no distinguen bien la diferencia entre un buen programador y un vibe coder.
El vibe coder sube muchos PR.
Tal vez incluso el propio gerente pueda subir PR hechos con vibe coding.
Les molesta la idea de que los programadores puedan saber más que ellos.
Porque te enseña a pensar.
https://youtu.be/BRTOlPdyPYU
No es un argumento convincente
Si la mejor razón para convencer a la gente de aprender a programar es que se parece a la notación matemática, es decir, a una de las partes de las matemáticas que más detestan los principiantes, o que es hermosa como el violín, es decir, inútil para un recién llegado, entonces la programación está en serios problemas.
Creo que un mejor argumento es que ayuda a pensar como una computadora.
Pero si quieres aprender eso, hay muchos videojuegos que recomendaría dominar antes que programar.
Para la mayoría de la gente, “aprende a programar” es parecido a decirle a un programador “aprende ensamblador”.
Llevo unos 30 años programando.
porque ejercita el cerebro.
Un cerebro que puede ordenar, interpretar y entender con facilidad la lógica básica y el flujo de control resiste mejor la propaganda y la influencia.
Es el mismo beneficio que leer mucho, pero actúa sobre otros caminos del pensamiento.
Te expones a más visiones del mundo, piensas de forma más crítica sobre cada una y aumenta el pensamiento crítico en general.
En una clase universitaria quizá aprendas ensamblador, pero fuera de eso no hay motivación.
Nadie quería leer ensamblador, y ahora nadie quiere leer código.
Resolver problemas en sí no es difícil.
He visto a gente reinventar en código, sin darse cuenta, bloques de matemáticas “difíciles”.
Por eso empecé a pensar que quizá las matemáticas fueron hechas deliberadamente horribles.
Lo más útil que aprendí sobre computadoras fue construir compuertas lógicas a mano.
Nada me dio una comprensión más profunda de cómo funciona una computadora.
La programación es el siguiente paso.
Todas las capas intermedias se pueden suplir con inferencia, así que se pueden saltar.
No hace falta aprender ensamblador, pero vale la pena leerlo para agarrarle la onda.
Entender las capas que van de las compuertas lógicas al ensamblador, la programación, los juegos y ahora la IA es parecido a leer el modelo OSI para entender redes.
Es una estructura de capas de abstracción apiladas una sobre otra.
Vale la pena aprender programación porque es la capa de abstracción más alta que comparten todas las que están por encima.
Aunque haya cientos de lenguajes de programación, los conceptos son en gran medida los mismos, y si aprendes un lenguaje y entiendes la programación, puedes aplicarlo a casi cualquier otro.
En cambio, hay decenas de miles de juegos divididos en cientos de tipos, y si además incluyes otras aplicaciones, el árbol de variaciones a ese nivel explota.