Published on

Un gran consejo del creador de Node.js Ryan Dahl

Authors

Si estas en los primeros meses del proceso de convertirte en desarrollador web lo primero que tienes que saber es que estas entrando en una carrera en la que nunca vas a dejar de aprender. Es un camino en el que no hay un destino. Nunca vas a poder decir: ¡He llegado, ya sé y domino todas las herramientas y tecnologías!.

Es una carrera de resistencia no de velocidad.

En este momento no me viene a la mente otra ocupación en donde todo se mueva tan rápido y cambie tan constantemente como lo es la del desarrollador web. En muy pocos años puedes quedar obsoleto como developer si no estas aprendiendo y mejorando todo el tiempo.

Cada año aparecen nuevos lenguajes, herramientas, librerías y frameworks. Si vemos el roadmap de lo que tenemos que saber para ser competitivos, por ejemplo en el frontend en 2020, es muchísimo, ni siquiera quise poner la imagen en el texto porque iba a ocupar todo el espacio de la pantalla. Si uno está dando sus primeros pasos en el mundo del desarrollo web esto puede ser muy intimidante.

Si tuviera que describir con una sola palabra el mundo del desarrollo sería: dinamismo.

Es por eso que el activo más importante en la carrera como developer es la capacidad de aprender y adaptarte de la manera más rápida posible. Y, no solo es aprender algo en especifico sino más bien aprender a aprender.

Aprender a aprender es una meta-habilidad. Es decir es una habilidad que te permite obtener otras habilidades y creo que vale la pena invertir el tiempo suficiente en desarrollarla.

Teniendo esto en mente ahora llega una pregunta muy importante:

¿Cuál es la mejor manera de aprender en el mundo del desarrollo de software?

Aunque estoy convencido que todos tenemos diferentes maneras de aprender y de aproximarnos a un nuevo tema o conocimiento, pienso que una buena idea es investigar y escuchar lo que nos dicen al respecto los developers que están muchos niveles arriba de nosotros.

En una entrevista de 2016 Ryan Dahl el creador de Node JS y Deno menciona que antes de iniciar el proyecto Deno, el no sabía usar el lenguaje Rust. Tuvo que aprenderlo sobre la marcha para poder hacer uso de sus características y ventajas en el desarrollo de su nuevo entorno para correr Javascript fuera del navegador.

Ryan menciona que el se siente cómodo usando c++, tiene tiempo de usarlo y es la tecnología con la que construyó varios módulos de Node js. Sin embargo, con Deno su objetivo era corregir varios errores de diseño, que el considera, tuvo con Node js — aquí más sobre el tema-.

Para esto tenía que apoyarse en las características que tiene Rust que en su opinión sustituyen y superan a las de c++.

En la misma entrevista a la pregunta de como aprender más rápido el menciona que es muy difícil aprender cosas técnicas a la velocidad en que van cambiando y por los mismo no tiene algún consejo en especial para esto pero menciona que el siempre le dice a las personas que tienen que tener un proyecto:

“Yo siempre estoy diciendo que tienes que tener un proyecto; no puedes solo aprender algo en abstracto. Es muy difícil aprender en detalle algo si no estas trabajando con él. La única técnica que tengo y no es realmente una técnica es siempre tener proyectos en los que estoy trabajando.” — Ryan Dahl

Lo dicho por Ryan me llevó a reflexionar lo siguiente:

En la actualidad tenemos miles de plataformas con miles de cursos. En youtube de igual manera tenemos miles de horas de reproducción de tutoriales. Con tanto contenido a nuestra disposición podemos caer en el llamado “tutorial hell” — ese lugar en donde consumes mucho contenido educativo de diferentes tecnologías pero no construyes nada por ti mismo.

El pasar horas consumiendo videos y cursos puede darte una falsa sensación de que entiendes una tecnología para después de semanas o meses de estar en el tutorial hell darte cuenta que no puedes construir nada por ti mismo.

Y no cuenta seguir el proyecto del tutorial y terminar con una aplicación que puedes mostrar pero que en la que, realmente, el proceso mental para desarrollarla no fue tuyo. Puede tener su valor, pero es mucho mas efectivo el aprendizaje que obtienes de enfrentarte por tu cuenta a un proyecto. Sí, es más doloroso y frustrante. Pero el pasar con éxito estos momentos es señal de que realmente estas aprendiendo.

Entonces creo que la mejor estrategia para aprender un nuevo lenguaje, framework o librería es ensuciarte las manos primero con lo que quieres aprender. Antes de ver un curso o tutorial. Primero documentación y paciencia.

Tratar de construir algo por ti mismo guiándote primero solo de la documentación puede ser un ejercicio revelador. El pasar horas revisando la estructura y base de algún framework, haciendo pruebas y deduciendo funcionamiento te ayuda a conocer más a detalle las particularidades de la tecnología o herramienta.

Ya después puedes apoyarte de tutoriales para conocer mejores soluciones a los problemas a los que te enfrentaste. Pero ahora con un contexto mucho más profundo de lo que estas viendo en el tutorial.

Por mi parte voy a seguir este consejo no consejo de Ryan Dahl y voy a empezar a construir algo desde scratch para conocer más a profundidad el framewrok NextJS; solo guiándome de la documentación oficial.

Algo parecido hice hace unos meses en la construcción de mi sitio carlosfabian.dev. Leí sobre las ventajas de Gatsby JS en términos de velocidad y SEO para blogs y sitios estáticos pero no sabía usar este framework que se basa en React y GraphQL. Primero me apoyé de la documentación y ya después para detalles específicos en cursos en egghead y platzi. Las horas que pasé con este framework fue una buena introducción al concepto de generador de sitios estáticos, queries en graphQL, al markdown y las particularidades de Gatsby en sí.

Entonces para seguir en esta linea voy a iniciar un proyecto primero pequeño y después algo mas ambicioso usando NextJS. Ya les contaré en que resulta y lo que voy aprendiendo en el proceso.

En conclusión

Hay muchas aproximaciones para aprender de una manera eficaz. Prueba distintas para encontrar la que más se acomode a ti. Y una vez que la encuentras no pares de optimizar el proceso.

Cuando quieras aprender una nueva tecnología piensa en un proyecto en el que la puedas aplicar y aprender en tiempo real.

Cuidado con caer en el tutorial hell. Trata de ser honesto con tus habilidades, cultiva la humildad y nunca pares de aprender y mejorar.

Benjamin Franklin alguna vez dijo:

“An investment in knowledge always pays the best interest.”

Y esto, en el mundo de la programación y desarrollo es especialmente cierto.