Original article: What I Wish I Knew as a Junior Dev – Lessons Learned After 11 Years of Coding

Inicialmente escribí este artículo como una lista de lecciones para principiantes y desarrolladores junior en Reddit. Luego explotó con más de 50 premios. Y de esto siguieron un montón de mensajes de ánimo.

Así que he decidido actualizar el post basado en la reacción de la gente.

Estas son las cosas que hubiera deseado saber al principio de mi viaje como Desarrollador de Software. Me habrían ayudado a estresarme menos, y espero que hagan lo mismo con ustedes.

Vamos a ello.

No todos los tutoriales son creados por igual.

Cuando empiezas, intentas cosas diferentes. A medida que aprendes y experimentas, presta atención a los tipos de tutoriales que funcionan para ti.

Muchos no funcionarán. Y eso está bien.

De hecho, así es exactamente como funcionan los experimentos hasta que encuentras una solución.

Pero en el momento en que encuentres oro, apégate a él, consume ese contenido vorazmente, y luego encuentra tutoriales similares para que puedas continuar tu crecimiento rápido.

photo-1498050108023-c5249f4df085
Foto de Christopher Gower / Unsplash

Cuando empecé, solía golpearme la cabeza contra Head First Java, el libro. Pero después de estudiar durante muchas horas, no llegaba a ninguna parte.

Pero todos en línea decían que era el mejor libro de programación de la historia. Para mí, sin embargo, los tutoriales en YouTube de TheNewBoston funcionarón por mí aunque la gente ya no lo recomiende.

Ojalá pudiera decir que esto se detuvo después de mi primer año.

Adelantémosnos dos años después.

Empecé a aprender algoritmos, y TODOS los tutoriales en blogs que seguí no tenían sentido hasta que vi los videos de YouTube sobre bailes folclóricos húngaros enseñando los algoritmos.

Y simplemente hizo clic.

Desde entonces, mi enfoque de aprendizaje ha sido aprender lo mismo de múltiples lugares hasta encontrar el instructor y el estilo que funciona para mí.

Olvidarás muchas cosas.

Entender a profundidad esto cambiará la forma en que aprendes.

No puedo contar las veces que tomé Introducción a Programación con Python en sitios web como Udacity, Coursera, y aún así me olvidé de todo.

Es tan molesto.

Pero desde entonces he aprendido que olvidarás todo lo que aprendas en ejercicios aislados porque están almacenados en la memoria a corto plazo. La investigación neurocientífica muestra que así es como funciona el cerebro.

Te daré un ejemplo en concreto:

len(myList)

Esto te dará la longitud de una lista en Python. Esto lo aprenderás en el curso de Introducción a Python de Udacity.

Regresa un mes después y puede que no recuerdes si es len, length( ) o myList.size( ).

Pero con repetición espaciada a través de un proyecto, el resultado es diferente.

Por ejemplo, trabajas en una aplicación con Django de 2 meses de duración para nuevos programadores donde es necesario:

  • Contar el número de usuarios varias veces.
  • Almacenar el número de ejercicios realizados.
  • Encontrar el número de chats en un día.

Imagina hacer esto a lo largo del proyecto, durante dos meses. Es dificíl olvidar lo que hace len( ).

Este es un ejemplo trivial, pero espero que te hagas una idea.

Los nuevos estudiantes pueden empezar con ejemplos simples y aislados.

Pero si no estás practicando dentro del ámbito de un proyecto y usando y reutilizando lo que has aprendido, nada va a entrar en tu memoria a largo plazo. Todo es a corto plazo.

Y eso significa que lo olvidarás.

Trabaja con el miedo, no contra él.

Admito que es más fácil decirlo que hacerlo.

Pero tienes que dominar esto si quieres durar.

Existe la tentación de arreglar tu miedo primero antes de seguir aprendiendo. Desafortunadamente, esto no funciona así.

De hecho, pasarás mucho tiempo tratando de hacer desaparecer tu miedo, pero en vez de eso, sólo duplicará tu ansiedad. Tienes que encontrar una maneta — tu manera — de reconocer que tienes miedo.

Y, francamente, seguirás teniendo miedo durante mucho tiempo. Así que trabaja dentro de esa realización.

No hay necesidad de luchar contra ello.

A veces, este miedo desaparece a medida que te vuelves más competente.

Otras veces, se desvanece por un tiempo y vuelve cuando te metes en un nuevo entorno, trabajas con desarrolladores de software inteligentes, o te mueves a un stack completamente nuevo.

Está bien, no pasa nada.

image-137
Foto de Jasmin Sessler / Unsplash

Si quieres avanzar como desarrollador de software, tienes que recordar:

Así ES la vida.

Es una onda senoidal — que sube y baja sin cesar. No te lo tomes demasiado en serio o te perderás.

Constancia > trabajo duro.

La constancia es lo más importante.

Cuando empizas a aprender, estableces vías neuronales que facilitan la recuperación de la información.

De acuerdo con la investigación de la Neurociencia, estos caminos sólo se fortalecen a través de la frecuencia de uso, no sólo la intensidad.

Esto significa que 30 minutos al día, durante 5 días a la semana es mucho mejor que 2.5 horas un día, sólo una vez a la semana.

Las mismas horas, diferente impacto.

