{"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\/sv\/blog\/news\/pochemu-polezno-izobretat-kolyosa","title":{"rendered":"Varf\u00f6r \u00e4r det nyttigt att uppfinna hjulet","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Varf\u00f6r \u00e4r det nyttigt att uppfinna hjulet\" src=\"\/wp-content\/uploads\/2019\/10\/1067abfe7a3cdf764c49bbb0d5dd6d1b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nH\u00e4romdagen genomf\u00f6rde jag en intervju med en JavaScript-utvecklare som ans\u00f6kte om en seniorposition. En kollega, som ocks\u00e5 var n\u00e4rvarande vid intervjun, bad kandidaten att skriva en funktion som skulle g\u00f6ra en HTTP-f\u00f6rfr\u00e5gan och, om den misslyckades, f\u00f6rs\u00f6ka flera g\u00e5nger.<\/p>\n<p>Han skrev koden direkt p\u00e5 tavlan, s\u00e5 det skulle ha r\u00e4ckt med att skissa n\u00e5got ungef\u00e4rligt. Om han bara hade visat att han f\u00f6rstod vad som var k\u00e4rnan i uppgiften, skulle vi ha varit ganska n\u00f6jda. Men tyv\u00e4rr lyckades han inte hitta en bra l\u00f6sning. D\u00e5 beslutade vi, med h\u00e4nvisning till nervositet, att g\u00f6ra uppgiften lite enklare och bad honom att omvandla funktionen med callbacks till en funktion baserad p\u00e5 promises.<\/p>\n<p>Men tyv\u00e4rr. Ja, det var uppenbart att han hade st\u00f6tt p\u00e5 liknande kod tidigare. Han visste i stora drag hur allt fungerade d\u00e4r. Det hade r\u00e4ckt med en skissl\u00f6sning som visade f\u00f6rst\u00e5else f\u00f6r konceptet. Men koden som kandidaten skrev p\u00e5 tavlan var fullst\u00e4ndig nonsens. Han hade en mycket vag uppfattning om vad promises \u00e4r i JavaScript och han kunde inte riktigt f\u00f6rklara varf\u00f6r de beh\u00f6vs. F\u00f6r en junior hade detta varit mer f\u00f6rl\u00e5tligt, men f\u00f6r en seniorposition r\u00e4ckte det inte till. Hur skulle denna utvecklare kunna fixa buggar i en komplex kedja av promises och f\u00f6rklara f\u00f6r andra vad han faktiskt gjorde?<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Utvecklare anser att f\u00e4rdig kod \u00e4r sj\u00e4lvklar.<\/h4>\n<p>\nUnder utvecklingsprocessen st\u00f6ter vi st\u00e4ndigt p\u00e5 \u00e5teranv\u00e4nda material. Vi kopierar kodfragment s\u00e5 att vi inte beh\u00f6ver skriva dem fr\u00e5n grunden varje g\u00e5ng. D\u00e4rf\u00f6r, n\u00e4r vi fokuserar all uppm\u00e4rksamhet p\u00e5 de viktigaste delarna, ser vi p\u00e5 den f\u00e4rdiga koden vi arbetar med som n\u00e5got sj\u00e4lvklart \u2013 vi f\u00f6ruts\u00e4tter helt enkelt att det fungerar som det ska.<\/p>\n<p>Och vanligtvis fungerar det verkligen, men n\u00e4r problem uppst\u00e5r l\u00f6nar det sig mer \u00e4n v\u00e4l att f\u00f6rst\u00e5 dess mekanik.<\/p>\n<p>S\u00e5 v\u00e5r kandidat f\u00f6r seniorutvecklarpositionen ans\u00e5g att promise-objekt var sj\u00e4lvklara. Han kunde nog f\u00f6rest\u00e4lla sig hur man hanterar dem n\u00e4r de dyker upp n\u00e5gon annanstans i andras kod, men han f\u00f6rstod inte den allm\u00e4nna principen och kunde inte \u00e5terge den vid intervjun. Kanske hade han memorerat ett fragment utantill \u2013 det \u00e4r inte s\u00e5 sv\u00e5rt:<\/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>\nJag gjorde ocks\u00e5 s\u00e5 \u2013 och vi har nog alla gjort det n\u00e5gon g\u00e5ng. Vi l\u00e4rde oss en bit kod utantill f\u00f6r att sedan anv\u00e4nda den i v\u00e5rt arbete, medan vi bara hade en allm\u00e4n f\u00f6rst\u00e5else f\u00f6r hur allt fungerade. Men om utvecklaren verkligen hade f\u00f6rst\u00e5tt konceptet, skulle han inte beh\u00f6va memorera n\u00e5got \u2013 han skulle bara veta hur det g\u00f6rs och utan anstr\u00e4ngning reproducera allt som beh\u00f6vs i koden.<\/p>\n<h4>G\u00e5 tillbaka till k\u00e4llorna<\/h4>\n<p>\n\u00c5r 2012, n\u00e4r ramverken f\u00f6r frontend \u00e4nnu inte hade tagit \u00f6ver, s\u00e5 dominerade jQuery, och jag l\u00e4ste boken <noindex><a rel=\"nofollow\" href=\"https:\/\/www.manning.com\/books\/secrets-of-the-javascript-ninja\">Secrets of the JavaScript Ninja<\/a><\/noindex>, skriven av John Resig, skaparen av jQuery.<\/p>\n<p>Boken l\u00e4r l\u00e4saren hur man skapar sitt eget jQuery fr\u00e5n grunden och ger en unik m\u00f6jlighet att f\u00f6rst\u00e5 tankes\u00e4ttet som ledde till skapandet av biblioteket. Under de senaste \u00e5ren har jQuery tappat sin tidigare popularitet, men jag rekommenderar \u00e4nd\u00e5 boken starkt. Det som imponerade mig mest var den ih\u00e4rdiga k\u00e4nslan av att jag ocks\u00e5 skulle kunna ha kommit p\u00e5 allt detta sj\u00e4lv. Stegen som f\u00f6rfattaren beskrev verkade s\u00e5 logiska och s\u00e5 tydliga att jag uppriktigt b\u00f6rjade tro att jag skulle kunna skapa jQuery enkelt om jag bara satte ig\u00e5ng.<\/p>\n<p>Sj\u00e4lvklart skulle jag i verkligheten aldrig klara n\u00e5got s\u00e5dant \u2013 jag skulle tycka att det var alldeles f\u00f6r sv\u00e5rt. Mina egna l\u00f6sningar skulle verka f\u00f6r enkla och naiva f\u00f6r att fungera, och jag skulle ha gett upp. Jag skulle ha sett jQuery som n\u00e5got sj\u00e4lvklart, d\u00e4r man bara beh\u00f6vde tro blind p\u00e5 att det fungerade. Senare skulle jag knappast ha lagt tid p\u00e5 att f\u00f6rst\u00e5 mekaniken bakom detta bibliotek och bara anv\u00e4nt det som en sorts svart l\u00e5da.<\/p>\n<p>Men bekantskapen med denna bok gjorde mig till en annan person. Jag b\u00f6rjade l\u00e4sa k\u00e4llkoden noggrant och uppt\u00e4ckte att implementeringen av m\u00e5nga l\u00f6sningar i sj\u00e4lva verket \u00e4r mycket tydlig, till och med uppenbar. Nej, att sj\u00e4lv komma p\u00e5 n\u00e5got s\u00e5dant \u00e4r en helt annan sak. Men just studiet av andras kod och reproduktionen av redan existerande l\u00f6sningar hj\u00e4lper oss att hitta p\u00e5 n\u00e5got eget. <\/p>\n<p>Inspiration that you will draw and patterns that you will start to notice will change you as a developer. You will discover that the wonderful library you constantly use and think of as a magical artifact operates not on magic, but simply solves problems concisely and resourcefully.<\/p>\n<p>Sometimes you'll have to toil over the code, breaking it down step by step, but that's how you can echo the author's path to the solution through small, sequential steps. This will allow you to dive deeper into the coding process and build more confidence in finding your own solutions.<\/p>\n<p>When I first started working with promises, it seemed to me like pure magic. Then I learned that they are based on the same callbacks, and my programming world turned upside down. So the pattern aimed at freeing us from callbacks is implemented with callbacks?!<\/p>\n<p>This helped me look at things differently and realize that what I faced wasn\u2019t some incomprehensible pieces of code with an extreme level of complexity that I would never grasp in my life. They are just patterns that can be easily understood with curiosity and deep immersion. That\u2019s how people learn to code and grow as developers.<\/p>\n<h4>Reinvent the wheel<\/h4>\n<p>\nSo feel free to reinvent wheels: write your own code for data binding, create a homemade promise, or even build your own state management solution. <br \/>\nIt doesn't matter that no one will ever use all of this \u2013 at least now you know how to do it. And if you have the chance to use such developments in your own projects later, that\u2019s even better. You will be able to expand them and learn something new.<\/p>\n<p>The point here isn't to push your code to production, but to master something new. Implementing already existing solutions on your own is a great way to learn from the best programmers and refine your skills.<br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/blog\/news\/pochemu-polezno-izobretat-kolyosa\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47Why It's Useful to Reinvent the Wheel | ProHoster","description":"The other day I was interviewing a developer.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/news\/pochemu-polezno-izobretat-kolyosa","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/39071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=39071"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/39071\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/29315"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=39071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=39071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=39071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}