Aprender a Programar - Lo Que Debes Saber Primero
Tags: webdev, beginners, programming, tutorial
Published: 2022-09-07 10:15:40

¿Estás pensando en aprender programación? Creo que hay algo que deberías saber primero…

Este post abordará los temas de:

1. Tener claro el por qué queremos aprender a programar
2. La construcción de la Pasión
3. La importancia de mantener una Mentalidad de Crecimiento
4. No depender de la Motivación
5. Objetivos vs Sistemas
6. La importancia de tener Grit (aguante)
7. Buenos Hábitos
8. Realizar trabajo sin distracciones
9. Poner cuidado y atención en tu oficio
10. La comparación con otras personas

Uno tiende a enfocarse en los lenguajes a aprender, los cursos a tomar y libros a leer. Pero lo más importante es desarrollar una mentalidad y actitud que nos permita afrontar el desafío de aprender a programar de la mejor manera posible.

Si quieres ver el contenido de este artículo en video, [mira lo que he publicado en YouTube](https://youtu.be/PDp5Y1HznYo):

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

## Tener claro el por qué queremos aprender a programar

Nuestro por qué nos ayudará a seguir avanzando cuando nos falte motivación o las cosas se pongan difíciles. Nuestro por qué le dará sentido al esfuerzo que invertiremos en este camino de aprendizaje. Para aprender más sobre este tema, recomiendo leer el libro [El Hombre en Busca de Sentido](https://amzn.to/3K03HBA).

En mi caso particular, tengo impreso mi “por qué” y colgado encima de mi monitor. Lo uso como una herramienta cuando no me siento con ganas de estudiar o afrontar algún problema con el código que me resulta difícil de resolver, o cuando la confianza en mí mismo flaquea. Me recuerda la importancia de lo que he elegido hacer, y las razones por las que tengo que continuar a pesar de la incomodidad o la falta de ganas.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gjy1htmgrl8404khbygr.png)

También uso mi “por qué” para recordar que al haber elegido la programación  como mi actividad principal, elijo tener una mejor calidad de problemas, ya que problemas vamos a tener no importa lo que hagamos. Para ahondar en este tema, recomiendo leer el libro [El Sutil Arte de que te Importe un Carajo](https://amzn.to/3dABo04).

## Pasión

La pasión no es algo que se encuentra a la vuelta de alguna esquina mientras vamos caminando por la calle, sino que se construye día a día. Uno puede elegir una actividad que despierte cierto interés, pero el hecho de que ese interés se convierta en pasión llevará tiempo.

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

Es por todo esto que no le debemos dar mucha importancia a la pasión cuando recién estamos comenzando este camino, y tendríamos que darle tiempo a que se desarolle.

## Mentalidad de crecimiento

La mentalidad de crecimiento es un concepto desarrollado por la psicóloga Carol Dweck y tratado en su libro [Mindset](https://amzn.to/3w2cvRu).

La manera en la que nos vemos a nosotros mismos afecta profundamente como nos manejamos en la vida. Si nos percibimos como alguien que no es inteligente, o poco capaz, tomaremos decisiones que reforzarán esa mentalidad y nos jugará en contra cuando decidamos convertirnos en programadores.

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

Por el contrario, si entendemos que la inteligencia es algo que se puede desarrollar, al igual que nuestras habilidades, estaremos en una posición más saludable para enfrentar los desafíos. La mentalidad de crecimiento se basa en la creencia de que nuestras cualidades son cosas que se pueden cultivar a través de nuestro esfuerzo.

## Motivación

Según Steven Pressfield (autor de The War of Art), la motivación es el empuje que sentimos cuando el dolor por no hacer algo es superior al dolor de hacerlo. Por ejemplo: el dolor de trabajar en una actividad que no nos gusta, es mayor al dolor de sentarnos a estudiar programación para cambiar nuestra carrera, por lo que decidimos invertir nuestro tiempo libre en leer libros o tomar cursos sobre programación.

Existen dos tipos de motivación: 
- Externa (extrínseca): proviene de afuera de nuestra área de control y no depende de nosotros mismos. Por ejemplo, podríamos elegir trabajar como desarrolladores de software porque queremos ganar buen dinero, o crear un programa para que los demás nos vean como alguien inteligente.
- Interna (intrínseca): está ubicada en nuestra área de control y depende de nosotros mismos. Por ejemplo, podríamos elegir trabajar como desarrolladores de software porque nos interesa la tecnología y lograr maestría en esta actividad, o crear un programa por el hecho de que nos guste generar algo de la nada misma.

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

Deberíamos hacer foco en la motivación interna, porque es la única que podemos controlar. 

Por otro lado, es conveniente recordar que la motivación por lo general es el resultado de una acción, y no la causa de ella. Esto significa que la motivación aparecerá después de que comencemos a hacer algo, y no antes. Si quieres ahondar más en este tema, te recomiendo leas el libro [Hábitos Atómicos](https://amzn.to/3w2cHQI).

Debido a que la motivación no siempre está presente antes de comenzar una tarea, como la de sentarnos a estudiar programación, una de las claves para mantenernos motivados es hacer que sea fácil comenzar a hacer aquello que necesitemos hacer: 
- Podríamos armar un calendario para que podamos dejar el proceso de toma de decisiones en piloto automático.
- También podríamos seguir el mismo ritual o patrón cada vez que nos pongamos a estudiar, para así condicionarnos a realizar esta actividad. Por ejemplo, podemos elegir el mismo lugar, la misma hora, y la misma música cada vez que nos sentamos a estudiar para que nos resulte más fácil hacerlo.

## Objetivos vs Sistemas

Es importante tener un objetivo claro, pero también es importante no enfocarnos mucho en él. Mantener el foco en el sistema que utilizaremos para alcanzar ese objetivo será más apropiado, ya que los que ganan y los que pierden tienen los mismos objetivos y metas.

El hecho de enfocarnos en sistemas (y en nuestros “por qué”) nos ayuda a evitar la procrastinación. Por ejemplo, nuestro sistema puede ser: 
- Despertarnos temprano
- Ducharnos/bañarnos para asegurarnos de que estamos realmente despiertos
- Preparar el desayuno
- Sentarnos en frente de la computadora con nuestro desayuno
- Abrir nuestro libro de estudio o curso online
- Comenzar a estudiar mientras desayunamos, y hacerlo por un mínimo de 1 hora

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

Enfocándonos en realizar este proceso, estaremos haciendo hincapié en el día a día, en lo inmediato, sin preocuparnos tanto en un objetivo futuro, disminuyendo así nuestra ansiedad. Si continuamos aplicando este sistema, inevitablemente alcanzaremos nuestro objetivo de convertirnos en programadores.

## Grit (aguante)

[Grit](https://amzn.to/3w2u0kv) (o aguante) puede definirse como una determinación feroz de realizar nuestro trabajo. El ser capaz de resistir los contratiempos y trabajar duro. Es por esto por lo que es muy importante saber qué es lo que queremos.

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

Podemos tener mucho potencial (o casi nada), pero lo que hacemos con él es lo más importante. Una persona que entiende rápidamente conceptos de programación, pero que no tiene el aguante suficiente para estudiar el tiempo que es necesario, o perseverar en busca de la solución a algún bug, no conseguirá explotar ese potencial.

Por otro lado, alguien que tiene que leer varias veces los conceptos de programación para entenderlos, pero que es capaz de aguantar un régimen duro de estudio, o la frustración al no encontrar soluciones a su código problemático, explotará su potencial al máximo.

## Hábitos

Necesitamos definir nuestra identidad como programadores y crear hábitos que sustenten esa identidad. Nuestros hábitos le darán forma a nuestra identidad, y viceversa. ¿Qué tipo de persona quieres ser? ¿Un/a programador/a? ¿Cuáles son los hábitos que un programador debe tener?

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

Podemos definir nuestra identidad como “soy un programador/a que se preocupa por dar lo mejor de sí mismo/a”. Entonces, cuando estemos por hacer algo que choca con esa identidad (como, por ejemplo, decidir entre programar una aplicación o ver una serie en Netflix), tendremos una manera clara para decidir qué es lo que deberíamos hacer: 
- “¿Un programador que se preocupa por dar lo mejor de sí mismo elegiría ver una serie de Netflix en lugar de programar una aplicación para aprender un nuevo lenguaje?”
- “¿Una programadora que se preocupa por dar lo mejor de sí misma elegiría programar sin descanso en lugar de salir a la naturaleza para recargar sus energías?”

La clave aquí es no mentirnos o engañarnos a nosotros mismos.

## Realizar trabajo sin distracciones

De acuerdo con el libro [Céntrate (Deep Work)](https://amzn.to/3w6hQaF), trabajar sin distracciones significa tener la habilidad de realizar actividades en un estado de concentración que empuje nuestras capacidades cognitivas a su límite.

Una de las claves para lograr esto es minimizar las distracciones y distanciarnos de las redes sociales (Facebook, TikTok, Reddit, Twitter, etc.) durante el tiempo que estemos realizando nuestras tareas relacionadas a la programación.

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

El libro recomienda que nos demos un período estricto de tiempo en el que pasaremos estudiando, por ejemplo, definiendo los días y horarios en los que lo haremos. Esto nos ayudará a: 
- evitar el burnout (quemarnos),
- que se nos junte demasiado por aprender o practicar, y
- nos mantendrá enfocados en la actividad de estudiar.

Según mi experiencia, las horas de nuestro día no nos rinden de igual manera. Hay momentos del día en los que seremos más productivos para estudiar que otros. Queda en nosotros identificarlos. Por ejemplo, en mi caso, lo que yo hago es asignarles un valor relativo a las diferentes partes de un día. Las horas más valiosas se dan bien temprano por la mañana, ya que estoy lleno de energía, nadie me molesta o interrumpe, y puedo usar este momento para estudiar independientemente del día de la semana que sea.

## Pon cuidado y atención en tu oficio

Lo que hagamos profesionalmente (incluido el hecho de estudiar) será un reflejo del profesional que queramos ser. Por lo tanto, sería conveniente hacer las cosas de la mejor manera que podamos, ya que esto hablará de la calidad del profesional que somos: 
- No estudiar programación de manera desganada o descuidando temas importantes.
- Prestar detallada atención y cuidado al código que escribimos.
- En definitiva, preocuparnos y ocuparnos por hacer las cosas lo mejor que nos salgan en ese momento.

A veces encuentro útil el hecho de preguntarme si mi yo futuro (y no otra persona, alguien externo) estaría orgulloso de cómo estoy haciendo las cosas en este momento.

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

Si quieres leer más al respecto de este tema, recomiendo leas el libro [The Pragmatic Programmer](https://amzn.to/3SW3m74).

## No te compares con otras personas

Todos somos diferentes, y tú no sabes los caminos que han llevado a otras personas al punto en donde están hoy, por lo que compararnos con alguien más no tiene sentido.

En lugar de compararnos con otros, elijamos compararnos con nosotros mismos. 
- ¿En dónde estabas hace 5 o 10 años en cuanto a tus conocimientos de programación? ¿Estás mejor hoy, o estás tomando acciones para estar mejor mañana/en el futuro?
- ¿Sientes que aprendiste poco? ¿Cuánto sabías de este tema particular hace 1, 2 o 5 años atrás? Si sigues estudiando este tema, ¿cuánto aprenderás en 1, 2 o 5 años en el futuro?

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

## Para terminar…

Recordemos que esta es sólo una guía de las mejores maneras (según mi criterio) de cómo podemos encarar el estudio de la programación incluso antes de tocar un libro o curso que hable de ella. 

## Próximamente

Los siguientes posts abordarán los conceptos y técnicas, desde la perspectiva de aprender programación, descriptas en el libro [Ultralearning(https://amzn.to/3QviJ4K).

¡Gracias por leer este post, y hasta 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)