Aprendiendo Desarrollo

Prefacio

Bienvenido a la segunda edición de la ampliamente aclamada serie de libros “You Don’t Know JS” (YDKJS): “You Don’t Know JS Yet” (YDKJSY).

Si has leído alguno de los libros de la primera edición, puedes esperar un enfoque renovado en estos nuevos, con una cobertura actualizada de los cambios en JS en los últimos cinco años. Pero lo que espero y creo que seguirás obteniendo es el mismo compromiso de respetar JS y profundizar en lo que realmente lo hace funcionar.

Si esta es la primera vez que lees estos libros, me alegra que estés aquí. Prepárate para un viaje profundo y extenso por todos los rincones de JavaScript.

Si eres nuevo en la programación o en JS, ten en cuenta que estos libros no están destinados como una “introducción suave a JavaScript”. Este material, en ocasiones, es complejo y desafiante, y profundiza mucho más de lo que es típico para un aprendizaje de primera vez. Eres bienvenido aquí sin importar cuál sea tu experiencia, pero estos libros están escritos asumiendo que ya te sientes cómodo con JS y tienes al menos 6-9 meses de experiencia con él.

Las Partes

Estos libros abordan JavaScript intencionalmente de manera opuesta a cómo “The Good Parts” trata el lenguaje. No, eso no significa que estemos examinando las partes malas, sino más bien explorando todas las partes.

Es posible que te hayan dicho, o que lo hayas sentido tú mismo, que JS es un lenguaje profundamente defectuoso, mal diseñado e implementado de manera inconsistente. Muchos han afirmado que es el peor lenguaje más popular del mundo; que nadie escribe JS porque quiere, sino porque tiene que hacerlo dada su posición en el centro de la web. Esa es una afirmación ridícula, perjudicial y completamente condescendiente.

Millones de desarrolladores escriben JavaScript todos los días, y muchos de ellos aprecian y respetan el lenguaje.

Como cualquier gran lenguaje, tiene partes brillantes así como sus cicatrices. Incluso el creador de JavaScript, Brendan Eich, lamenta algunas de esas partes como errores. Pero está equivocado: no fueron errores en absoluto. JS es lo que es hoy, el lenguaje de programación más omnipresente y, por lo tanto, más influyente del mundo, precisamente debido a todas esas partes.

No compres la mentira de que solo debes aprender y usar una pequeña colección de buenas partes mientras evitas todas las cosas malas. No compres el “X es el nuevo Y” como un elixir milagroso, que alguna nueva característica del lenguaje relega instantáneamente todo el uso de una característica anterior como obsoleto e ignorante. No escuches cuando alguien dice que tu código no es “moderno” porque aún no está utilizando una característica de etapa-0 que se propuso hace solo unas semanas.

Cada parte de JS es útil. Algunas partes son más útiles que otras. Algunas partes requieren que seas más cuidadoso e intencional.

Me parece absurdo intentar ser un desarrollador de JavaScript verdaderamente eficaz mientras solo usas una pequeña parte de lo que el lenguaje tiene para ofrecer. ¿Puedes imaginar a un trabajador de la construcción con una caja de herramientas llena de herramientas que solo usa su martillo y desprecia el destornillador o la cinta métrica como inferiores? Eso es simplemente absurdo.

Mi afirmación sin reservas es que deberías aprender todas las partes de JavaScript y, cuando sea apropiado, ¡usarlas! Y, si me permites ser tan audaz, creo que es hora de desechar cualquier libro de JS que te diga lo contrario.

¿El título?

Entonces, ¿de qué se trata el título de la serie?

No estoy tratando de insultarte con críticas sobre tu actual falta de conocimiento o comprensión de JavaScript. No estoy sugiriendo que no puedas o no podrás aprender JavaScript. No estoy presumiendo de una sabiduría secreta avanzada que solo poseo yo y unos pocos seleccionados.

En serio, todas esas fueron reacciones reales al título original de la serie antes de que la gente incluso leyera los libros. Y son infundadas.

El punto principal del título “You Don’t Know JS Yet” es señalar que la mayoría de los desarrolladores de JS no se toman el tiempo para entender realmente cómo funciona el código que escriben. Saben que funciona, que produce el resultado deseado. Pero o bien no entienden exactamente cómo, o peor aún, tienen un modelo mental inexacto para el cómo que falla con un examen más detenido.

Estoy presentando un desafío amable pero sincero para ti, el lector, de dejar de lado las suposiciones que tienes sobre JS y abordarlo con ojos frescos y una curiosidad renovada que te lleve a preguntarte ¿por qué? para cada línea de código que escribas. ¿Por qué hace lo que hace? ¿Por qué una forma es mejor o más apropiada que las otras media docena de formas que podrías haberlo logrado? ¿Por qué todos los “niños populares” dicen que debes hacer X con tu código, pero resulta que Y podría ser una mejor elección?

