wandres.dev
NIVEL DIOS: SÍNTESIS · el lenguaje completo

Un plan de dominio continuo: profundizar, contribuir y no quemarse

Terminar un track no es llegar: es quedarse sin currículo. A partir de aquí el progreso deja de venir dado y hay que fabricarlo. Un sistema de tres bucles, una ruta concreta hasta tu primer commit en el proyecto Swift, y una política de atención que hace el conocimiento acumulativo en lugar de agotador.

⏱ 22 min

Hasta ahora alguien decidía qué venía después. Esa comodidad se acaba en esta línea: no hay nivel cuarenta, y el siguiente paso no está escrito en ningún índice. Es la transición más difícil de cualquier disciplina, porque el aprendizaje deja de ser una secuencia y pasa a ser un sistema que tienes que diseñar y sostener tú. La mayoría fracasa aquí de dos maneras simétricas. Unos se detienen, siguen usando lo que ya saben y en tres años son buenos en un Swift que ya no existe. Otros intentan seguirlo todo, se suscriben a quince fuentes, leen cada propuesta y cada nota de versión, y abandonan a los seis meses convencidos de que el problema era su capacidad. Ninguno de los dos falla por falta de talento: fallan por no tener un sistema. Esta lección es ese sistema, y está construido sobre lo que la investigación sobre pericia sabe de verdad, no sobre motivación.

🎯 Al terminar esta lección sabrás
  • Montar un sistema de tres bucles con horizontes distintos en lugar de una lista de deseos.
  • Ejecutar la ruta más corta y realista hasta una contribución aceptada en el ecosistema Swift.
  • Diseñar una política de fuentes que te mantenga al día con un presupuesto de atención acotado.
  • Distinguir la práctica que produce pericia de la que solo produce sensación de fluidez.

Tres bucles, no una lista

Una lista de temas pendientes no sobrevive a un trimestre ocupado. Un sistema de bucles sí, porque cada bucle tiene su propia frecuencia, su propio objetivo y su propia señal de que funcionó.

La razón de que sean tres y no uno es que el aprendizaje tiene tres necesidades incompatibles entre sí: exposición constante a lo desconocido, cierre de preguntas concretas y construcción de algo que no cabe en una sesión. Un solo ritmo no puede servir a las tres, y por eso la gente que solo lee nunca consolida, la que solo experimenta nunca amplía y la que solo hace proyectos grandes se queda sin repertorio.

El bucle diario dura entre quince y treinta minutos y su objetivo es el contacto, no el progreso. Consiste en una sola cosa: leer código que todavía no sabrías escribir. Un archivo de stdlib/public/core, una implementación de swift-collections, un módulo de un proyecto de código abierto que admires. No hay que terminarlo ni entenderlo entero; hay que anotar una pregunta. Las preguntas se acumulan en un fichero y son la materia prima del siguiente bucle.

El bucle semanal dura una o dos horas y su objetivo es la resolución. Tomas una pregunta del fichero y la conviertes en un experimento reproducible: un Package.swift mínimo, dos variantes que difieran en una decisión, una medición o un volcado de SIL, y tres líneas de conclusión escritas. Ese registro escrito es lo que distingue este bucle de simplemente cacharrear; sin la conclusión escrita, en dos meses tendrás la vaga sensación de haberlo mirado y ningún dato.

El bucle trimestral dura entre diez y veinte horas repartidas y su objetivo es la profundidad. Es un proyecto con entregable público: implementar una estructura de datos no trivial con ownership explícito, escribir una macro que resuelva un problema real de tu equipo, portar una biblioteca a Linux, o contribuir un parche. Uno por trimestre, terminado y publicado. Cuatro al año durante tres años son doce artefactos que constituyen una trayectoria visible, y la visibilidad importa porque es lo que convierte el conocimiento privado en oportunidades.

El experimento del bucle semanal no necesita infraestructura, y ese es su mérito: si montarlo cuesta más de dos minutos, no lo harás.