No sólo trabajes duro, aplica la sabiduría aquí.

Talento = práctica oculta.

Es fácil descartar el progreso como talento.

Mi primera clase de programación fue en C++ y mis compañeros se negaron a creer que nunca había programado antes porque tenía mucho talento.

Pero lo que también se negaron a aceptar fue que justo después de la clase, me pasaría cinco horas escribiendo:

cout << "this is my first program"

Entonces me daría cuenta de que no funcióno porque olvidé un punto y coma ;.

Así que lo reescribía y me daba cuenta de que no imprimía mi declaración en una nueva línea porque no añadí endl.

Esta práctica deliberada construyó el talento percibido.

El talento es más sexy que el trabajo duro, así que nadie quiere oír que trabajaste duro y llegaste aquí. Sólo dime que naciste así — es más creíble.

image-138
Talento vs. Trabajo Duro - La mayoría de nosotros nos abrimos caminando trabajando duro

Pero convertirse en un desarrollador de software competente es como tocar un instrumento.

Sólo unos pocos nacen con talento.

La mayoría sólo puede ser tan buena como la cantidad de práctica que pongamos.

Y se puede ver inmediatamente que un estudiante no ha estado practicando en el momento en que se sienta frente al teclado.

¡Conocerás a idiotas!

Cada campo tiene su dosis de gente horrible.

Sin duda.

Pero no estoy seguro qué es lo que tiene el desarrollo de software que atrae a los idiotas en masa.

Tal vez porque la progamación te da la sensación de tener un superpoder o una habilidad rara. Si eres un programador principiante, conocerás aquellos que han estado programando durante años y piensan que nadie más debería entrar.

¿Sólo un desarrollador de Windows? Conocerás a los fanáticos de Linux que piensan que eres mediocre.

Si eres mujer, serás descartada inmediatamente por tu género. Lo sé por las historias personales de mis colegas a lo largo de los años.

Si eres una minoría, conocerás a gente que piensa que sólo debes ir por el café, no programar.

Si vienes de otro campo (particularmente no de Ciencia, Tecnología, Ingeniería o Matemáticas), conocerás a gente que se hace automáticamente controladores al acceso de la comunidad de programación.

“¡No queremos científicos sociales aquí — somos puristas!”
image-139
Foto de Markus Spiske / Unsplash

Están en línea.

Y en el trabajo.

Y tristemente a veces en tu familia.

No es si los conocerás, sino cuando.

Aprende a seguir adelante.

Las cosas están mejorando, pero todavía hay mucho que hacer para educar a la gente.

Pero no dejes que esto te disuada. Construye tu resiliencia para que no te rindas después de conocer a estar personas.

Y cuando llegues a la cima, ¡No seas un idiota!

Domina una cosa.

Los nuevos desarrolladores tienden a saltar alrededor de aprender muchas cosas.

Vale, no son solo los nuevos desarrolladores — también es la gente con experiencia.

Aprendiste React durante una semana. Luego JavaScript por dos semanas. Laravel por tres.

Detente.

Necesitas despertar y darte cuenta de que simplemente estás extendiendo el tiempo que te tomará aprender cualquier cosa.

“Si uno es un maestro de una cosa y entiende bien una cosa, tiene el mismo tiempo, comprensión y entendimiento de muchas cosas.” ~ Vincent Van Gogh
image-140
Foto de Randy Fath / Unsplash

Escoge una sola cosa.

Sigue con ello durante unos meses — idealmente de 6 a 12 meses antes de pasar a otra cosa.

Esto tiene dos beneficios:

  1. Irás lo suficientemente profundo y alcanzarás un punto crítico que te llevará a la maestría.
  2. Después de dominar una área, puedes transferir el conocimientro a otra. Por ejemplo: aprende Flask y podrás entrar fácilmente en Django. Aprende React profundamente, y podrás identificar rápidamente los pros y los contras de Laravel en pocos días.

Esto no significa aprender únicamente HTML durante seis meses. Luego sólo CSS por un año.

Más bien, significa que no hay que mezclar el aprendizaje:

  • Django
  • Con Express
  • Luego React
  • Algo de Desarrollo de Videojuegos
  • Y iOS.

Podrías hacer mucho en poco tiempo. Y tal vez te sientas como un programador principiante que crece rápidamente. Pero es una ilusión.

No has dominado nada.

El Desarrollo de Software es un campo en constante evolución

Es emocionante.
Es frustrante.
Es intimidante.

Pero si tuviera que hacerlo, lo haría de nuevo.

¡Gracias por leer!

¡Uf! Hice mucha reflexión y muchas horas para armar esto.

  1. Sígueme en Twitter: Soy más activo en Twitter. Si te gustó esto, compártelo y retwittea esto para ayudar a correr la voz. ¿Tienes preguntas? Mi MD están abierto.
  2. Únete a la comunidad de email: Estoy reuniendo recursos para ayudar a los nuevos codificadores y desarrolladores junior a aumentar su confianza. Si estás interesado, únete a esta lista de correos. Y si disfrutaste esto, revisa más artículos para principiantes y desarrolladores junior.

Atención – Me encanta la investigación, así que tiendo a respaldar mi consejo y enfoque con conceptos de Psicología del Comportamiento y Neurociencia.