{"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\/it\/blog\/news\/pochemu-polezno-izobretat-kolyosa","title":{"rendered":"Perch\u00e9 \u00e8 utile inventare le ruote","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Perch\u00e9 \u00e8 utile inventare le ruote\" src=\"\/wp-content\/uploads\/2019\/10\/1067abfe7a3cdf764c49bbb0d5dd6d1b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRecentemente ho condotto un colloquio con un sviluppatore JavaScript che si candidava per la posizione di senior. Un collega, anch'esso presente al colloquio, ha chiesto al candidato di scrivere una funzione che eseguisse una richiesta HTTP e, in caso di fallimento, riprovasse pi\u00f9 volte.<\/p>\n<p>Scriveva il codice direttamente sulla lavagna, quindi sarebbe bastato rappresentare qualcosa di approssimativo. Se avesse semplicemente mostrato di comprendere bene di cosa si trattava, saremmo stati abbastanza soddisfatti. Tuttavia, sfortunatamente, non riusciva a trovare una soluzione valida. Allora, attribuendo ci\u00f2 all'emozione, abbiamo deciso di semplificare un po' il compito e gli abbiamo chiesto di trasformare la funzione con callback in una funzione basata sulle promise.<\/p>\n<p>Ma purtroppo. S\u00ec, era evidente che un tale codice gli era gi\u00e0 capitato di incontrarlo. Aveva una conoscenza generale di come funziona. Ci sarebbe bastato un abbozzo di soluzione che dimostrasse comprensione del concetto. Tuttavia, il codice che il candidato scriveva sulla lavagna era un'assoluta insensatezza. Aveva una concezione estremamente confusa di cosa siano le promise in JavaScript e non riusciva a spiegare bene perch\u00e9 fossero necessarie. Per un junior sarebbe stato ancora scusabile, ma per un senior non era all'altezza. Come avrebbe potuto questo sviluppatore risolvere bug in una complessa catena di promise e spiegare agli altri cosa avesse fatto?<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Gli sviluppatori considerano il codice pronto come una cosa ovvia<\/h4>\n<p>\nDurante lo sviluppo ci imbattiamo costantemente in materiali riproducibili. Copiamo frammenti di codice, in modo da non doverli scrivere tutto da capo ogni volta. Pertanto, concentrando tutta l'attenzione sulle parti chiave, guardiamo al codice pronto con cui lavoriamo come a qualcosa di ovvio: presumiamo semplicemente che funzioner\u00e0 come previsto.<\/p>\n<p>E di solito funziona davvero, ma quando sorgono difficolt\u00e0, comprendere la sua meccanica vale pi\u00f9 che mai.<\/p>\n<p>Cos\u00ec, il nostro candidato per la posizione di sviluppatore senior considerava ovvie le promise. Probabilmente sapeva come gestirle quando si presentavano in codice di altri, ma non capiva il principio generale e non riusciva a ripeterlo durante il colloquio. Forse aveva memorizzato un frammento a memoria \u2013 non \u00e8 cos\u00ec difficile:<\/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>\nL'ho fatto anche io, e probabilmente lo ha fatto anche ognuno di noi almeno una volta. Facevamo nostro un pezzo di codice per poi utilizzarlo nel lavoro, senza capire realmente come fosse strutturato. Ma se un sviluppatore avesse davvero compreso il concetto, non avrebbe dovuto imparare nulla a memoria: semplicemente saprebbe come fare e potrebbe riprodurre facilmente tutto ci\u00f2 che serve nel codice.<\/p>\n<h4>Rivolgiti alle origini<\/h4>\n<p>\nNel 2012, quando non c'era ancora il predominio dei framework front-end, il mondo era governato da jQuery, e leggevo il libro <noindex><a rel=\"nofollow\" href=\"https:\/\/www.manning.com\/books\/secrets-of-the-javascript-ninja\">Secrets of the JavaScript Ninja<\/a><\/noindex>, scritto da John Resig, il creatore di jQuery.<\/p>\n<p>Il libro insegna al lettore come costruire una propria jQuery da zero e offre un'opportunit\u00e0 unica di connettersi al modo di pensare che ha portato alla creazione della libreria. Negli ultimi anni, jQuery ha perso parte della sua popolarit\u00e0, ma consiglio comunque vivamente il libro. Ci\u00f2 che mi ha colpito di pi\u00f9 \u00e8 stato il persistente sentimento che avrei potuto arrivarci da solo. I passi descritti dall'autore sembravano cos\u00ec logici, cos\u00ec ovvi, che mi \u00e8 davvero sembrato che anche io avrei potuto facilmente creare jQuery, se solo avessi iniziato.<\/p>\n<p>Naturalmente, nella realt\u00e0 non sarei riuscito a farlo: avrei concluso che fosse troppo complicato. Le mie soluzioni avrebbero sembrate troppo semplici e naive per funzionare, e avrei gettato la spugna. Avrei considerato jQuery una di quelle cose ovvie, in cui si deve semplicemente credere ciecamente nel loro corretto funzionamento. In seguito, non avrei dedicato tempo a comprendere la meccanica di questa libreria, e avrei semplicemente continuato a utilizzarla come se fosse una scatola nera.<\/p>\n<p>Ma l'incontro con questo libro mi ha cambiato. Ho iniziato a studiare il codice sorgente e ho scoperto che l'implementazione di molte soluzioni \u00e8 in realt\u00e0 molto chiara, persino ovvia. Certo, arrivare a simili conclusioni da solo \u00e8 tutta un'altra storia. Ma \u00e8 proprio lo studio del codice altrui e la riproduzione di soluzioni esistenti che ci aiuta a inventare qualcosa di nostro. <\/p>\n<p>L'ispirazione che raccoglierai e i modelli che inizierai a notare ti trasformeranno come sviluppatore. Scoprirai che quella meravigliosa libreria che usi costantemente e alla quale sei abituato a pensare come a un artefatto magico, non funziona per magia, ma semplicemente risolve il problema in modo conciso e ingegnoso.<\/p>\n<p>A volte dovrai lavorare duramente sul codice, esaminandolo passo dopo passo, ma \u00e8 proprio cos\u00ec, procedendo a piccoli passi sequenziali, che potrai ripetere il percorso dell'autore verso la soluzione. Questo ti permetter\u00e0 di immergerti pi\u00f9 a fondo nel processo di scrittura del codice e ti dar\u00e0 maggiore fiducia nella ricerca delle tue soluzioni.<\/p>\n<p>Quando ho iniziato a lavorare con le promise, sembrava pura magia. Poi ho scoperto che alla base ci sono gli stessi callback, e il mio mondo da programmatore si \u00e8 rovesciato. Quindi, il pattern che ha l'obiettivo di liberarci dai callback viene realizzato tramite callback?!<\/p>\n<p>Questo mi ha aiutato a guardare le cose da una nuova prospettiva e a rendermi conto che di fronte non ho pezzi di codice incomprensibili, di una complessit\u00e0 che non comprender\u00f2 mai nella vita. Sono semplicemente modelli, che possono essere facilmente compresi con la dovuta curiosit\u00e0 e un profondo coinvolgimento. \u00c8 cos\u00ec che le persone imparano a programmare e crescono come sviluppatori.<\/p>\n<h4>Reinventa quest'ruota.<\/h4>\n<p>\nQuindi, non esitare a reinventare le ruote: scrivi tu stesso il codice per l'associazione dei dati, crea una promise homemade o addirittura realizza una soluzione per la gestione degli stati con le tue mani. <br \/>\nNon importa se tutto ci\u00f2 non sar\u00e0 mai utilizzato da nessuno: ora tu sai farlo. E se in futuro avrai la possibilit\u00e0 di utilizzare tali sviluppi nei tuoi progetti, sar\u00e0 fantastico. Potrai farli evolvere e imparare qualcosa di nuovo.<\/p>\n<p>Il senso qui non \u00e8 spedire il proprio codice in produzione, ma apprendere qualcosa di nuovo. Scrivere autonomamente l'implementazione di una soluzione gi\u00e0 esistente \u00e8 un ottimo modo per imparare dai migliori programmatori e affinare la propria maestria.<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.1.1 - 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\/it\/blog\/news\/pochemu-polezno-izobretat-kolyosa\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47Perch\u00e9 \u00e8 utile reinventare le ruote | ProHoster","description":"Giorni fa ho fatto un colloquio con uno sviluppatore su.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/news\/pochemu-polezno-izobretat-kolyosa","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/39071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=39071"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/39071\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/29315"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=39071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=39071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=39071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}