mkdir -p ~/lab/2026-w31 && cd ~/lab/2026-w31
swift package init --type executable --name Pregunta
# dos variantes en el mismo fichero, una sola diferencia entre ellas
swiftc -emit-sil -O Sources/Pregunta/main.swift | swift demangle > sil.txt

Y la conclusión escrita cabe en tres líneas, siempre con la misma estructura: qué preguntaste, qué observaste, qué criterio general se deriva. La tercera línea es la única que sobrevive al año, porque un criterio se transfiere a situaciones nuevas y una medición concreta no.

flowchart LR
D[Bucle diario: leer y preguntar] --> P[Fichero de preguntas]
P --> S[Bucle semanal: experimento y conclusion escrita]
S --> N[Cuaderno de decisiones]
N --> T[Bucle trimestral: artefacto publico]
T --> D
style D fill:#89b4fa,color:#11111b
style T fill:#a6e3a1,color:#11111b

La ruta corta hasta contribuir

Contribuir al proyecto Swift parece reservado a compiladoristas y no lo es. Hay una escalera, y los primeros peldaños son accesibles esta misma semana. Lo que hace valiosa la contribución no es el tamaño del cambio sino el ciclo completo que te obliga a recorrer: entender un sistema que no escribiste, defender una decisión ante alguien que sabe más y aceptar una corrección técnica sin tomártela en lo personal. Ese ciclo es difícil de conseguir de otra forma y es exactamente lo que acelera la pericia.

🔱

Peldaño uno: revisar

Participa en un hilo de revisión de una propuesta con un caso de uso concreto de tu trabajo. Es la contribución más barata y de las más valoradas, porque el equipo necesita datos de campo.

📄

Peldaño dos: documentar

Comentarios de documentación incompletos, ejemplos que ya no compilan, mensajes de error confusos. Son PRs pequeñas, revisables y con dueño claro.

🧪

Peldaño tres: pruebas

Reproducir un bug reportado y convertirlo en un test mínimo con FileCheck. Muchas veces el test es la mitad del trabajo de arreglarlo.

🧰

Peldaño cuatro: paquetes

swift-collections, swift-algorithms, swift-syntax, sourcekit-lsp. Repos más pequeños, umbral más bajo, y el mismo proceso de revisión que el compilador.

El procedimiento operativo es el mismo en los cuatro peldaños: abre una incidencia o comenta en una existente antes de escribir código, describe el enfoque en dos párrafos y espera confirmación, envía una PR pequeña y con test, y responde a la revisión sin defender el diseño más de lo que aguanta. La causa número uno de PRs abandonadas no es la calidad técnica: es empezar por el código en vez de por la conversación.

Conviene además tener calibrado el tamaño. Una PR de treinta líneas con un test se revisa en días; una de mil líneas que reorganiza un módulo se revisa en meses o nunca, por buena que sea. Si tu cambio no cabe en un párrafo de descripción, todavía no está listo para enviarse: está listo para partirse en tres.

💡
Contribuir a tu propio equipo cuenta igual

La escalera no obliga a pasar por el repositorio de Swift. Escribir el documento de decisión que faltaba, migrar un módulo al modo estricto y contar cómo, o construir la macro que elimina doscientas líneas repetidas en tu base de código produce exactamente el mismo aprendizaje. Lo que importa del artefacto trimestral es que sea real, revisado por otro y terminado.

⚠️
El error de calibración típico

Elegir como primera contribución algo del optimizador de SIL o del sistema de tipos. Son las áreas con más contexto implícito y más riesgo de regresión, y una PR ahí puede tardar meses. Empieza por donde el ciclo de realimentación es corto: tu objetivo inicial no es el impacto, es aprender el proceso.

Atención acotada, conocimiento acumulativo

