Para comprender realmente la rueda, debe reinventarla usted mismo.El otro día entrevisté para el puesto de desarrollador senior de JavaScript. Mi colega, que también participó en la entrevista, le pidió al candidato que escribiera una función que ejecute la solicitud HTTP y que la repita varias veces en caso de falla.
Desde que escribió esto en la pizarra, el pseudocódigo sería suficiente. Si mostrara una buena comprensión del tema, estaríamos satisfechos. Pero, desafortunadamente, no pudo encontrar una buena solución.
Pensando que estaba nervioso, decidimos hacer la tarea un poco más fácil y le pedimos que convirtiera la función basada en la devolución de llamada a la función basada en Promesa.
Sin suerte
Puedo decir que ha visto un código similar antes. Más o menos sabía cómo funcionaba esto. El pseudocódigo que demuestra que entiende este concepto sería suficiente.
Pero el código que escribió en la pizarra no tenía sentido. Solo tenía una vaga comprensión del concepto de Promesa en JavaScript, y no podía hablar claramente sobre él.
Puede ser excusable si es un desarrollador novato, pero si solicita un puesto de liderazgo, esto no es suficiente. ¿Cómo depurará la compleja cadena Promise y luego explicará a los demás lo que hizo?

Este artículo fue escrito con el apoyo de EDISON Software, que se ocupa de la salud de los programadores y su desayuno , y también desarrolla software personalizado .
Los desarrolladores dan por sentado las abstracciones
Como desarrolladores, trabajamos con abstracciones. Resumimos el código que de lo contrario tendría que ser duplicado. Por lo tanto, cuando nos enfocamos en puntos más importantes, aceptamos las abstracciones con las que trabajamos por sentado, y simplemente asumimos que funcionan como deberían.
Usualmente lo es, pero cuando las cosas se complican, debes saber cómo funcionan estas abstracciones.
El candidato de desarrollo senior dio por sentado la abstracción de Promise. Probablemente habría sabido cómo trabajar con él si lo hubiera encontrado en algún lugar de un código, pero no entendió el concepto y, por lo tanto, no pudo reproducirlo en la entrevista.
Podía recordar el código. Realmente no es tan difícil:
return new Promise((resolve, reject) => { functionWithCallback((err, result) => { return err ? reject(err) : resolve(result); }); });
Yo hice eso Probablemente todos hagamos esto. Simplemente recuerda un fragmento de código para poder trabajar con él. Entiendes más o menos cómo funciona esto.
Pero si realmente entendiera el concepto, no necesitaría recordarlo. Simplemente sabría esto y lo reproduciría sin ningún problema.
Conoce tu fuente
En 2012, antes de que los marcos frontales dominaran y jQuery gobernara el mundo, leí
Secretos del JavaScript Ninja de John Rezig, creador de jQuery.
Este libro le enseñará cómo crear su propia jQuery desde cero y le dará una comprensión única de los procesos de pensamiento detrás de la creación de esta biblioteca. Aunque jQuery ha pasado a un segundo plano en los últimos años, recomiendo leer este libro.
Lo que me llamó la atención en el libro fue la sensación constante de que yo mismo podía pensar en ello. Los pasos descritos en el libro fueron tan lógicos y simples que realmente sentí que podía crear jQuery si me establecía ese objetivo.
De hecho, nunca podría hacer esto, me resultaría demasiado complicado. Pensaría que mis decisiones son demasiado simples e ingenuas, y simplemente me rendiría. Simplemente daría por sentado jQuery y confiaría en él. Después de eso, probablemente no entendería cómo funciona. Solo lo usaría como una caja negra.
Leer este libro me ha cambiado. Comencé a entender el código fuente y descubrí que muchas implementaciones eran bastante simples, incluso obvias.
Ahora, encontrar estas soluciones por su cuenta es un asunto completamente diferente. Pero leer el código fuente y las soluciones existentes de auto implementación son exactamente lo que te ayuda a encontrar el tuyo.
La inspiración que recibas y los patrones que descubras te cambiarán como desarrollador. Encontrará que esta maravillosa biblioteca que usa y considera que la magia no es realmente mágica, sino simplemente una solución simple e inteligente.
Puede pasar tiempo analizando el código, paso a paso, y también lo obligará a seguir los mismos pasos pequeños y graduales que los autores tomaron para crearlo. Esto le brinda una comprensión más profunda del proceso de programación y más confianza en la implementación de sus propias decisiones.
Cuando comencé a usar Promise en JavaScript, pensé que era mágico. Luego descubrí que se basan en devoluciones de llamada y mi visión de la programación ha cambiado para siempre.
Esta plantilla, que se suponía que eliminaría las devoluciones de llamada, se implementó usando ... devoluciones de llamada?
Me ha cambiado Me hizo darme cuenta de que estos no eran fragmentos de código increíblemente complejos, por lo que pude resolverlos. Estos son modelos que podría entender fácilmente si tuviera curiosidad y ganas de sumergirme en ellos.
Así es como realmente aprendes a programar. Así es como te conviertes en un mejor desarrollador.
Reinventar la rueda
Así que reinventemos las ruedas. Escriba su
propio enlace de datos ,
su propia Promesa o incluso su
solución de administración de estado .
No importa que nadie use esto. Aprenderás algo nuevo por ti mismo. Y si puede usarlo en uno de sus propios proyectos, será genial. Desarrollará este código aún más y aprenderá aún más.
El punto no es usar su solución en la producción, sino aprender. Escribir su propia implementación de una solución existente es una excelente manera de aprender de los mejores.

Lee también el blog
Empresa EDISON:
20 bibliotecas para
espectacular aplicación para iOS