Añadí “Yet”(Aún) al título, no solo porque es la segunda edición, sino porque, en última instancia, quiero que estos libros te desafíen de una manera esperanzadora en lugar de desalentadora. I added “Yet” to the title, not only because it’s the second edition, but because ultimately I want these books to challenge you in a hopeful rather than discouraging way.

Pero dejame ser claro: no creo que sea posible conocer completamente JS. Eso no es un logro que se obtenga, sino un objetivo al que se aspira. No terminas de conocer todo sobre JS, simplemente sigues aprendiendo más y más a medida que pasas más tiempo con el lenguaje. Y cuanto más profundizas, más revisas lo que sabías antes, y lo vuelves a aprender desde esa perspectiva más experimentada.

Te animo a adoptar una mentalidad en torno a JavaScript, y de hecho, a todo el desarrollo de software, que nunca lo dominarás por completo, pero que puedes y debes seguir trabajando para acercarte a ese fin, un viaje que se extenderá durante toda tu carrera en el desarrollo de software y más allá.

Siempre puedes conocer JS mejor de lo que lo haces actualmente. Eso es lo que espero que representen estos libros de YDKJSY.

La misión

Realmente no es necesario argumentar por qué los desarrolladores deberían tomar en serio a JS, creo que ya ha demostrado ser merecedor de un estatus de primera clase entre los lenguajes de programación del mundo.

Pero aún se necesita hacer un caso diferente, más importante, y estos libros se enfrentan a ese desafío.

He enseñado a más de 5,000 desarrolladores de equipos y empresas de todo el mundo, en más de 25 países en seis continentes. Y lo que he visto es que con demasiada frecuencia, lo que cuenta generalmente es solo el resultado del programa, no cómo se escribe el programa o cómo/por qué funciona.

Mi experiencia, no solo como desarrollador sino también al enseñar a muchos otros desarrolladores, me dice que siempre serás más efectivo en tu trabajo de desarrollo si comprendes más completamente cómo funciona tu código que simplemente lograr que produzca un resultado deseado.

En otras palabras, lo suficientemente bueno para que funcione no es, y no debería ser, lo suficientemente bueno.

Todos los desarrolladores luchan regularmente con alguna parte del código que no funciona correctamente, y no pueden entender por qué. Pero con demasiada frecuencia, los desarrolladores de JS culparán al lenguaje en lugar de admitir que es su propia comprensión la que falla. Estos libros sirven como tanto la pregunta como la respuesta: ¿por qué hizo esto, y aquí está cómo hacer que haga aquello en su lugar.

Mi misión con YDKJSY es capacitar a cada desarrollador de JS para que posea completamente el código que escriben, para entenderlo y escribir con intención y claridad.

El camino

Algunos de ustedes han comenzado a leer este libro con el objetivo de completar los seis libros de un tirón.

Me gustaría advertirles que consideren cambiar ese plan.

No es mi intención que YDKJSY se lea de un tirón. El material en estos libros es denso, porque JavaScript es potente, sofisticado y en partes bastante complejo. Nadie puede realmente esperar descargar toda esta información a sus cerebros de una sola vez y retener una cantidad significativa de ella. Eso es irrazonable, y es insensato intentarlo.

Mi sugerencia es que se tomen su tiempo para pasar por YDKJSY. Tomen un capítulo, léanlo completamente de principio a fin, y luego vuelvan a leerlo sección por sección. Paren entre cada sección y practiquen el código o las ideas de esa sección. Para conceptos más grandes, probablemente sea una buena idea esperar pasar varios días digiriendo, releyendo, practicando, y luego digiriendo un poco más.

Podrían pasar una semana o dos en cada capítulo, y un mes o dos en cada libro, y un año o más en toda la serie, y aún así no estarían exprimiendo cada gramo de YDKJSY.

No devoren estos libros; tengan paciencia y distribuyan su lectura. Intercale la lectura con mucha práctica en código real en su trabajo o en proyectos en los que participen. Enfrenten las opiniones que he presentado en el camino, debatan con otros y, sobre todo, ¡no estén de acuerdo conmigo! Organicen un grupo de estudio o un club de lectura. Den mini talleres en su oficina. Escriban publicaciones de blog sobre lo que han aprendido. Hablen sobre estos temas en encuentros locales de JS.

Nunca es mi objetivo convencerlos de que estén de acuerdo con mi opinión, sino animarlos a que posean y puedan defender sus opiniones. No pueden llegar allí con una lectura rápida de estos libros. Eso es algo que tarda mucho tiempo en emerger, poco a poco, a medida que estudian, reflexionan y vuelven a visitar.

Estos libros están destinados a ser una guía en sus paseos por JavaScript, desde donde se encuentren actualmente con el lenguaje, hasta un lugar de comprensión más profunda. ¡Y cuanto más comprendan JS, más preguntas harán y más tendrán que explorar! ¡Eso es lo que encuentro tan emocionante!

Estoy muy contento de que estén embarcándose en este viaje, y me siento muy honrado de que consideren y consulten estos libros en el camino. Es hora de empezar a conocer a JS.