¿Cuál es la mejor ruta de aprendizaje para aprender JavaScript de cero a avanzado?

Usa librerías y frameworks para resolver problemas.

Entonces no lo hagas

Hay muchas personas que son excelentes para afrontar los desafíos de front-end, pero no paran de sentirse cómodos con el JavaScript de vainilla. Si bien no hay un “problema” con eso, si quieres llegar a un nivel más avanzado con JavaScript, querrás entender cómo resolver esos desafíos sin abstracciones.

Mi caso favorito a mencionar es jQuery. Normalmente tiene dos casos de uso: manipulación de DOM y AJAX. Es fácil de incluir en una página web (etiqueta de script simple) y es necesario para algunas bibliotecas CSS comunes. Un subconjunto de él se utiliza en AngularJS. Es bastante prolífico.

Y, sin embargo, muchos desarrolladores jóvenes confían demasiado en ello .

He hecho algunas entrevistas (para las compañías de las que reconocería el nombre) y es bastante sorprendente lo bien que la gente puede decirme la diferencia entre “dobles iguales” y “triple iguales” (igualdad entre el mismo nivel y la igualdad estricta), y sin embargo no pudieron No me digas cómo seleccionar un elemento por su ID sin jQuery .

// jQuery
$ (‘tagName’);
$ (‘. className’);
$ (‘# idName’);

// JavaScript
document.getElementsByTagName (‘tagName’);
document.getElementsByClassName (‘className’);
document.getElementById (‘idName’);

jQuery hace algunas cosas excepcionalmente bellas. El encadenamiento de métodos es fantástico. Aprovechar las promesas es maravilloso. Y admito que el uso de los selectores de CSS para obtener elementos es intuitivo y menos detallado. Pero la mayoría de los desarrolladores junior a los que he entrevistado no lo usan por ninguna de estas razones . Lo usan porque es todo lo que saben .

Si un desarrollador junior necesita seleccionar un elemento, su primer instinto es confiar en un código de 30kb que no comprenden.

// los desarrolladores junior importan 30kb de jQuery para hacer esto
función $ (e) {
interruptor (e.charAt [0]) {
caso ‘.’: devolver document.getElementsByClassName (e.slice (1));
case ‘#’: return document.getElementById (e.slice (1));
predeterminado: devolver document.getElementsByTagName (e);
}
}

Nuevamente, estos son candidatos que llegaron a la pantalla del teléfono conmigo para puestos de desarrollador junior que están pagando> $ 80,000 en una compañía que está bien establecida en la comunidad tecnológica.

Eso es un problema.

Esta tendencia continúa para un gran volumen de JavaScript. La gente no sabe cómo funciona AJAX en jQuery. Ellos no saben cómo funciona el alcance de $ en Angular. No saben cómo funciona la diferenciación en React. Pero dependen de que trabajen .

Cuando llegue a un punto en el que dependa de que el código de otra persona funcione, tómese un momento para detenerlo y reescribirlo sin otras bibliotecas. No se preocupe por quedar atrapado en casos extremos o similares, solo consiga que funcione una versión básica. ¿Usas mucha función de map de JavaScript nativo? Recrearlo ¿Usas mucha función after de Lodash? Recrearlo ¿Ciclo de digestión de los angulares? Recrearlo Encontrará una gran cantidad de bibliotecas y marcos asombrosos de los que muchas personas dependen, en realidad son solo conceptos simples con algunas características ingeniosas y que emiten errores más agradables de los que se puede molestar en escribir por su cuenta.

La comprensión de JavaScript no solo hace que comprenda mejor el código que no necesita importar de las bibliotecas, sino que también le hace apreciar realmente lo que otros han hecho por usted y los respeta más cuando va a agregar sus contribuciones de código abierto a sus proyectos.


Aprender JavaScript, sin toda la abstracción, definitivamente acelerará tu juego de desarrollo. Si tienes alguna pregunta no dudes en pegarme en los comentarios!

Usualmente hay dos cosas involucradas en aprender de acuerdo a mi:

  1. Leer / captar material teórico para obtener comprensión de una cosa / tecnología
  2. Usando ese entendimiento para construir cosas prácticas.

Por lo general, el segundo depende en gran medida de la primera.

Ahora, cuando se trata de JavaScript, muchos desarrolladores intentan hacer la segunda cosa sin pasar por el primero correctamente.

He visto a muchas personas quejarse de cosas como: “¿Por qué no funciona en JavaScript de la misma manera que se usa para trabajar en Java?”

Ahora ve, el verdadero problema es que, la mayoría de los desarrolladores no aprenden JavaScript seriamente porque para estar listos para el trabajo en poco tiempo, aprenden algunos conceptos básicos muy ingenuos del lenguaje y tratan de aprender los marcos.

Y cuando las cosas no funcionan de la misma manera en que pensaban (sobre la base de una comprensión ingenua) se quejan mucho del idioma. Verás a gente atacando que JavaScript es terrible, inconsistente, etc.

Esta es en realidad mi propia historia. Pero más tarde, descubrí algo que realmente cambió mis puntos de vista sobre JavaScript.

Encontré la serie de libros “No sabes JS” de Kyle Simpson.

Créeme, ¡no te arrepentirás de tu tiempo invertido en leer estos libros!

No estoy seguro de que exista tal cosa como un camino universalmente “mejor” o “más corto”. Pero puedo decirte cuál es el camino que parece más fácil:

Céntrate siempre en un problema que quieras resolver, y no en las habilidades que estás adquiriendo en el proceso.

Esto es bueno no solo para aprender JavaScript. Si quieres aprender una habilidad específica, es infinitamente mejor hacerlo mientras trabajas en un proyecto con un resultado final concreto que te emociona. Consejo: “Quiero ser un programador avanzado de JavaScript” no es un proyecto emocionante. “Quiero crear un sitio / aplicación donde la gente pueda seleccionar algunos ingredientes e inmediatamente obtener una receta” puede ser uno.

No aprendí JavaScript de un libro, un curso o un mentor, solo yo y una idea, y por supuesto, Google. Tal vez no aprendí JS de la mejor manera posible (y tal vez ni siquiera estoy “avanzado” todavía, pero me divertí mucho haciendo cosas que quería saber. Así que si me preguntas, He aprendido todo lo que sé con cero esfuerzo.

No estoy seguro de por qué querrías mi opinión …

Es difícil aprender conceptos básicos de lenguajes desordenados. En mi caso traté de aprender OO usando perl. Realmente no entendí bien las ideas básicas hasta que aprendí Java, que era OO desde el primer día, a diferencia de perl y c ++.

Javascript es otro idioma desordenado.