Aprender a programar: los primeros 3 pasos
Tags: webdev, beginners, programming, tutorial
Published: 2022-09-14 22:42:46

En este post voy a tratar los primeros tres conceptos presentados en el libro “Ultralearning”:
1.	Meta-aprendizaje
2. Foco, e
3. Inmediatez

“Ultralearning” es un libro en el que su autor, Scott Yong, presenta varios principios que podemos aplicar para aprender temas complejos, como la programación. Si quieres ahondar más en estos principios, te recomiendo leas el libro, ya que no tiene desperdicio.

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1663193509176/mCSdnngB7.png)

Puedes ver el contenido de este post en mi [video en YouTube](https://youtu.be/RjGQ0bFpUls):

{% youtube https://www.youtube.com/embed/RjGQ0bFpUls %}

En mis siguientes posts estaré cubriendo al menos cinco principios más, así que quizás te convenga suscribirte mi [newsletter](https://mailchi.mp/22b236f812b1/subscribe-to-newsletter) para recibir notificaciones de cuando estos posts estén colgados en mi blog.

Seguramente te estás preguntado qué es todo esto de ultralearning. Básicamente, es una estrategia para adquirir habilidades que es autodirigida e intensa. No es para nada pasiva o entretenida, como podría ser el ver un video sobre programación mientras nos estamos relajando en el sofá. Es sistemática e iterativa. Es la diferencia entre soñar con ser programadores algún día mientras vemos un video en YouTube de cómo es el día a día de un programador, y el tomar masiva acción, como puede ser el hecho de avocarnos por completo, en cuerpo, mente y espíritu, al hecho de aprender a programar.

Cuando estemos aplicando los conceptos de ultralearning vamos a estar aprendido por medio de la acción (este concepto es llamado “inmediatez”), y comenzando antes de que nos sintamos preparados. Esto significa que estaremos programando desde el primer día. Vamos a ir en busca de una retroalimentación inmediata (como, por ejemplo, el código que escribamos arrojará mensajes de error), y de esta manera vamos a saber qué es lo que debemos corregir o mejorar. Un claro ejemplo de esto puede ser es el tomar un curso de programación en [freeCodeCamp](https://www.freecodecamp.org/espanol/) (que, por cierto, recomiendo mucho): en él estarás programando desde el comienzo, incluso si no sabes mucho acerca de programación.

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1663194206117/cZ6VcEJm5.png)

Pero… ¿Vale la pena invertir tanto esfuerzo en aprender programación? Aprender una nueva habilidad en profundidad como estaremos haciendo si aplicamos estos principios puede generar una sensación de propósito en nuestras vidas, porque el hecho de desarrollar habilidades de esta manera es altamente significativo y gratificante.

<img width="100%" style="width:100%" src="https://media.giphy.com/media/e9naycep2pz7OHQ4n0/giphy.gif">

Es conveniente tener en cuenta el hecho de que si algunos de los principios no funcionan en nuestro caso, deberemos reevaluarlos y cambiar lo que sea necesario.

Bueno, suficiente introducción. Comencemos con el primer principio: meta-aprendizaje.

## Meta-aprendizaje

Comenzaremos nuestro camino de aprendizaje creando un mapa de cómo luce el aprender programación. Aquí nos interesará saber cómo se adquiere el conocimiento sobre programación y como éste se estructura.

Pero no te preocupes, porque no tienes que comenzar de cero. Hace un tiempo ya, he armado una plantilla de Notion que resume los conceptos principales involucrados en el desarrollo web, una lista de mapas conceptuales y temas que están relacionados a la programación. Puedes descargar esta plantilla de manera gratuita, y modificarla como quieras, desde [este enlace](https://mailchi.mp/77b7cbf1b03a/web-development-notion-template).

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1663194344182/5KloFCon9.png)

Volviendo al principio de meta-aprendizaje, trata de responder estas preguntas lo mejor que puedas: “¿Por qué?”, “¿Qué?”, y “¿Cómo?”.

### “¿Por qué?”

En el primer post que publiqué en esta serie, hablé de la importancia de tener un claro “por qué”. ¿Cuál es la motivación que tienes para aprender a programar? Para responder esta pregunta, puedes consultar a programadores que ya estén haciendo lo que quieres hacer, y preguntarles que es lo que disfrutan más (y menos) de sus trabajos como programadores.

### “¿Qué?”

Construye una lista de los conocimientos y habilidades que necesitas adquirir. Puedes comenzar con la [plantilla de Notion](https://mailchi.mp/77b7cbf1b03a/web-development-notion-template) que compartí anteriormente, y modificarla según tu conveniencia. Crea una lista de conceptos (ideas que necesitas entender, pero no memorizar), hechos (cosas que necesitas memorizar), y procedimientos (todo aquello que necesite ser practicado, acciones a tomar).

### “¿Cómo?”

Para responder esta pregunta, puedes utilizar estos dos métodos: “evaluación comparativa” y “enfatizar y excluir”

#### Método 1: Evaluación comparativa

Encuentra referencias acerca de cómo otras personas están aprendiendo a programar. Estudia los planes de estudios de universidades, o los temarios de cursos online o libros, e investiga que mapas de ruta existen para el tipo de programación que te interesa (como los que he mencionado en la plantilla de Notion). Con este método, es importante que trates de conseguir material de calidad.

#### Método 2: Enfatiza y excluye

Teniendo en consideración por qué quieres aprender programación, redobla tus esfuerzos en las tareas que están en línea con ese por qué. Por ejemplo, podrías querer aprender desarrollo web para construir una aplicación que lleve un registro de los diferentes estados por los que pasa una tarea, similar a como esto es realizado en la metodología Kanban, por lo que deberías enfocarte en estudiar tecnologías web en lugar de lenguajes de bajo nivel, como C, o motores de juegos en 3D.

Una vez que tienes una clara idea de cómo responder a las preguntas de “¿Por qué?”, “¿Qué?”, y “¿Cómo?”, es momento de enfocarnos.

## Foco

Este concepto también fue cubierto en cierta medida en mi post anterior cuando hablé sobre el libro Céntrate (Deep Work), pero este concepto es tan importante que nuevamente está presente en este libro, Ultralearning.

<img width="100%" style="width:100%" src="https://media.giphy.com/media/TGROKbWqxXplM7aznn/giphy.gif">

Necesitamos desarrollar la habilidad de concentración. Debemos ser capaces de establecer porciones de tiempo para realizar nuestras actividades de aprendizaje, y hacer que estas actividades sean sencillas de comenzar.

Las dificultades más comunes en cuanto a enfocarnos radican en el momento de comenzar a hacerlo (procrastinamos) y cuando debemos mantener el enfoque (nos distraemos).

### Procrastinación

Para ayudarnos a superar la procrastinación, podemos establecer plazos que nos ayuden a realizar lo que tenemos que hacer. Es importante que seamos capaces de reconocer cuándo estamos procrastinando. Tenemos que recordar que esa sensación desagradable que sentimos se dará sólo al comienzo de la actividad, durante los primeros minutos. Una vez que comencemos a hacer la tarea (estudiar programación), la sensación desagradable irá disminuyendo.

<img width="100%" style="width:100%" src="https://media.giphy.com/media/gt3YKSFV3JylpvJk21/giphy.gif">

Una técnica que funciona muy bien en estos casos es el temporizador Pomodoro: establecemos un temporizador por 25 minutos, comenzamos a hacer la tarea, y nos permitimos descansar por 5 minutos cuando el temporizador termina. Este ciclo lo repetiremos cuantas veces sea necesario hasta que terminemos la tarea.

Otra técnica muy útil es la de usar pequeños checkpoints (o puntos de control): comenzaremos a estudiar y terminaremos cuando hayamos leído una página, un capítulo, o un tema específico.

### Distracción

La clave para evitar distraernos con facilidad es entrar en un estado de “flow” (algunas personas se refieren a este estado como “estar en la zona” o “enchufados”). En este estado, nuestra mente es completamente absorbida por la tarea que estamos realizando. Para lograr entrar en estado de “flow” con facilidad, tenemos que asegurarnos que la dificultad de la tarea no sea ni muy alta ni muy baja.

<img width="100%" style="width:100%" src="https://media.giphy.com/media/bAplZhiLAsNnG/giphy.gif">

Pero… no te preocupes demasiado si no logras alcanzar un estado de “flow”. Lo que podemos hacer en su lugar es enfocarnos en alcanzar metas cortas o pequeñas en magnitud. De manera similar a los checkpoints descriptos con anterioridad, esto nos ayudará a mantener la motivación.

También deberemos mantener un balance entre estudiar programación y descansar. Con dedicarle 50 minutos a 1 hora bastará para aprender algo sobre la mayoría de los temas. Luego de esto, podremos descansar por un tiempo, y repetir el ciclo nuevamente. Utilizar la técnica del temporizador Pomodoro también será de ayuda aquí.

Adicionalmente, necesitamos asegurarnos de que el ambiente en el cual estudiaremos se encuentra libre de distracciones, como pueden ser nuestros teléfonos celulares, el hecho de mirar videos o jugar a nuestro juego favorito de PC durante la sesión de estudio, ruidos que nos puedan distraer, o una falta de herramientas de estudio (lápices, libros, o una lámpara).

Deberemos comprometernos con la tarea. Podremos hacer eso por medio de la toma de notas para explicar conceptos difíciles, haciéndole preguntas al libro o curso y tomando notas de ellas para responderlas luego, y tratando de identificar cómo aplicaremos los conceptos que estamos aprendiendo.

<img width="100%" style="width:100%" src="https://media.giphy.com/media/3ohc1bNYPZR8gQ5ybS/giphy.gif">

Finalmente, si nos atascamos, podemos tomar un descanso y dejar que nuestro enfoque se expanda. Podríamos tomar una caminata, comer un tentempié, o tener una charla rápida con alguien. Esto hará que nuestra consciencia atraiga nuevas ideas que pueden servirnos para desatascarnos.

Ahora pasemos al principio de Inmediatez.

## Inmediatez

Aprenderemos mejor por medio de hacer lo que queremos hacer. ¿Quieres construir un sitio web? Comienza a construirlo mientras vas aprendiendo lo necesario para hacerlo. Hacer esto se sentirá difícil, frustrante, e incluso doloroso, así que es muy probable que quieras evitarlo. Pero lo que debemos hacer es enfocarnos en resolver problemas de manera práctica en lugar de cargarnos con conocimientos teóricos. El autor del libro dice: “El aprendizaje toma lugar haciendo la cosa en la que quieres ser bueno o buena”.

<img width="100%" style="width:100%" src="https://media.giphy.com/media/87xihBthJ1DkA/giphy.gif">

Podemos aplicar diferentes tácticas para aprender por medio de lo que queremos hacer.

### Táctica 1: Aprendizaje basado en proyectos

Podemos organizar nuestro aprendizaje alrededor de un proyecto. Por ejemplo, podríamos decidir construir un sitio web para un restaurante, lo que implicará dividir este proyecto en partes más pequeñas: el componente de inicio de sesión para usuarios, las barras de menú, la base de datos para las órdenes, etc. Entonces, podríamos ir aprendiendo lo necesario para ir completando estos sub-proyectos. Si nos encontramos en una situación en la que no sabemos qué es lo que tenemos que aprender, podemos visitar foros especializados en programación (como algunos sub-Reddits), o preguntarles a desarrolladores más experimentados por medio de Twitter o canales de Discord.

### Táctica 2: Aprendizaje inmersivo

Rodéate de un ambiente en el cual la programación esté siempre presente. Únete a grupos de Meetup, participa en proyectos open-source, explora diferentes canales de Discord, y participa en foros, “hackathons” o “coding challenges”. El objetivo de esta táctica es buscar actividades que te puedan acercar a aprender cosas nuevas.

### Táctica 3: Overkill (exageración)

Decide hacer algo que sea mucho más complejo de lo que realmente quieres aprender. Por ejemplo, en lugar de aprender JavaScript para construir un sitio interactivo, decide que dictarás un curso sobre JavaScript, el cual será publicado en formato de video. Al hacer esto, incluso si no logras entregar el curso de la manera que habías pensado, estarás aprendiendo mucho más de lo que inicialmente imaginaste acerca de JavaScript si sólo te hubieses dedicado a construir una simple aplicación.

## Pensamientos finales

Llegando al final de este post, quiero recordarte que todavía existen al menos 5 principios más que estaré tratando en mis próximos posts, así que quizás quieras suscribirte a mi [newsletter](https://mailchi.mp/22b236f812b1/subscribe-to-newsletter) para enterarte cuando estén publicados.

¿Cuáles de estos principios te ha interesado más? Deja tu respuesta en los comentarios así podemos discutirlo en mayor profundidad.

Muchas gracias por leer este post, y ¡nos vemos la próxima! 👋

---

🐦 **Twitter** - [Sígueme en Twitter](https://twitter.com/DamianDemasiES)

🎥 **YouTube** -  [Visita mi canal de YouTube en español](https://www.youtube.com/channel/UCFUBlxKVHymA2VVUsf46aUQ)