{"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\/de\/blog\/news\/pochemu-polezno-izobretat-kolyosa","title":{"rendered":"Warum es n\u00fctzlich ist, R\u00e4der zu erfinden","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Warum es n\u00fctzlich ist, R\u00e4der zu erfinden\" src=\"\/wp-content\/uploads\/2019\/10\/1067abfe7a3cdf764c49bbb0d5dd6d1b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVor kurzem hatte ich ein Vorstellungsgespr\u00e4ch mit einem JavaScript-Entwickler, der sich um eine Senior-Position beworben hat. Ein Kollege, der ebenfalls an dem Gespr\u00e4ch teilnahm, bat den Kandidaten, eine Funktion zu schreiben, die eine HTTP-Anfrage ausf\u00fchrt und im Falle eines Fehlers mehrere Versuche unternimmt.<\/p>\n<p>Er schrieb den Code direkt an die Tafel, daher h\u00e4tte es ausgereicht, etwas Ann\u00e4herndes darzustellen. Wenn er lediglich gezeigt h\u00e4tte, dass er gut versteht, worum es geht, w\u00e4ren wir durchaus zufrieden gewesen. Aber leider gelang es ihm nicht, eine gute L\u00f6sung zu finden. Daher haben wir, nachdem wir es auf seine Nervosit\u00e4t geschoben hatten, beschlossen, die Aufgabe ein wenig zu erleichtern und ihn zu bitten, die R\u00fcckruf-Funktion in eine auf Promises basierende Funktion umzuwandeln.<\/p>\n<p>Aber leider. Ja, es war offensichtlich, dass er mit solchem Code schon fr\u00fcher in Ber\u00fchrung gekommen war. Er wusste ganz grob, wie das alles funktioniert. Ein Entwurf der L\u00f6sung, der das Verst\u00e4ndnis des Konzepts demonstriert h\u00e4tte, h\u00e4tte uns gen\u00fcgt. Doch der Code, den der Kandidat an die Tafel schrieb, war v\u00f6llig sinnlos. Er hatte ein \u00e4u\u00dferst vages Verst\u00e4ndnis davon, was Promises in JavaScript sind, und konnte nicht richtig erkl\u00e4ren, wozu sie gut sind. F\u00fcr einen Junior w\u00e4re das vielleicht noch entschuldbar gewesen, aber f\u00fcr eine Senior-Position reichte es nicht aus. Wie sollte dieser Entwickler in der Lage sein, Bugs in komplexen Promise-Ketten zu beheben und den anderen zu erkl\u00e4ren, was genau er getan hat?<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Entwickler betrachten den bereitgestellten Code als selbstverst\u00e4ndlich.<\/h4>\n<p>\nIm Verlauf der Entwicklung sto\u00dfen wir st\u00e4ndig auf reproduzierbare Materialien. Wir \u00fcbertragen Codeausschnitte, damit wir sie nicht jedes Mal neu schreiben m\u00fcssen. Daher konzentrieren wir unser ganzes Augenmerk auf die Schl\u00fcsselteile und sehen den fertigen Code, mit dem wir arbeiten, als etwas Selbstverst\u00e4ndliches \u2013 wir gehen einfach davon aus, dass darin alles funktioniert wie es sollte.<\/p>\n<p>Und normalerweise funktioniert er tats\u00e4chlich, aber wenn Schwierigkeiten auftreten, lohnt es sich mehr als genug, seine Mechanik zu verstehen.<\/p>\n<p>So hielt unser Kandidat f\u00fcr die Senior-Entwicklerposition Objekte vom Typ Promise f\u00fcr selbstverst\u00e4ndlich. Er stellte sich vermutlich vor, wie man mit ihnen umgeht, wenn sie irgendwo in fremdem Code auftauchen, aber das Gesamtkonzept verstand er nicht und konnte es im Vorstellungsgespr\u00e4ch selbst nicht wiederholen. Vielleicht hatte er einen Codeausschnitt auswendig gelernt \u2013 das ist nicht so schwer:<\/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>\nIch habe das auch gemacht \u2013 wahrscheinlich haben wir alle irgendwann so gehandelt. Wir haben einfach einen Teil des Codes auswendig gelernt, um ihn sp\u00e4ter in der Arbeit zu verwenden, wobei wir nur grob verstanden haben, wie alles funktioniert. Wenn der Entwickler das Konzept wirklich verstanden h\u00e4tte, m\u00fcsste er sich nichts merken \u2013 er w\u00fcsste einfach, wie es geht, und w\u00fcrde alles Notwendige m\u00fchelos im Code reproduzieren.<\/p>\n<h4>Gehe an die Wurzeln<\/h4>\n<p>\nIm Jahr 2012, als noch nicht die Vorherrschaft von Frontend-Frameworks etabliert war, regierte jQuery die Welt, und ich las das Buch <noindex><a rel=\"nofollow\" href=\"https:\/\/www.manning.com\/books\/secrets-of-the-javascript-ninja\">Secrets of the JavaScript Ninja<\/a><\/noindex>, das von John Resig, dem Sch\u00f6pfer von jQuery, geschrieben wurde.<\/p>\n<p>Das Buch lehrt den Leser, wie man seine eigene jQuery von Grund auf erstellt, und bietet eine einzigartige M\u00f6glichkeit, den Denkprozess nachzuvollziehen, der zur Schaffung der Bibliothek f\u00fchrte. In den letzten Jahren hat jQuery an Beliebtheit verloren, aber ich empfehle das Buch trotzdem sehr. Was mich am meisten beeindruckt hat, war das hartn\u00e4ckige Gef\u00fchl, dass ich mir all das selbst h\u00e4tte ausdenken k\u00f6nnen. Die Schritte, die der Autor erkl\u00e4rte, erschienen so logisch und so verst\u00e4ndlich, dass ich ernsthaft dachte, ich k\u00f6nnte problemlos jQuery erschaffen, wenn ich nur anfangen w\u00fcrde.<\/p>\n<p>Nat\u00fcrlich h\u00e4tte ich in Wirklichkeit nichts dergleichen geschafft \u2013 ich h\u00e4tte gedacht, das sei un\u00fcberwindbar schwer. Eigene L\u00f6sungen w\u00e4ren mir zu einfach und naiv erschienen, um zu funktionieren, und ich h\u00e4tte aufgegeben. Ich h\u00e4tte jQuery als eine Selbstverst\u00e4ndlichkeit angesehen, deren korrekte Funktionsweise man einfach blind glauben muss. Sp\u00e4ter h\u00e4tte ich wahrscheinlich keine Zeit damit verbracht, die Mechanik dieser Bibliothek zu verstehen, sondern h\u00e4tte sie einfach als eine Art Blackbox genutzt.<\/p>\n<p>Aber die Bekanntschaft mit diesem Buch hat mich zu einem anderen Menschen gemacht. Ich begann, den Quellcode zu studieren, und stellte fest, dass die Umsetzung vieler L\u00f6sungen in der Tat sehr transparent, sogar offensichtlich ist. Nein, nat\u00fcrlich ist es eine andere Sache, sich selbst etwas Derartiges auszudenken. Aber gerade das Studium fremden Codes und die Reproduktion existierender L\u00f6sungen helfen uns, etwas Eigenes zu entwickeln. <\/p>\n<p>Die Inspiration, die Sie sch\u00f6pfen werden, und die Muster, die Sie beginnen zu bemerken, werden Sie als Entwickler ver\u00e4ndern. Sie werden feststellen, dass die wunderbare Bibliothek, die Sie st\u00e4ndig verwenden und von der Sie gewohnt sind, als magisches Artefakt zu denken, ganz und gar nicht auf Magie basiert, sondern einfach das Problem klar und einfallsreich l\u00f6st.<\/p>\n<p>Manchmal m\u00fcssen Sie an dem Code t\u00fcfteln und ihn Schritt f\u00fcr Schritt zerlegen, aber genau so, in kleinen, aufeinander folgenden Schritten voranzukommen, k\u00f6nnen Sie den Weg des Autors zur L\u00f6sung nachverfolgen. Das wird Ihnen helfen, tiefer in den Programmierprozess einzutauchen und mehr Selbstvertrauen bei der Suche nach eigenen L\u00f6sungen zu gewinnen.<\/p>\n<p>Als ich anfing, mit Promises zu arbeiten, kam es mir vor wie reine Magie. Dann erfuhr ich, dass sie auf denselben R\u00fcckruf-Mechanismen basieren, und meine Programmierwelt hat sich gewandelt. Das bedeutet, dass das Muster, dessen Ziel es ist, uns von R\u00fcckrufen zu befreien, selbst durch R\u00fcckrufe realisiert wird?!<\/p>\n<p>Das hat mir geholfen, die Dinge aus einer anderen Perspektive zu betrachten und zu erkennen, dass die Code-Schnipsel vor mir keine abgehobene Komplexit\u00e4t darstellen, die ich nie begreifen werde. Es sind einfach Muster, die man mit der n\u00f6tigen Neugier und tiefem Eintauchen problemlos verstehen kann. So lernen Menschen programmieren und wachsen als Entwickler.<\/p>\n<h4>Erfinden Sie das Rad neu<\/h4>\n<p>\nAlso, z\u00f6gern Sie nicht, R\u00e4der neu zu erfinden: Schreiben Sie den Code zur Datenbindung selbst, erstellen Sie ein hausgemachtes Promise oder entwickeln Sie sogar Ihre eigene L\u00f6sung zur Zustandsverwaltung. <br \/>\nEs spielt keine Rolle, dass damit am Ende niemand jemals etwas anfangen wird \u2013 Sie wissen es jetzt. Und wenn Sie die M\u00f6glichkeit haben, solche Entwicklungen sp\u00e4ter in eigenen Projekten zu verwenden, ist das umso besser. Sie k\u00f6nnen sie weiterentwickeln und noch mehr lernen.<\/p>\n<p>Es geht hier nicht darum, Ihren Code in die Produktion zu schicken, sondern darum, etwas Neues zu lernen. Die eigene Implementierung einer bereits bestehenden L\u00f6sung zu schreiben, ist eine hervorragende M\u00f6glichkeit, von den besten Programmierern zu lernen und so sein Handwerk zu verfeinern.<br \/>\n<br \/>Quelle: <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\/de\/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=\"de_DE\" \/>\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\/de\/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\udd47Warum es n\u00fctzlich ist, R\u00e4der zu erfinden | ProHoster","description":"Neulich habe ich ein Interview mit einem Entwickler gef\u00fchrt.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/news\/pochemu-polezno-izobretat-kolyosa","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/39071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=39071"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/39071\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/29315"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=39071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=39071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=39071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}