El tercer frente no es aprender más, es decidir qué ignorar. Mantenerse al día es un problema de filtrado, no de volumen. La política que funciona tiene tres reglas. Primera, pocas fuentes primarias y ninguna secundaria: el repositorio de propuestas, los foros oficiales y las notas de versión del compilador. Los resúmenes de terceros son cómodos y te dejan siempre con la versión digerida de la decisión, nunca con el razonamiento. Segunda, una cadencia fija en lugar de flujo continuo: media hora cada quince días revisando qué propuestas cambiaron de estado, en vez de notificaciones. Tercera, y la más difícil, aprender bajo demanda con una excepción: no estudies una feature hasta que tengas un problema que la necesite, salvo que sea estructural, es decir, salvo que cambie el modelo mental y no solo añada una herramienta. La concurrencia estricta era estructural. Un nuevo operador de una biblioteca no lo es.

El criterio para distinguir una cosa de otra se puede escribir como una pregunta única: ¿esto cambia lo que el compilador acepta, o solo lo que yo escribo? Si cambia lo que el compilador acepta, tarde o temprano lo vas a encontrar en un error y conviene entenderlo antes. Si solo cambia lo que escribes, puede esperar a que lo necesites.

flowchart TD
N[Novedad detectada] --> Q[Cambia lo que el compilador acepta]
Q -->|si| E[Estructural: estudiar ahora]
Q -->|no| B[Herramienta: anotar y esperar demanda]
E --> A[Probar en un modulo pequeno]
B --> C[Cola de bajo interes]
style E fill:#f9e2af,color:#11111b
style B fill:#89b4fa,color:#11111b

Hay un cuarto elemento que casi nadie incluye y que sostiene a los otros tres: una fecha de caducidad para la ignorancia deliberada. Escribir «no voy a estudiar macros hasta abril» convierte una omisión angustiosa en una decisión con plazo, y es la diferencia entre elegir qué no aprender y sentir que vas siempre por detrás. La sensación es completamente distinta y el resultado técnico es el mismo.

El cuaderno de decisiones

Todo lo anterior se apoya en un único artefacto, y si solo puedes quedarte con una cosa de esta lección, que sea esta. Un cuaderno de decisiones no es un blog ni una colección de apuntes: es un registro fechado de preguntas cerradas, con el criterio general separado del caso concreto. Su formato importa poco mientras tenga cuatro campos.

2026-07-31 · Por que "any Coleccion" mata el rendimiento en el bucle de render

Pregunta.  El perfilador senala un 18% en retain y release dentro del bucle.
Evidencia. SIL de las dos variantes: la existencial mantiene witness_method y
           una caja por elemento; la generica se especializa y desaparece.
Criterio.  La especializacion necesita el tipo concreto en el sitio de llamada.
           Usar "any" solo si la heterogeneidad existe en tiempo de ejecucion.
Caduca.    Revisar cuando cambie la representacion de los existenciales.

El campo que hace el trabajo pesado es criterio, porque es lo único transferible: dentro de un año no recordarás el porcentaje ni el bucle, pero el criterio se aplicará a un problema que hoy no existe. El campo caduca es el segundo en importancia y casi nadie lo pone: registra que tu conclusión estaba atada a una versión del lenguaje, y evita que dentro de tres años sigas repitiendo como ley una limitación que ya se levantó.

🔱

Fuentes primarias

Repositorio de propuestas, foros oficiales, notas de versión. Tres, no quince, y siempre antes que cualquier resumen.

🗓️

Cadencia

Media hora cada quince días. Sin notificaciones, sin scroll, con una lista de qué cambió de estado.

📓

Registro

Una entrada por pregunta cerrada, con criterio y fecha de caducidad. Sin registro no hay acumulación, solo repetición.

🎯

Alcance declarado

Lo que decides no aprender, escrito y con plazo. Es la única defensa real contra la lista infinita.

Hay una objeción evidente y conviene responderla: escribir la entrada cuesta cinco minutos que preferirías dedicar al siguiente problema. El cálculo es correcto a una semana vista y desastroso a un año vista, porque sin registro la misma pregunta se investiga tres veces y las tres se olvida el criterio. Cinco minutos por entrada y cuarenta entradas al año son poco más de tres horas; reinvestigar cuarenta preguntas cuesta semanas. La escritura no es documentación del aprendizaje, es la parte del aprendizaje que lo hace permanente.

