{"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\/nl\/blog\/news\/pochemu-polezno-izobretat-kolyosa","title":{"rendered":"Why it's useful to invent wheels","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Why it&#039;s useful to invent wheels\" src=\"\/wp-content\/uploads\/2019\/10\/1067abfe7a3cdf764c49bbb0d5dd6d1b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOnlangs had ik een sollicitatiegesprek met een JavaScript-ontwikkelaar die zich kandidaat stelde voor een seniorpositie. Een collega, die ook aanwezig was bij het gesprek, vroeg de kandidaat om een functie te schrijven die een HTTP-aanroep zou doen en bij mislukking meerdere pogingen zou herhalen.<\/p>\n<p>Hij schreef de code direct op het bord, dus het was voldoende geweest om iets approximatiefs weer te geven. Als hij gewoon had laten zien dat hij goed begreep waar het om ging, zouden we behoorlijk tevreden zijn geweest. Maar helaas kon hij geen goed werkende oplossing vinden. We schreven dit toe aan zenuwen en besloten de taak iets te verlichten door hem te vragen om van de functie met callbacks een functie te maken die gebruikmaakt van promises.<\/p>\n<p>Maar helaas. Het was duidelijk dat hij soortgelijke code eerder had gezien. Hij had een algemeen idee van hoe alles werkte. Een snelle schets van een oplossing die begrip van het concept toonde, zou al voldoende zijn geweest. Echter, de code die de kandidaat op het bord schreef, was complete nonsens. Hij had een extreem vaag begrip van wat promises in JavaScript zijn en kon niet goed uitleggen waarom ze nodig zijn. Voor een junior zou dit nog vergeven zijn, maar voor een senior was dat niet voldoende. Hoe zou deze ontwikkelaar bugs kunnen oplossen in een complexe keten met promises en aan anderen uitleggen wat hij precies had gedaan?<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Ontwikkelaars beschouwen kant-en-klare code als vanzelfsprekend.<\/h4>\n<p>\nTijdens het ontwikkelingsproces worden we constant geconfronteerd met herbruikbare materialen. We nemen codefragmenten over om te voorkomen dat we deze steeds opnieuw moeten schrijven. Daardoor kijken we naar de kant-en-klare code waarmee we werken als iets vanzelfsprekends \u2013 we veronderstellen gewoon dat het allemaal naar behoren werkt.<\/p>\n<p>En meestal werkt het ook echt, maar wanneer er problemen ontstaan, wordt het begrip van de onderliggende mechanics meer dan beloond.<\/p>\n<p>Zo beschouwde onze kandidaat voor de senior ontwikkelaarspositie promise-objecten als vanzelfsprekend. Hij had misschien een idee hoe ermee om te gaan wanneer ze ergens in andermans code opdoken, maar begreep het algemene principe niet en kon het zelf niet herhalen tijdens het sollicitatiegesprek. Misschien had hij een fragment uit zijn hoofd geleerd \u2013 dat is niet zo moeilijk:<\/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>\nIk deed het ook zo \u2013 waarschijnlijk heeft iedereen dat ooit gedaan. Gewoon een stuk code uit het hoofd leren om het later in het werk te gebruiken, terwijl je slechts in grote lijnen begrijpt hoe alles in elkaar zit. Maar als een ontwikkelaar echt het concept zou begrijpen, zou hij niets hoeven te memoriseren \u2013 hij zou gewoon weten hoe het gedaan moet worden en zonder moeite alles in de code kunnen reproduceren.<\/p>\n<h4>Ga terug naar de oorsprong<\/h4>\n<p>\nIn 2012, toen de heerschappij van frontend-frameworks nog niet was gevestigd, werd de wereld gedomineerd door jQuery, en ik las een boek <noindex><a rel=\"nofollow\" href=\"https:\/\/www.manning.com\/books\/secrets-of-the-javascript-ninja\">Secrets of the JavaScript Ninja<\/a><\/noindex>, geschreven door John Resig, de maker van jQuery.<\/p>\n<p>Het boek leert de lezer hoe je je eigen jQuery vanaf nul kunt maken en biedt een unieke kans om het denkproces te begrijpen dat leidde tot de creatie van de bibliotheek. In de afgelopen jaren heeft jQuery zijn vroegere populariteit verloren, maar ik raad het boek desondanks sterk aan. Wat me het meest verbaasde, was het aanhoudende gevoel dat ik dit alles ook had kunnen verzinnen. De stappen die de auteur beschreef, leken zo logisch en zo begrijpelijk dat ik serieus begon te denken dat ik jQuery gemakkelijk zou kunnen maken, als ik er maar aan begon.<\/p>\n<p>Natuurlijk zou ik in werkelijkheid niets van dit alles hebben kunnen doen \u2013 ik zou denken dat het onoverkomelijk moeilijk is. Mijn eigen oplossingen zouden me te eenvoudig en na\u00efef zijn voor de werkelijkheid, en ik zou de handdoek in de ring hebben gegooid. Ik zou jQuery als een vanzelfsprekendheid beschouwen, waarin je gewoon blind moet geloven in de correcte werking. Achteraf zou ik waarschijnlijk geen tijd hebben besteed aan het doorgronden van de mechanica van deze bibliotheek, maar gewoon deze als een soort zwarte doos gebruiken.<\/p>\n<p>Maar de kennismaking met dit boek heeft me veranderd. Ik begon de broncode te bestuderen en ontdekte dat de implementatie van veel oplossingen in de praktijk zeer transparant, zelfs vanzelfsprekend was. Nee, natuurlijk, om zelf op zoiets te komen is een heel ander verhaal. Maar het is juist het bestuderen van andermans code en het reproduceren van bestaande oplossingen dat ons helpt om iets eigens te bedenken. <\/p>\n<p>De inspiratie die je opdoet en de patronen die je begint te herkennen, zullen je als ontwikkelaar veranderen. Je zult ontdekken dat die prachtige bibliotheek die je altijd gebruikt en die je beschouwt als een magisch artefact, helemaal niet op magie werkt, maar simpelweg op een beknopte en inventieve manier een probleem oplost.<\/p>\n<p>Soms zul je hard moeten werken aan de code, stap voor stap, maar op die manier, met kleine, geleidelijke stappen, kun je de weg van de auteur naar de oplossing herhalen. Dit stelt je in staat dieper in het proces van coderen te duiken en geeft je meer vertrouwen bij het zoeken naar je eigen oplossingen.<\/p>\n<p>Toen ik begon te werken met promises, leek het voor mij pure magie. Later ontdekte ik dat ze gebaseerd zijn op dezelfde callbacks, en mijn wereld als programmeur draaide om. Dus het patroon dat bedoeld is om ons van callbacks te bevrijden, wordt zelf ge\u00efmplementeerd met behulp van callbacks?!<\/p>\n<p>Dit hielp me om de zaak vanuit een ander perspectief te bekijken en te beseffen dat het geen ingewikkelde stukjes code zijn met een onvoorspelbare complexiteit die ik nooit zou begrijpen. Het zijn gewoon patronen die je probleemloos kunt doorgronden met de juiste nieuwsgierigheid en diepgaande onderdompeling. Zo leren mensen programmeren en groeien ze als ontwikkelaars.<\/p>\n<h4>Vernieuw dat wiel<\/h4>\n<p>\nDus herontdek die wielen zonder angst: schrijf zelf de code voor het verbinden van gegevens, maak een zelfgemaakte promise of cre\u00eber zelfs zelf een oplossing voor het beheren van staten. <br \/>\nHet maakt niet uit dat niemand ooit iets met dit alles zal doen \u2013 je hebt het nu in je vingers. En als je later de kans krijgt om die inzichten in je eigen projecten te gebruiken, is dat geweldig. Je kunt ze verder ontwikkelen en nog iets nieuws leren.<\/p>\n<p>De bedoeling is hier niet om je code in productie te sturen, maar om iets nieuws te leren. Zelf een implementatie van een bestaand oplossing schrijven is een uitstekende manier om van de beste programmeurs te leren en je vaardigheden te verfijnen.<br \/>\n<br \/>Bron: <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\/nl\/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=\"nl_NL\" \/>\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\/nl\/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\udd47 Waarom het nuttig is om wielen uit te vinden | ProHoster","description":"Onlangs had ik een sollicitatiegesprek met een ontwikkelaar op.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/news\/pochemu-polezno-izobretat-kolyosa","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/39071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=39071"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/39071\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/29315"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=39071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=39071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=39071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}