{"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\/da\/blog\/news\/pochemu-polezno-izobretat-kolyosa","title":{"rendered":"Hvorfor er det gavnligt at opfinde hjulet","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Hvorfor er det gavnligt at opfinde hjulet\" src=\"\/wp-content\/uploads\/2019\/10\/1067abfe7a3cdf764c49bbb0d5dd6d1b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nForleden havde jeg et interview med en JavaScript-udvikler, der ans\u00f8gte om en seniorposition. En kollega, som ogs\u00e5 var til stede ved interviewet, bad kandidaten om at skrive en funktion, der kunne udf\u00f8re et HTTP-anmodning og fors\u00f8ge igen flere gange i tilf\u00e6lde af fejl.<\/p>\n<p>Han skrev koden direkte p\u00e5 tavlen, s\u00e5 det ville have v\u00e6ret tilstr\u00e6kkeligt at skitsere noget omtrentligt. Hvis han bare havde vist, at han havde en god forst\u00e5else for det grundl\u00e6ggende, ville vi have v\u00e6ret ganske tilfredse. Men desv\u00e6rre kunne han ikke finde en tilfredsstillende l\u00f8sning. Derfor, i takt med at vi tilskrev det nerv\u00f8sitet, besluttede vi at lette opgaven lidt og bad ham om at \u00e6ndre funktionen med callback til en funktion baseret p\u00e5 promises.<\/p>\n<p>Men desv\u00e6rre. Ja, det var tydeligt, at han tidligere havde set lignende kode. Han havde en overordnet forst\u00e5else af, hvordan det hele fungerede. Vi ville have v\u00e6ret glade for et udkast til en l\u00f8sning, der demonstrerede forst\u00e5elsen af konceptet. Men koden, kandidater skrev p\u00e5 tavlen, var total nonsens. Han havde et meget uklart begreb om, hvad promises er i JavaScript og kunne ikke forklare, hvorfor de er n\u00f8dvendige. For en junior ville det have v\u00e6ret tilgivet, men til en seniorposition var det ikke tilstr\u00e6kkeligt. Hvordan kunne denne udvikler finde og rette fejl i en kompleks k\u00e6de af promises og forklare de andre, hvad han havde gjort?<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Udviklere anser f\u00e6rdig kode for at v\u00e6re indlysende.<\/h4>\n<p>\nUnder udviklingen st\u00f8der vi konstant p\u00e5 reproducerbare materialer. Vi overf\u00f8rer kodefragmenter, s\u00e5 vi ikke beh\u00f8ver at skrive dem igen hver gang. Derfor, n\u00e5r vi fokuserer al vores opm\u00e6rksomhed p\u00e5 de centrale dele, ser vi p\u00e5 den f\u00e6rdige kode, vi arbejder med, som noget indlysende \u2013 vi antager bare, at det fungerer som det skal.<\/p>\n<p>Og normalt virker det ogs\u00e5, men n\u00e5r der opst\u00e5r problemer, er forst\u00e5elsen af dets mekanik mere end det v\u00e6rd.<\/p>\n<p>S\u00e5 vores kandidat til seniorudviklerpositionen ans\u00e5 objects promises for at v\u00e6re indlysende. Han forestillede sig nok, hvordan man h\u00e5ndterer dem, n\u00e5r de optr\u00e6der i andres kode, men han forstod ikke det overordnede princip og kunne ikke reproducere det under interviewet. M\u00e5ske huskede han et fragment udenad \u2013 det er ikke s\u00e5 sv\u00e6rt:<\/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>\nJeg gjorde ogs\u00e5 det \u2013 ja, vi har sikkert alle gjort det p\u00e5 et tidspunkt. Man l\u00e6rte bare en sektion af koden for senere at bruge den i arbejdet, mens man kun havde en generel id\u00e9 om, hvordan det hele fungerede. Men hvis udvikleren virkelig forstod konceptet, ville han ikke have behov for at huske noget - han ville bare vide, hvordan det g\u00f8res, og uden besv\u00e6r genskabe alt det n\u00f8dvendige i koden.<\/p>\n<h4>G\u00e5 til kilden<\/h4>\n<p>\nI 2012, da der stadig ikke var etableret dominans af frontend-rammer, herskede jQuery, og jeg l\u00e6ste bogen <noindex><a rel=\"nofollow\" href=\"https:\/\/www.manning.com\/books\/secrets-of-the-javascript-ninja\">Secrets of the JavaScript Ninja<\/a><\/noindex>, skrevet af John Resig, skaberen af jQuery.<\/p>\n<p>Bogen l\u00e6rer l\u00e6seren, hvordan man bygger sin egen jQuery fra bunden og giver en unik mulighed for at forst\u00e5 tankegangen, som f\u00f8rte til oprettelsen af biblioteket. I de seneste \u00e5r har jQuery tabt sin tidligere popularitet, men jeg anbefaler stadig bogen meget. Det, der imponerede mig mest ved den, var den vedholdende f\u00f8lelse af, at jeg sagtens kunne have kommet p\u00e5 det selv. Trinene, som forfatteren beskrev, virkede s\u00e5 logiske, s\u00e5 forst\u00e5elige, at det virkelig begyndte at f\u00f8les som om, jeg uden problemer kunne skabe jQuery, hvis jeg bare tog fat p\u00e5 det.<\/p>\n<p>Selvf\u00f8lgelig ville jeg i virkeligheden ikke have klaret det \u2013 jeg ville konkludere, at det var alt for vanskeligt. Mine egne l\u00f8sninger ville have virket alt for enkle og naive til at fungere, og jeg ville have givet op. Jeg ville have betragtet jQuery som en selvf\u00f8lge, i hvis korrekte funktion man bare burde have blind tillid. I fremtiden ville jeg n\u00e6ppe bruge tid p\u00e5 at dykke ned i mekanikken bag dette bibliotek og blot have brugt det som en form for sort boks.<\/p>\n<p>Men m\u00f8det med denne bog gjorde mig til en anden person. Jeg begyndte at studere kildekoden og opdagede, at implementeringen af mange l\u00f8sninger i virkeligheden er meget gennemsigtig, endda \u00e5benlys. Nej, selvf\u00f8lgelig ville det at finde p\u00e5 noget lignende selv v\u00e6re noget helt andet. Men netop studiet af andres kode og reproduktionen af allerede eksisterende l\u00f8sninger hj\u00e6lper os med at finde p\u00e5 noget eget. <\/p>\n<p>Den inspiration, du vil hente, og de m\u00f8nstre, du begynder at bem\u00e6rke, vil \u00e6ndre dig som udvikler. Du vil opdage, at det vidunderlige bibliotek, du konstant bruger, og som du er vant til at t\u00e6nke p\u00e5 som en magisk artefakt, slet ikke fungerer p\u00e5 magi, men blot l\u00f8ser problemet p\u00e5 en elegant og kreativ m\u00e5de.<\/p>\n<p>Nogle gange m\u00e5 du k\u00e6mpe med koden, tage den trin for trin, men netop ved at tage sm\u00e5, sekventielle skridt kan du gentage forfatterens rejse mod l\u00f8sningen. Det vil give dig en dybere forst\u00e5else af kodningsprocessen og give dig mere selvtillid i din egen s\u00f8gen efter l\u00f8sninger.<\/p>\n<p>Da jeg f\u00f8rst begyndte at arbejde med promises, syntes jeg, at det var ren magi. S\u00e5 fandt jeg ud af, at de er baseret p\u00e5 de samme callbacks, og min programmeringsverden blev vendt op og ned. Alts\u00e5 m\u00f8nsteret, hvis form\u00e5l er at befri os fra callbacks, \u0440\u0435\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f ved hj\u00e6lp af callbacks?!<\/p>\n<p>Det hjalp mig med at se sagen fra en anden vinkel og indse, at jeg ikke stod over for nogle komplekse kodestykker, som jeg aldrig ville kunne forst\u00e5. Det er blot m\u00f8nstre, der kan forst\u00e5s uden problemer, hvis man har den rette nysgerrighed og dybe indlevelse. Det er s\u00e5dan, folk l\u00e6rer at programmere og vokser som udviklere.<\/p>\n<h4>Opfind hjulet p\u00e5 ny<\/h4>\n<p>\nS\u00e5 v\u00e6r ikke bange for at genopfinde hjulene: skriv selv koden til datalinkning, lav din egen promise eller endda skab dine egne l\u00f8sninger til tilstandsadministration. <br \/>\nDet er ligegyldigt, at ingen nogensinde vil bruge det, for nu kan du det. Og hvis du senere f\u00e5r mulighed for at anvende s\u00e5danne indsigter i dine egne projekter, s\u00e5 er det bare fantastisk. Du kan udvikle dem yderligere og l\u00e6re endnu mere.<\/p>\n<p>Pointen her er ikke at f\u00e5 din kode i produktion, men at l\u00e6re noget nyt. At implementere eksisterende l\u00f8sninger selv er en fantastisk m\u00e5de at l\u00e6re fra de bedste programm\u00f8rer og dermed forfine dine f\u00e6rdigheder.<br \/>\n<br \/>Kilde: <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\/da\/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=\"da_DK\" \/>\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\/da\/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\udd47Hvorfor det er nyttigt at genopfinde hjulene | ProHoster","description":"For nylig havde jeg en jobsamtale med en udvikler p\u00e5.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/news\/pochemu-polezno-izobretat-kolyosa","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/39071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=39071"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/39071\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/29315"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=39071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=39071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=39071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}