Ruta para aprender a programar: guía de estudio
Qué lenguaje aprender primero según tu trabajo, cómo estudiar, un plan de 4 semanas y en qué orden leer los cursos: terminal, Git, SQL, Python, Java y más.
Acabas de conseguir tu primer trabajo en una startup, saliste de un bootcamp con un proyecto en React y ahora te piden mantener una API en Java, o eres freelancer y un cliente te pasó una app en Flutter que nunca habías abierto. La pregunta es siempre la misma: "¿por dónde empiezo y en qué orden?". Esta página es la respuesta que damos: qué lenguaje aprender primero según el trabajo que de verdad vas a hacer, cómo estudiar para que lo básico se quede, y qué cursos de este sitio leer en qué orden, de principiante a avanzado.
Cada semana publicamos más cursos en español. Los enlaces marcados "(en inglés)" llevan, por ahora, a la versión en inglés.
Escribimos software desde 2001, y esta es la pregunta que más nos hacen las personas que se suman a un equipo, más que cualquier bug concreto.
Para quién es esta guía y cómo usarla
Esta guía está pensada para tres tipos de lectores:
- Personas en su primer empleo que saben escribir unas cuantas líneas de código pero nunca han puesto nada en producción, y a las que les dijeron "ponte al día" con el lenguaje del equipo.
- Personas que cambian de stack, por ejemplo alguien de desarrollo web que pasa a un equipo de Flutter, o una desarrolladora Java que heredó una herramienta en VB.NET.
- Mentores que quieren un solo enlace para mandar en lugar de escribir el mismo consejo otra vez.
Cómo usarla: lee una vez la siguiente sección sobre hábitos de estudio. Luego usa la tabla de decisión para elegir un solo lenguaje, abre la lista de cursos de ese lenguaje y avanza en orden. Cada curso indica su nivel al principio (principiante, intermedio o avanzado) y termina con un enlace al siguiente.
La mayoría de los cursos tienen secciones de mediciones: tiempos, uso de memoria, tablas de benchmarks. En la primera pasada puedes saltártelas. Existen porque una regla práctica que mediste tú mismo es una regla en la que vas a confiar, pero no es lo que necesitas en tu primera semana. Vuelve a ellas cuando tu trabajo te haga preguntar "¿esto es lo bastante rápido?".
Cómo estudiar lo básico (y cómo están escritos estos cursos)
Cada curso de este sitio se escribió ejecutando el código y pegando la salida real, errores incluidos. Eso solo te sirve si estudias de la misma manera. Estos siete hábitos son los que, en nuestra experiencia, separan a quien es productivo al mes de quien a los tres meses sigue copiando fragmentos.
- Escribe el código tú mismo y ejecútalo. No copies y pegues. Escribir te obliga a notar el punto y coma, los dos puntos después de
ifen Python, el?después de un tipo en Dart. Tus primeros errores de tipeo producen tus primeros mensajes de error, y eso es justo lo que necesitas practicar: leerlos. - Lee el mensaje de error antes de buscar en Google. Los errores del compilador ayudan más de lo que parece. El error de Swift te dice la línea y muchas veces la solución; el
incompatible typesde Java nombra los dos tipos; elBC30512de VB.NET dice exactamente qué conversión implícita bloqueó Option Strict. Lee el mensaje completo, busca el número de línea y mira esa línea. Solo después busca. - Cambia una cosa y predice la salida antes de ejecutar. Cuando un ejemplo funcione, cambia un valor: deja la lista vacía, pasa
null, usa un número mayor a dos mil millones. Anota lo que esperas y luego ejecuta. Si te equivocas, encontraste algo que no entendías, que es justamente el objetivo. - Haz los ejercicios antes de leer las respuestas. Los cursos de Dart, Swift y PHP terminan con ejercicios. Dale a cada uno al menos quince minutos antes de abrir la respuesta. En los cursos sin ejercicios, el paso 3 es tu ejercicio.
- Mide en lugar de creer en mitos. La programación está llena de reglas que alguna vez fueron ciertas. En nuestro curso de concurrencia en Python, agregar hilos a un trabajo limitado por CPU no lo hizo más rápido; en la serie de ML, el descenso de gradiente necesitó 140,538 épocas con variables sin escalar y 2 con variables escaladas. No tienes que medirlo todo, pero cuando una afirmación importa, ponla a prueba.
- Usa asistentes de IA para entender errores, no para saltarte la escritura. Pegar un error que ya leíste y preguntar "¿por qué pasa esto?" es un buen uso. Pedirle que haga el ejercicio por ti se salta justo la parte que te enseña. Si te sugiere una corrección, asegúrate de poder explicar por qué funciona antes de quedarte con ella.
- Que sea concreto y corto. Treinta minutos ejecutando código valen más que dos horas viendo videos. Cada sesión de estudio debería terminar con algo que ejecutaste, no con algo sobre lo que leíste.
Qué lenguaje aprender primero, según tu objetivo
Elige el lenguaje por el trabajo que vas a hacer, no por los rankings de popularidad. Si tu equipo ya tiene un código base, su lenguaje gana cualquier discusión.
| Tu objetivo | Empieza con | Después |
|---|---|---|
| Apps móviles (iOS y Android con un solo código) | Dart, luego Flutter | Swift si también tocas código nativo de iOS |
| Solo iOS o funciones nativas de iOS | Swift | Dart si el equipo también publica en Flutter |
| Páginas web, APIs, trabajo en servidor | PHP, Java o Python (el que use tu código base) | Regex y SQL seguro en el curso de PHP PDO |
| Análisis de datos, IA, scripts de automatización | Python | La serie de ML desde cero |
| Apps .NET de la empresa, herramientas de Windows | C# | VB.NET solo si mantienes código VB |
| Código VB heredado que hay que mantener funcionando | VB.NET | C#, para el curso de interoperabilidad |
| Fundamentos de informática (todos) | Algoritmos y estructuras de datos | Regex |
Si nadie te dijo qué lenguaje usa el equipo, pregunta. Es una mejor primera pregunta que cualquiera que podamos responder aquí.
Todas las series en orden, de principiante a avanzado
Las series de seis partes siguen el mismo patrón: los cursos 1 y 2 son de nivel principiante, el 3 y el 4 intermedio, el 5 y el 6 avanzado. En la primera pasada, detente después del curso 4.
Python
| Nivel | Curso |
|---|---|
| Principiante | 1. Tipos y mutabilidad en Python: nombres, copias, is vs == |
| Principiante | 2. Funciones en Python: ámbito, argumentos por defecto y closures |
| Intermedio | 3. Iteradores y generadores en Python: memoria medida (en inglés) |
| Intermedio | 4. Decoradores y context managers en Python, medidos (en inglés) |
| Avanzado | 5. El GIL de Python: hilos vs procesos vs asyncio (en inglés) |
| Avanzado | 6. Profiling en Python: qué hizo el código realmente más rápido (en inglés) |
Java
| Nivel | Curso |
|---|---|
| Principiante | 1. Fundamentos de Java: tipos, strings y == vs equals |
| Principiante | 2. Clases, records, interfaces y tipos sealed en Java (en inglés) |
| Intermedio | 3. Rendimiento de las colecciones de Java, medido en JDK 26 (en inglés) |
| Intermedio | 4. Streams, lambdas y Optional en JDK 26 (en inglés) |
| Avanzado | 5. Virtual threads en JDK 26: límites medidos (en inglés) |
| Avanzado | 6. JIT, GC y memoria en JDK 26, medidos (en inglés) |
PHP
| Nivel | Curso |
|---|---|
| Principiante | 1. Fundamentos de PHP: tipos, == vs ===, strings y arrays |
| Principiante | 2. Funciones, formularios y servidor integrado en PHP (en inglés) |
| Intermedio | 3. POO en PHP: clases, interfaces, enums y novedades de 8.5 (en inglés) |
| Intermedio | 4. PHP PDO y SQLite: inyección SQL, mostrada y corregida (en inglés) |
| Avanzado | 5. Seguridad en PHP: XSS, CSRF y sesiones en PHP 8.5 (en inglés) |
| Avanzado | 6. OPcache, JIT y profiling en PHP 8.5, medidos (en inglés) |
Si escribes PHP expuesto a internet, considera los cursos 4 y 5 obligatorios, no avanzados.
Dart (para Flutter)
| Nivel | Curso |
|---|---|
| Principiante | 1. Fundamentos de Dart: tipos, final vs const y null safety |
| Principiante | 2. Funciones y colecciones en Dart: iterables perezosos (en inglés) |
| Intermedio | 3. Clases, mixins y extensiones en Dart 3.11 (en inglés) |
| Intermedio | 4. Records, patterns y clases sealed en Dart, medidos (en inglés) |
| Avanzado | 5. Async, streams e isolates en Dart 3.11, medidos (en inglés) |
| Avanzado | 6. Rendimiento en Dart: JIT vs AOT, calentamiento y memoria (en inglés) |
Si trabajas con Flutter, lee el curso 5 pronto: casi toda app se conecta a la red, y una interfaz congelada suele ser un error de async.
Swift
| Nivel | Curso |
|---|---|
| Principiante | 1. Fundamentos de Swift: let, tipos, strings y opcionales |
| Principiante | 2. Funciones, closures y colecciones en Swift, cronometradas (en inglés) |
| Intermedio | 3. Structs, clases, enums y protocolos en Swift (en inglés) |
| Intermedio | 4. Manejo de errores y genéricos en Swift: throws, Result (en inglés) |
| Avanzado | 5. Concurrencia en Swift: async/await, actors y errores de Swift 6 (en inglés) |
| Avanzado | 6. ARC, ciclos de retención y rendimiento con -O en Swift (en inglés) |
VB.NET
| Nivel | Curso |
|---|---|
| Principiante | 1. Fundamentos de VB.NET: Option Strict, tipos y Nothing |
| Principiante | 2. Procedimientos en VB.NET: ByVal, ByRef, AndAlso y Try/Catch (en inglés) |
| Intermedio | 3. Clases, herencia e interfaces en VB.NET sobre .NET 10 (en inglés) |
| Intermedio | 4. LINQ y colecciones en VB.NET, ejecutado en .NET 10 (en inglés) |
| Avanzado | 5. Async/Await en VB.NET: trampas, deadlocks y WhenAll (en inglés) |
| Avanzado | 6. VB.NET en .NET 10: qué funciona y qué rompe C# (en inglés) |
C
El curso de C# no son seis cursos largos sino muchos artículos cortos, uno por tema. Léelos en este orden.
Principiante: instalación y núcleo del lenguaje
- Configurar C# en 2026: SDK de .NET 10, dotnet CLI y editores (en inglés)
- Variables y tipos en C# con .NET 10: decimal vs double (en inglés)
- Operadores en C# con .NET 10: overflow, ??, % y desplazamientos (en inglés)
- if vs switch en C#: patterns, CS8509 y velocidad (en inglés)
- Bucles en C# con .NET 10: cómo funciona foreach por dentro (en inglés)
- break, continue y goto en C#: salir de bucles anidados (en inglés)
- Arrays en C# con .NET 10: jagged vs 2D, Span y costo de redimensionar (en inglés)
- Métodos en C# con .NET 10: ref, out, params y sobrecargas (en inglés)
- Manejo de excepciones en C#, probado de nuevo en .NET 10 (en inglés)
Intermedio: clases y colecciones
- Clases en C# con .NET 10: primary constructors, required, init (en inglés)
- Modificadores de acceso y this en C#: prueba con dos ensamblados (en inglés)
- Constructores y finalizadores en C#: orden, GC y Dispose (en inglés)
- Propiedades en C#: get/set, auto-propiedades e init (en inglés)
- Propiedades en C# a fondo: la palabra clave field y required (en inglés)
- Herencia en C#: override vs new y trampas del constructor (en inglés)
- Interfaces en C#: métodos por defecto y static abstract (en inglés)
- Structs en C#: copias, copias defensivas y costo del boxing (en inglés)
- Métodos de extensión, partial y clases anidadas en C# (en inglés)
- ArrayList y Hashtable en C#: costo del boxing y migración (en inglés)
List<T>por dentro: crecimiento de capacidad y AsSpan (en inglés)- Cómo elegir colecciones en C#: Dictionary, HashSet, Frozen (en inglés)
- Archivos en C# con .NET 10: async, BOM y trampas de rutas (en inglés)
Avanzado: funciones como valores, LINQ, genéricos y eventos
- Tipos y métodos anónimos en C# en 2026 (en inglés)
- Expresiones lambda en C#, ejecutadas de nuevo en .NET 10 (en inglés)
- Delegados Func y Action en C#: trampas y costo de llamada (en inglés)
- Fundamentos de LINQ en C#, ejecutados en .NET 10 (en inglés)
- LINQ en C#: sintaxis de consulta vs de métodos (en inglés)
- GroupBy y Join en LINQ: claves, ToLookup y CountBy (en inglés)
- Genéricos en C# con .NET 10: restricciones, varianza y boxing (en inglés)
- Delegados y eventos en C#, probados de nuevo en .NET 10 (en inglés)
- Callbacks con delegados en C#: progreso, cancelación y cadenas (en inglés)
- Eventos en C# más allá de lo básico: accessors, async y weak (en inglés)
- Reflexión y atributos en C#: costo de Invoke y avisos de AOT (en inglés)
Temas solo de Windows (léelos cuando tu trabajo los necesite): El registro de Windows en C# con .NET 10: CA1416 y RegistryView (en inglés) · WinForms ShowDialog vs Show: modal y no modal (en inglés) · Botones Aceptar/Cancelar en WinForms: AcceptButton y DialogResult (en inglés) · WinForms de instancia única con Mutex (en inglés)
HTTP y fundamentos web (para quien toque un servidor o una API)
Toda app habla HTTP. Estos cursos leen la salida real de curl -v contra servidores de prueba locales: códigos de estado, redirecciones, cookies, caché, TLS y compresión. Lee del 1 al 3 antes de tu primera tarea con una API.
| Nivel | Curso |
|---|---|
| Principiante | 1. Fundamentos de HTTP: lee cada línea de curl -v |
| Principiante | 2. Códigos de estado HTTP y redirecciones, probados con curl |
| Intermedio | 3. Encabezados, cookies y sesiones HTTP con curl y PHP (en inglés) |
| Intermedio | 4. Caché HTTP: ETag, Cache-Control y 304, medidos (en inglés) |
| Avanzado | 5. HTTPS y certificados TLS con openssl y curl (en inglés) |
| Avanzado | 6. Rendimiento HTTP: keep-alive, gzip, HTTP/2 y CORS (en inglés) |
JavaScript (ejecutado en JavaScriptCore)
Solo el núcleo del lenguaje: tipos, funciones, objetos, clases, promesas y rendimiento, todo ejecutado en el shell jsc que viene con macOS. El DOM del navegador y Node.js se explican, pero se marcan como "no ejecutado aquí".
| Nivel | Curso |
|---|---|
| Principiante | 1. Fundamentos de JavaScript: tipos, == vs === y NaN |
| Principiante | 2. Funciones, this y closures en JavaScript |
| Intermedio | 3. Objetos y arrays en JavaScript: map, reduce y trampas al copiar (en inglés) |
| Intermedio | 4. Clases, prototipos y módulos en JS, ejecutados en jsc (en inglés) |
| Avanzado | 5. Promesas y event loop en JS, impresos y cronometrados (en inglés) |
| Avanzado | 6. Rendimiento, memoria y números en JS, medidos en jsc (en inglés) |
C (cómo funciona la máquina de verdad)
Opcional para la mayoría de los trabajos, pero es el camino más rápido para entender la memoria, los punteros y por qué los otros lenguajes se comportan como se comportan. Compilado con clang, con AddressSanitizer atrapando los bugs.
| Nivel | Curso |
|---|---|
| Principiante | 1. Fundamentos de C: primer programa, tipos, printf y warnings |
| Principiante | 2. Bucles, funciones y arrays en C: off-by-one y ASan (en inglés) |
| Intermedio | 3. Punteros y malloc en C: use-after-free, fugas y ASan (en inglés) |
| Intermedio | 4. Strings, structs y desbordamientos de búfer en C con ASan (en inglés) |
| Avanzado | 5. Comportamiento indefinido en C: por qué -O0 y -O2 no coinciden (en inglés) |
| Avanzado | 6. Rendimiento, Makefiles y lldb en C, medidos en macOS (en inglés) |
C++ (después de C, o directo desde otro lenguaje)
Para videojuegos, sistemas embebidos, código de alto rendimiento y programación competitiva. Compilado con Apple clang 21 y libc++, con sanitizers atrapando los bugs y cada afirmación de velocidad medida.
| Nivel | Curso |
|---|---|
| Principiante | 1. Fundamentos de C++: primer programa, tipos, referencias y strings (en inglés) |
| Principiante | 2. Funciones, sobrecarga, std::vector y strings en C++ (en inglés) |
| Intermedio | 3. Clases, RAII y la regla de cero, tres y cinco en C++ (en inglés) |
| Intermedio | 4. Punteros inteligentes y semántica de movimiento en C++, medidos (en inglés) |
| Avanzado | 5. Templates, concepts, algoritmos de la STL y ranges en C++ (en inglés) |
| Avanzado | 6. Contenedores, hilos y -O2 en C++: rendimiento medido (en inglés) |
Algoritmos y estructuras de datos (para todos)
Los ejemplos son principalmente en C y C++, con algo de C#, pero las ideas sirven para cualquier lenguaje. Léelos cuando ya te sientas cómodo con bucles y funciones en tu propio lenguaje.
- Principiante, búsqueda y ordenamiento: Búsqueda lineal vs binaria vs HashSet, medidas (en inglés) → Búsqueda binaria en C (en inglés) → Bubble, insertion y quick sort en C, medidos (en inglés)
- Principiante a intermedio, estructuras lineales: Lista enlazada simple en C++ (en inglés) → Lista doblemente enlazada en C++ (en inglés) → Lista enlazada circular en C++ y el problema de Josefo (en inglés) → Pila (stack) en C++: overflow, ASan y benchmarks (en inglés) → Cola enlazada en C++: fugas y dequeue vacío (en inglés) → Cola circular en C++: llena vs vacía, módulo vs máscara (en inglés)
- Intermedio, árboles y heaps: Recorrido de árboles en C++: cuándo desborda la recursión (en inglés) → Árbol binario de búsqueda en C (en inglés) → Heap binario: heapify en O(n), heapsort y PriorityQueue (en inglés)
- Avanzado, grafos y estrategia: DFS en C++ y C#: límites de recursión, ciclos y orden topológico (en inglés) → BFS en C++: caminos más cortos y el bug de la marca de visitado (en inglés) → Algoritmos voraces en C: cuándo falla el cambio de monedas frente a DP (en inglés)
Expresiones regulares (para todos)
Todo desarrollador termina escribiendo una regex para buscar en logs, validar entradas o limpiar datos rápido. Los ejemplos se ejecutan en .NET, Python, PHP y motores tipo JavaScript.
- Principiante: ¿Qué es una regex? Usos, límites y una prueba de velocidad en .NET (en inglés) → Coincidencias simples con regex: mayúsculas, cultura y escape (en inglés) → Metacaracteres de regex y la trampa del salto de línea con $ (en inglés) → Clases de caracteres:
[abc], rangos y\p{L}, probados (en inglés) - Intermedio: Cuantificadores de regex: greedy, lazy y possessive, medidos (en inglés) → Grupos en regex: numeración, grupos con nombre y balanceo en .NET (en inglés) → Referencias inversas en .NET, Python, PHP y JS (en inglés)
- Avanzado: Regex para caracteres repetidos:
(.)\1+en 4 motores (en inglés) → Lookaround en 5 motores: Python, PHP, .NET y JS (en inglés)
Línea de comandos (para todos, empieza aquí)
Estas tres series son para todos, sin importar el lenguaje que elegiste. La mayoría de las personas nuevas se topan con la terminal y Git el primer día y con SQL durante el primer mes, normalmente antes de sentirse cómodas en su lenguaje principal. Todo se ejecutó en SQLite 3.51, Git 2.54 y zsh/bash de macOS; cuando las herramientas de Linux (GNU) se comportan distinto, los cursos lo indican.
| Nivel | Curso |
|---|---|
| Principiante | 1. Fundamentos de la terminal: rutas, archivos y espacios en los nombres |
| Principiante | 2. Pipes y redirección: grep, sort y uniq sobre un log real |
| Intermedio | 3. find, xargs, sed y awk en macOS: trampas BSD vs GNU (en inglés) |
| Intermedio | 4. Variables, comillas y códigos de salida en el shell: bash vs zsh (en inglés) |
| Avanzado | 5. Procesos, jobs y señales: códigos de salida 130/137/143 (en inglés) |
| Avanzado | 6. Scripts de shell robustos: locks, traps, logs y cron (en inglés) |
Git (para todos)
| Nivel | Curso |
|---|---|
| Principiante | 1. Fundamentos de Git: init, add, commit y .gitignore |
| Principiante | 2. Ramas, merges y conflictos en Git, paso a paso |
| Intermedio | 3. Remotos en Git: push, pull, fetch y pushes rechazados (en inglés) |
| Intermedio | 4. Rebase, cherry-pick y reescribir la historia de Git sin riesgos (en inglés) |
| Avanzado | 5. Deshacer en Git: reset, revert, restore, reflog y stash (en inglés) |
| Avanzado | 6. Git por dentro: objetos, packfiles, gc y bisect (en inglés) |
SQL (para todos)
| Nivel | Curso |
|---|---|
| Principiante | 1. Fundamentos de SQL: SELECT, WHERE, ORDER BY y trampas con NULL |
| Principiante | 2. INSERT, UPDATE, DELETE y restricciones en SQL, probados |
| Intermedio | 3. JOINs, GROUP BY y subconsultas en SQL: trampas medidas (en inglés) |
| Intermedio | 4. Índices SQL y EXPLAIN QUERY PLAN sobre 1M de filas (en inglés) |
| Avanzado | 5. Transacciones SQL, WAL y 'database is locked' (en inglés) |
| Avanzado | 6. Funciones de ventana y CTE en SQL para reportes reales (en inglés) |
Machine learning desde cero (después de Python)
Cinco cursos que usan solo la biblioteca estándar de Python, para que veas qué hace el "entrenamiento" antes de que una biblioteca lo esconda. Termina primero los cursos 1 a 4 de Python.
- Regresión lineal desde cero: GD, SGD y escalado (en inglés) (intermedio)
- k-means en Python puro: mínimos locales y k-means++ (en inglés) (intermedio)
- Naive Bayes en Python puro sobre 86 artículos reales del blog (en inglés) (intermedio)
- Del perceptrón a la red neuronal en Python puro, medido (en inglés) (avanzado)
- TF-IDF y BM25 desde cero: buscando en nuestro propio blog (en inglés) (avanzado, el puente hacia RAG)
Un plan para tus primeras cuatro semanas
Este plan asume cerca de una hora al día, además de tu onboarding normal. Cubre un lenguaje más los fundamentos compartidos. No incluye los cursos avanzados, a propósito.
| Semana | Qué hacer | Terminaste cuando |
|---|---|---|
| 1 | Instala las herramientas y luego haz los cursos 1 y 2 de tu lenguaje. Escribe cada ejemplo. | Puedes ejecutar un archivo desde la terminal y explicar un mensaje de error que te apareció. |
| 2 | Cursos 3 y 4, y después escribe una herramienta pequeña para ti (un limpiador de CSV, un renombrador de archivos, una app de una pantalla). | La herramienta funciona con tus propios datos, unas 100 líneas. |
| 3 | Fundamentos: búsqueda lineal y binaria, ordenamiento, el curso de pila; los cursos de regex "¿Qué es una regex?" y "Metacaracteres". | Puedes decir cuándo un HashSet le gana a una lista y escribir una regex para una línea de log. |
| 4 | Lee el código de tu equipo. Encuentra un lugar donde aparezca algo de las semanas 1 a 3. Envía tu primer cambio pequeño. | Un pull request revisado, por pequeño que sea. |
Antes de la semana 1, o en paralelo: los cursos 1–2 de línea de comandos y 1–2 de Git. La mayoría de las preguntas del tipo "no corre" de la primera semana terminan siendo una ruta, un espacio en el nombre de un archivo o un cambio sin commit, no el lenguaje.
Para C#, reemplaza "cursos 1 y 2" por los artículos 1 a 9 de la lista de principiante y "cursos 3 y 4" por los artículos 10 a 22, y cuenta con que las semanas 1 y 2 te tomen tres semanas. Es normal: los artículos son cortos, pero son más.
Los cursos avanzados (5 y 6: async, concurrencia, rendimiento, memoria) vienen después, cuando una tarea real los pida. Leerlos en la semana 2 casi siempre solo genera confusión.
Cuando te atores
- Achica el programa. Borra código hasta que el problema desaparezca y luego vuelve a poner lo último que quitaste. Un ejemplo de diez líneas que falla es más fácil de entender y de preguntar.
- Imprime más de lo que crees necesario. Imprime el valor y su tipo (
type(x)en Python,x.runtimeTypeen Dart,x.GetType()en C#). La mitad de los bugs de principiante son un valor que no es del tipo que suponías. - Revisa la versión.
python3 --version,java -version,dart --version,php -v,swift --version,dotnet --version. Un ejemplo escrito para una versión nueva puede fallar en una vieja con un error confuso. - Pregunta bien. Lleva el código, el texto completo del error y lo que ya intentaste. Un mentor puede responder eso en dos minutos; "no funciona" toma veinte.
- Para a los 30 minutos y pregunta. Pasar toda una tarde atascado enseña menos que desatascarte en media hora y usar el resto para practicar.
Una nota honesta sobre nuestro entorno
Los cursos se ejecutaron en una Mac con Apple Silicon (M1 Pro) con versiones específicas: Python 3.9 y 3.11, OpenJDK 26, PHP 8.5, Dart SDK 3.11, Swift 6.4, .NET 10 y Apple clang 21, SQLite 3.51, Git 2.54, y zsh 5.9 / bash 3.2 en macOS. Cada curso indica las versiones exactas que usó. En Windows o Linux, o con otras versiones, las rutas de archivos, los tiempos y algunos mensajes de error van a ser distintos. Los artículos de WinForms se compilaron para Windows pero no se ejecutaron en la Mac, y lo dicen. Los tiempos vienen de una sola computadora y sirven para mostrar qué enfoque gana y por cuánto, más o menos, no son números exactos que debas esperar.
Si algo de un curso no coincide con lo que ves, revisa primero la versión. Si sigue siendo distinto, es útil saberlo, y probablemente es señal de que algo cambió.
Preguntas frecuentes
¿Qué lenguaje de programación debo aprender primero si acabo de entrar a trabajar?
El que usa tu equipo. Apps móviles: Dart con Flutter, o Swift si solo es iOS. Web y servidores: PHP, Java o Python, según en qué esté escrito el código. Datos e IA: Python y después la serie de machine learning desde cero. Código .NET de la empresa o herramientas viejas de Windows: C#, o VB.NET si eso es lo que vas a mantener. La terminal, Git y SQL van primero para todos; algoritmos, estructuras de datos y regex también son para todos.
¿Tengo que leer las secciones de mediciones y benchmarks de cada curso?
No. En la primera pasada lee la explicación, escribe y ejecuta los ejemplos y haz los ejercicios. Sáltate las tablas de benchmarks y los cursos avanzados (el 5 y el 6 de cada serie de seis). Vuelve a ellos cuando tu trabajo tenga que ver con rendimiento o concurrencia.
¿Está bien usar ChatGPT u otro asistente de IA mientras aprendo a programar?
Sí, para explicarte un mensaje de error que ya leíste o para preguntar por qué una salida te sorprendió. No dejes que escriba los ejemplos por ti: escribirlos es como tus dedos y tus ojos aprenden la sintaxis, y es donde aparecen la mayoría de los errores de la primera semana.