Al cabo de un año el cuaderno tiene entre treinta y cincuenta entradas, y ocurre algo que no se puede provocar de otra forma: al releerlo aparecen patrones entre criterios que se escribieron con meses de distancia, y de esos patrones salen las ideas que se convierten en el artefacto trimestral siguiente. El sistema empieza a alimentarse solo, y ese es el punto en el que el dominio deja de depender de tu fuerza de voluntad.

Lo que la investigacion sobre pericia dice y como se traduce a Swift

Conviene apoyar todo esto en lo que se sabe de verdad sobre como se adquiere la pericia, porque el sentido comun aqui falla de forma sistematica. El hallazgo central de la literatura sobre practica deliberada, desde los trabajos de Ericsson en adelante, es que el tiempo dedicado a una actividad predice muy mal el rendimiento, y que lo que predice bien es la practica con tres propiedades: tarea justo por encima de tu nivel actual, realimentacion inmediata y correccion explicita del error. Programar en el trabajo casi nunca cumple las tres, porque tiendes a resolver los problemas con lo que ya dominas y la realimentacion llega semanas despues en forma de bug. De ahi el diseno de los tres bucles: leer codigo que no sabrias escribir garantiza la primera propiedad, el experimento medido garantiza la segunda, y la conclusion escrita fuerza la tercera. El segundo hallazgo, procedente de la psicologia cognitiva del aprendizaje, es la ilusion de fluidez: releer, ver un video o seguir un tutorial produce una sensacion intensa de comprension que no se corresponde con la retencion posterior, mientras que las tecnicas que se sienten incomodas y lentas son las que funcionan. Las tres con mejor evidencia son la practica de recuperacion, es decir, intentar reproducir de memoria antes de consultar; el espaciado, revisitar un tema despues de haber empezado a olvidarlo en lugar de repasarlo en bloque; y el intercalado, alternar temas relacionados en vez de agotar uno antes de pasar al siguiente. La traduccion a este oficio es concreta y algo brutal: antes de abrir la documentacion de una API, escribe la firma que crees que tiene y luego compara, porque el error que cometes es el dato; antes de leer como implementa la stdlib una estructura, implementala tu y diffea; y cuando un tema te parezca dominado, deja pasar tres semanas y vuelve a intentarlo sin apuntes. El tercer hallazgo tiene que ver con la sostenibilidad, y es que el agotamiento en esta profesion se correlaciona menos con las horas que con la ausencia de cierre: una lista infinita de cosas que deberias saber genera una deuda emocional permanente que ninguna cantidad de estudio salda. La contramedida no es estudiar mas rapido, es acotar explicitamente el alcance y declarar terminado lo que esta terminado. Por eso el sistema de arriba tiene un artefacto por trimestre y no un temario, y por eso el cuaderno de decisiones importa tanto: no es documentacion, es la prueba material de que avanzaste, y es lo unico que en los meses malos distingue el progreso real de la sensacion de estar siempre empezando.

📝
Lo esencial

Tres bucles con frecuencias distintas: contacto diario, resolución semanal, artefacto trimestral. Contribuye empezando por la conversación y por repos pequeños. Filtra por fuentes primarias, cadencia fija y aprendizaje bajo demanda salvo que el cambio sea estructural. Y escribe siempre la conclusión: sin registro no hay acumulación.

⚔️ Montar el sistema esta semana
  1. Crea hoy el fichero de preguntas y ábrelo con la primera: elige un archivo de la stdlib, léelo quince minutos y anota lo que no entiendas.
  2. Convierte esa pregunta en un experimento con dos variantes, mídelo y escribe tres líneas de conclusión fechadas. Ese es tu cuaderno de decisiones.
  3. Define tu artefacto de este trimestre en una frase que incluya un entregable público y una fecha. Si no cabe en una frase, es demasiado grande.
  4. Suscríbete a exactamente tres fuentes primarias y date de baja de todas las demás durante un mes. Anota qué te perdiste de verdad.
  5. Busca un hilo de revisión abierto y escribe un comentario con un caso de uso real de tu trabajo. Publícalo. Ese es el peldaño uno y se sube una sola vez.