{"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\/pt\/blog\/news\/pochemu-polezno-izobretat-kolyosa","title":{"rendered":"Por que \u00e9 \u00fatil inventar rodas","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Por que \u00e9 \u00fatil inventar rodas\" src=\"\/wp-content\/uploads\/2019\/10\/1067abfe7a3cdf764c49bbb0d5dd6d1b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRecentemente, tive uma entrevista com um desenvolvedor JavaScript que estava concorrendo a uma posi\u00e7\u00e3o de s\u00eanior. Um colega, que tamb\u00e9m estava presente na entrevista, pediu ao candidato para escrever uma fun\u00e7\u00e3o que realizasse uma requisi\u00e7\u00e3o HTTP e, em caso de falha, tentasse novamente v\u00e1rias vezes.<\/p>\n<p>Ele estava escrevendo o c\u00f3digo diretamente no quadro, ent\u00e3o bastava desenhar algo aproximado. Se ele tivesse apenas mostrado que entendia bem o cerne da quest\u00e3o, ter\u00edamos ficado bastante satisfeitos. Mas, infelizmente, ele n\u00e3o conseguia encontrar uma solu\u00e7\u00e3o adequada. Ent\u00e3o, atribuindo isso \u00e0 ansiedade, decidimos facilitar um pouco a tarefa e pedimos que ele transformasse a fun\u00e7\u00e3o com callbacks em uma fun\u00e7\u00e3o baseada em promessas.<\/p>\n<p>Mas, infelizmente. Sim, era evidente que ele j\u00e1 tinha visto esse tipo de c\u00f3digo antes. Ele tinha uma ideia geral de como tudo funcionava. Ter\u00edamos ficado satisfeitos com um esbo\u00e7o de solu\u00e7\u00e3o que demonstrasse a compreens\u00e3o do conceito. No entanto, o c\u00f3digo que o candidato escrevia no quadro era um completo nonsense. Ele tinha uma no\u00e7\u00e3o bastante nebulosa do que s\u00e3o promessas em JavaScript e n\u00e3o conseguia explicar devidamente para que elas servem. Para um j\u00fanior isso seria ainda aceit\u00e1vel, mas para uma posi\u00e7\u00e3o s\u00eanior n\u00e3o era o caso. Como esse desenvolvedor conseguiria corrigir bugs em uma cadeia complexa de promessas e explicar aos outros o que exatamente fez?<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Os desenvolvedores consideram o c\u00f3digo pronto como autoexplicativo.<\/h4>\n<p>\nDurante o processo de desenvolvimento, deparamos constantemente com trechos de c\u00f3digo reutiliz\u00e1veis. N\u00f3s copiamos fragmentos de c\u00f3digo para n\u00e3o precisarmos escrev\u00ea-los novamente a cada vez. Assim, concentrando toda a aten\u00e7\u00e3o nas partes-chave, olhamos para o c\u00f3digo pronto como se fosse algo evidente \u2013 suponhamos que tudo funcionar\u00e1 como deveria.<\/p>\n<p>E geralmente funciona mesmo, mas quando surgem complica\u00e7\u00f5es, entender sua mec\u00e2nica vale mais do que a pena.<\/p>\n<p>Assim, nosso candidato \u00e0 vaga de desenvolvedor s\u00eanior considerava os objetos promise como autoexplicativos. Ele provavelmente tinha uma ideia de como manipular esses objetos quando estavam em algum c\u00f3digo de terceiros, mas n\u00e3o compreendia o princ\u00edpio geral e n\u00e3o conseguiu replic\u00e1-lo na entrevista. Talvez ele tivesse decorado um trecho de cor \u2013 n\u00e3o \u00e9 t\u00e3o 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>\nEu tamb\u00e9m fiz isso \u2013 provavelmente todos n\u00f3s fizemos em algum momento. Apenas decor\u00e1vamos um trecho de c\u00f3digo para depois utiliz\u00e1-lo no trabalho, tendo apenas uma ideia geral de como tudo funcionava. Mas se o desenvolvedor realmente entendesse o conceito, n\u00e3o precisaria decorar nada \u2013 ele apenas saberia como isso \u00e9 feito e reproduziria tudo o que \u00e9 necess\u00e1rio no c\u00f3digo sem esfor\u00e7o.<\/p>\n<h4>Volte \u00e0s origens<\/h4>\n<p>\nEm 2012, quando ainda n\u00e3o havia se estabelecido o dom\u00ednio dos frameworks de front-end, o mundo era dominado pelo jQuery, e eu li o livro <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, o criador do jQuery.<\/p>\n<p>O livro ensina o leitor a criar seu pr\u00f3prio jQuery do zero e oferece uma oportunidade \u00fanica de compreender o racioc\u00ednio que levou \u00e0 cria\u00e7\u00e3o da biblioteca. Nos \u00faltimos anos, o jQuery perdeu popularidade, mas eu ainda recomendo muito o livro. O que mais me impressionou nele foi a persistente sensa\u00e7\u00e3o de que eu poderia ter chegado a tudo isso sozinho. Os passos que o autor descrevia pareciam t\u00e3o l\u00f3gicos, t\u00e3o claros, que eu realmente comecei a acreditar que eu poderia facilmente criar jQuery se apenas me dedicasse ao assunto.<\/p>\n<p>Obviamente, na realidade, eu n\u00e3o conseguiria nada parecido \u2013 acharia que isso \u00e9 extremamente dif\u00edcil. Minhas pr\u00f3prias solu\u00e7\u00f5es pareceriam simples demais e ing\u00eanuas demais para funcionar, e eu desistiria. Eu consideraria o jQuery como algo autoevidente, cuja opera\u00e7\u00e3o correta exigiria apenas uma cren\u00e7a cega. Posteriormente, provavelmente eu n\u00e3o teria disposto de tempo para me aprofundar na mec\u00e2nica dessa biblioteca, apenas usaria como uma esp\u00e9cie de caixa-preta.<\/p>\n<p>Mas meu encontro com este livro me transformou em outra pessoa. Comecei a me aprofundar no c\u00f3digo-fonte e descobri que a implementa\u00e7\u00e3o de muitas solu\u00e7\u00f5es \u00e9, na verdade, muito transparente, at\u00e9 mesmo \u00f3bvia. Claro, pensar por conta pr\u00f3pria em algo semelhante \u00e9 outro assunto. Mas \u00e9 precisamente estudar o c\u00f3digo dos outros e reproduzir solu\u00e7\u00f5es j\u00e1 existentes que nos ajuda a inventar algo novo. <\/p>\n<p>A inspira\u00e7\u00e3o que voc\u00ea obter\u00e1 e os padr\u00f5es que come\u00e7ar\u00e1 a notar mudar\u00e3o voc\u00ea como desenvolvedor. Voc\u00ea descobrir\u00e1 que aquela maravilhosa biblioteca que voc\u00ea usa constantemente e que costuma pensar como um artefato m\u00e1gico, na verdade, n\u00e3o \u00e9 m\u00e1gica, mas simplesmente resolve um problema de forma concisa e engenhosa.<\/p>\n<p>\u00c0s vezes, voc\u00ea ter\u00e1 que trabalhar arduamente no c\u00f3digo, analisando-o passo a passo, mas \u00e9 assim, avan\u00e7ando com pequenos passos consecutivos, que voc\u00ea conseguir\u00e1 repetir o caminho do autor at\u00e9 a solu\u00e7\u00e3o. Isso permitir\u00e1 que voc\u00ea se aprofunde mais no processo de escrita de c\u00f3digo e aumente sua confian\u00e7a ao buscar solu\u00e7\u00f5es pr\u00f3prias.<\/p>\n<p>Quando comecei a trabalhar com promessas, parecia que era pura m\u00e1gica. Depois, descobri que elas se baseiam nas mesmas callbacks, e meu mundo de programador virou de cabe\u00e7a para baixo. Ou seja, o padr\u00e3o, cujo objetivo \u00e9 nos livrar das callbacks, se realiza por meio de callbacks?!<\/p>\n<p>Isso me ajudou a olhar para o assunto de outra forma e perceber que n\u00e3o estava diante de trechos de c\u00f3digo abstratos e de uma complexidade que eu nunca conseguiria entender. S\u00e3o apenas padr\u00f5es que podem ser compreendidos facilmente com a devida curiosidade e imers\u00e3o. \u00c9 assim que as pessoas aprendem a programar e crescem como desenvolvedores.<\/p>\n<h4>Reinvente a roda<\/h4>\n<p>\nEnt\u00e3o, sinta-se \u00e0 vontade para reinventar rodas: escreva seu pr\u00f3prio c\u00f3digo para vincula\u00e7\u00e3o de dados, crie uma promessa caseira ou at\u00e9 mesmo fa\u00e7a sua pr\u00f3pria solu\u00e7\u00e3o para gerenciamento de estados. <br \/>\nN\u00e3o importa que ningu\u00e9m nunca v\u00e1 usar isso \u2013 a quest\u00e3o \u00e9 que agora voc\u00ea sabe como fazer. E se voc\u00ea tiver a oportunidade de usar essas cria\u00e7\u00f5es em seus pr\u00f3prios projetos mais tarde, ser\u00e1 ainda melhor. Voc\u00ea poder\u00e1 desenvolv\u00ea-las e aprender ainda mais.<\/p>\n<p>O objetivo aqui n\u00e3o \u00e9 colocar seu c\u00f3digo em produ\u00e7\u00e3o, mas sim aprender algo novo. Implementar por conta pr\u00f3pria uma solu\u00e7\u00e3o j\u00e1 existente \u00e9 uma excelente maneira de aprender com os melhores programadores e, assim, aprimorar suas habilidades.<br \/>\n<br \/>Fonte: <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.3 - 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\/pt\/blog\/news\/pochemu-polezno-izobretat-kolyosa\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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 que \u00e9 \u00fatil reinventar rodas | ProHoster","description":"Recentemente, fiz uma entrevista com um desenvolvedor na.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/news\/pochemu-polezno-izobretat-kolyosa","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/39071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=39071"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/39071\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/29315"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=39071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=39071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=39071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}