{"id":39071,"date":"2019-10-31T22:27:41","date_gmt":"2019-10-31T19:27:41","guid":{"rendered":"https:\/\/prohoster.info\/blog\/pochemu-polezno-izobretat-kolyosa\/"},"modified":"2019-10-31T22:27:41","modified_gmt":"2019-10-31T19:27:41","slug":"pochemu-polezno-izobretat-kolyosa","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/news\/pochemu-polezno-izobretat-kolyosa","title":{"rendered":"Por qu\u00e9 es \u00fatil inventar la rueda","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Por qu\u00e9 es \u00fatil inventar la rueda\" src=\"\/wp-content\/uploads\/2019\/10\/1067abfe7a3cdf764c49bbb0d5dd6d1b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRecientemente, entrevist\u00e9 a un desarrollador de JavaScript que aspiraba a un puesto de senior. Un colega que tambi\u00e9n estaba presente en la entrevista pidi\u00f3 al candidato que escribiera una funci\u00f3n que realizar\u00eda una solicitud HTTP y, en caso de fallar, intentar\u00eda de nuevo varias veces.<\/p>\n<p>\u00c9l escrib\u00eda el c\u00f3digo directamente en la pizarra, por lo que bastar\u00eda con representar algo aproximado. Si simplemente hubiera demostrado que entiende bien la esencia del asunto, habr\u00edamos estado bastante satisfechos. Pero, desafortunadamente, no logr\u00f3 encontrar una soluci\u00f3n adecuada. Entonces, atribuyendo esto a los nervios, decidimos facilitar un poco la tarea y le pedimos que transformara la funci\u00f3n con callbacks en una funci\u00f3n basada en promesas.<\/p>\n<p>Pero, lamentablemente. S\u00ed, era evidente que un c\u00f3digo as\u00ed le hab\u00eda sido familiar antes. Sab\u00eda en t\u00e9rminos generales c\u00f3mo funcionaba todo. Nos habr\u00eda bastado con un esbozo de soluci\u00f3n que demostrara comprensi\u00f3n del concepto. Sin embargo, el c\u00f3digo que el candidato escrib\u00eda en la pizarra era una completa tonter\u00eda. Ten\u00eda una idea muy vaga de lo que son las promesas en JavaScript y no pudo explicarlo adecuadamente. Para un junior esto habr\u00eda sido todav\u00eda excusable, pero para un puesto de senior ya no era suficiente. \u00bfC\u00f3mo podr\u00eda este desarrollador solucionar errores en una compleja cadena de promesas y explicar a los dem\u00e1s qu\u00e9 exactamente hab\u00eda hecho?<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Los desarrolladores consideran el c\u00f3digo listo como algo obvio.<\/h4>\n<p>\nEn el proceso de desarrollo, nos encontramos constantemente con materiales reproducibles. Transferimos fragmentos de c\u00f3digo para no tener que escribirlos de nuevo cada vez. Por lo tanto, al concentrar toda nuestra atenci\u00f3n en las partes clave, vemos el c\u00f3digo final con el que trabajamos como algo evidente: simplemente asumimos que todo funcionar\u00e1 como se espera.<\/p>\n<p>Y, por lo general, realmente funciona, pero cuando surgen dificultades, comprender su mec\u00e1nica m\u00e1s que compensa.<\/p>\n<p>As\u00ed, nuestro candidato para el puesto de desarrollador senior consideraba que los objetos promesa eran evidentes. Probablemente, entend\u00eda c\u00f3mo manejarlos cuando se encontraban en el c\u00f3digo de otros, pero no comprend\u00eda el principio general y no pudo repetirlo por s\u00ed mismo en la entrevista. Tal vez memoriz\u00f3 un fragmento de memoria: no es tan dif\u00edcil.<\/p>\n<pre><code class=\"javascript\">return new Promise((resolve, reject) =&gt; {\n  functionWithCallback((err, result) =&gt; {\n   return err ? reject(err) : resolve(result);\n  });\n});<\/code><\/pre>\n<p>\nYo tambi\u00e9n lo hice; probablemente todos nosotros lo hemos hecho alguna vez. Simplemente memorizamos un fragmento de c\u00f3digo para luego usarlo en el trabajo, teniendo una idea general de c\u00f3mo est\u00e1 estructurado. Pero si un desarrollador realmente entendiera el concepto, no necesitar\u00eda memorizar nada; simplemente sabr\u00eda c\u00f3mo hacerlo y podr\u00eda reproducir todo lo necesario en el c\u00f3digo sin dificultad.<\/p>\n<h4>Regresa a los or\u00edgenes<\/h4>\n<p>\nEn 2012, cuando todav\u00eda no dominaban los frameworks de frontend, el mundo estaba gobernado por jQuery, y yo le\u00eda un libro <noindex><a rel=\"nofollow\" href=\"https:\/\/www.manning.com\/books\/secrets-of-the-javascript-ninja\">Secrets of the JavaScript Ninja<\/a><\/noindex>, escrito por John Resig, el creador de jQuery.<\/p>\n<p>El libro ense\u00f1a al lector c\u00f3mo crear su propia jQuery desde cero y ofrece una oportunidad \u00fanica para comprender el pensamiento que llev\u00f3 a la creaci\u00f3n de la biblioteca. En los \u00faltimos a\u00f1os, jQuery ha perdido su anterior popularidad, pero a\u00fan as\u00ed recomiendo mucho el libro. Lo que m\u00e1s me impresion\u00f3 fue la persistente sensaci\u00f3n de que yo podr\u00eda haber llegado a estas conclusiones por mi cuenta. Los pasos que describ\u00eda el autor parec\u00edan tan l\u00f3gicos, tan claros, que realmente empec\u00e9 a pensar que podr\u00eda haber creado jQuery sin problemas, si tan solo me hubiera puesto a ello.<\/p>\n<p>Por supuesto, en realidad no habr\u00eda sido capaz de hacerlo; habr\u00eda decidido que era demasiado dif\u00edcil. Mis propias soluciones me habr\u00edan parecido demasiado simples y na\u00efve para funcionar, y hubiera levantado las manos en se\u00f1al de rendici\u00f3n. Habr\u00eda considerado jQuery como algo obvio, en cuya funcionamiento correcto solo hay que creer ciegamente. Posteriormente, probablemente no habr\u00eda gastado tiempo intentando entender la mec\u00e1nica de esta biblioteca, y simplemente la habr\u00eda utilizado como una especie de caja negra.<\/p>\n<p>Pero el conocer este libro me convirti\u00f3 en otra persona. Comenc\u00e9 a leer el c\u00f3digo fuente y descubr\u00ed que la implementaci\u00f3n de muchas soluciones es en realidad muy clara, incluso obvia. No, por supuesto, llegar a algo as\u00ed por mi cuenta es otra historia. Pero precisamente el estudio del c\u00f3digo ajeno y la reproducci\u00f3n de soluciones ya existentes nos ayuda a inventar algo propio. <\/p>\n<p>La inspiraci\u00f3n que obtendr\u00e1s y los patrones que comenzar\u00e1s a notar te transformar\u00e1n como desarrollador. Descubrir\u00e1s que esa maravillosa biblioteca que usas constantemente y de la que sueles pensar como un artefacto m\u00e1gico, en realidad no se basa en magia, sino que simplemente resuelve problemas de manera concisa e ingeniosa.<\/p>\n<p>A veces tendr\u00e1s que trabajar arduamente en el c\u00f3digo, desglos\u00e1ndolo paso a paso, pero as\u00ed, avanzando con peque\u00f1os pasos consecutivos, podr\u00e1s replicar el camino del autor hacia la soluci\u00f3n. Esto te permitir\u00e1 sumergirte m\u00e1s en el proceso de escritura de c\u00f3digo y te dar\u00e1 m\u00e1s confianza al buscar tus propias soluciones.<\/p>\n<p>Cuando empec\u00e9 a trabajar con promesas, me parec\u00eda que era pura magia. Luego descubr\u00ed que en su base se encuentran los mismos callbacks, y mi mundo como programador dio un giro. \u00bfEs decir, el patr\u00f3n que busca liberarnos de los callbacks se implementa a trav\u00e9s de callbacks?<\/p>\n<p>Esto me ayud\u00f3 a ver el asunto con otros ojos y a comprender que no se trataba de fragmentos de c\u00f3digo extra\u00f1os con una complejidad que nunca podr\u00eda entender. Son solo patrones que pueden desglosarse f\u00e1cilmente con la debida curiosidad y un profundo conocimiento. As\u00ed es como las personas aprenden a programar y crecen como desarrolladores.<\/p>\n<h4>Reinventa esta rueda<\/h4>\n<p>\nAs\u00ed que no dudes en reinventar ruedas: escribe tu propio c\u00f3digo para enlazar datos, crea una promesa casera o incluso haz tu propia soluci\u00f3n para la gesti\u00f3n de estados. <br \/>\nNo importa que nadie use todo esto alguna vez, ahora tienes esa habilidad. Y si tienes la oportunidad de utilizar esos desarrollos m\u00e1s adelante en tus propios proyectos, eso es a\u00fan mejor. Podr\u00e1s expandirlos y aprender a\u00fan m\u00e1s.<\/p>\n<p>El objetivo aqu\u00ed no es enviar tu c\u00f3digo a producci\u00f3n, sino aprender algo nuevo. Implementar de forma aut\u00f3noma soluciones existentes es una excelente manera de aprender de los mejores programadores y perfeccionar tus habilidades.<br \/>\n<br \/>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/digital-ecosystems\/blog\/472006\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430 \u0434\u043d\u044f\u0445 \u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u043d\u0430 JavaScript, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0441\u0435\u043d\u0438\u043e\u0440\u0430. \u041a\u043e\u043b\u043b\u0435\u0433\u0430, \u0442\u043e\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0432\u0448\u0438\u0439 \u043d\u0430 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438, \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0430 HTTP \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u043b\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u041e\u043d \u043f\u0438\u0441\u0430\u043b \u043a\u043e\u0434 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u0434\u043e\u0441\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b \u0431\u044b\u043b\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043d\u0435\u0447\u0442\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435. \u0415\u0441\u043b\u0438 \u0431\u044b \u043e\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29315,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-39071","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0430 \u0434\u043d\u044f\u0445 \u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u043d\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/news\/pochemu-polezno-izobretat-kolyosa\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u043a\u043e\u043b\u0451\u0441\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0430 \u0434\u043d\u044f\u0445 \u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u043d\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/news\/pochemu-polezno-izobretat-kolyosa\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:27:41+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:27:41+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Por qu\u00e9 es \u00fatil reinventar ruedas | ProHoster","description":"Recientemente estuve entrevistando a un desarrollador en.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/news\/pochemu-polezno-izobretat-kolyosa","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u043a\u043e\u043b\u0451\u0441\u0430 | ProHoster","og:description":"\u041d\u0430 \u0434\u043d\u044f\u0445 \u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u043d\u0430.","og:url":"https:\/\/prohoster.info\/es\/blog\/news\/pochemu-polezno-izobretat-kolyosa","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:27:41+00:00","article:modified_time":"2019-10-31T19:27:41+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"39071","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 00:37:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 23:16:10","updated":"2026-01-24 00:37:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/39071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=39071"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/39071\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/29315"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=39071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=39071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=39071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}