Hier erfahren Sie, warum das Erlernen des Codierens so schwierig ist (und was Sie dagegen tun können)

Im Herbst 2014 begann ich die lange, schmerzhafte Reise zum Erlernen der Webentwicklung.

Da ich einen Tagesjob hatte, wusste ich, dass dieser Prozess meine Nächte und Wochenenden in Anspruch nehmen würde. Und da ich mir noch nie zuvor online technische Fertigkeiten beigebracht hatte, war mir bewusst, dass es auf dem Weg dorthin viele unvorstellbare Herausforderungen gab, die ihre hässlichen Köpfe aufrichten würden.

Aber hier ist, was ich nicht vorhersehen konnte: Nachdem ich Hunderte von schriftlichen, Video- und interaktiven Tutorials verwendet hatte, fand ich, dass die Methoden zum Unterrichten von technischen Themen online unglaublich… primitiv waren.

Der Stand der Online-Codierung Tutorials

Es gibt Tausende von Tutorials, die pro Jahr von Entwicklern mit zehntausenden von Jahren kollektiver Erfahrung zu HTML, CSS und JavaScript geschrieben wurden. Sie würden denken, dass es ein reichhaltiges Ökosystem mit einer Vielzahl von Lehrmethoden und interaktiven Werkzeugen geben würde.

Nicht der Fall. Stattdessen packen Codierungs-Tutorials die Unterrichtstechniken des 20. Jahrhunderts einfach mit der Technologie des 21. Jahrhunderts neu.

Video-Tutorials ahmen eine Unterrichtsstunde mit einem Whiteboard nach. Oder eine Lehr-DVD, die Sie bei einem Infomercial kaufen können.

Geschriebene Tutorials verhalten sich wie Buchkapitel.

Interaktive Tutorials verhalten sich wie Compiler, die seit den 80er Jahren an Colleges eingesetzt werden.

Nachdem ich Nacht für Nacht neue Themen gelernt und sie in Testprojekten ausprobiert hatte, dachte ich, ich MUSSTE etwas falsch machen. Also begann ich Freunde zu fragen, was sie anders machen sollten.

Hochschulabsolventen der Informatik fragten mich: "Haben Sie versucht, die Dokumente in W3 Schools oder im Mozilla Developer Network zu lesen?"

Andere Unternehmer sagten zu mir: „Gib jetzt auf. Ich konnte es nicht lernen, als ich es versuchte. "

Autodidaktische Webentwickler fragten mich: „Warum sprichst du mit mir? Sie haben Hunderte von Stunden Zeit, um die Webentwicklung zu erlernen. “

Dokumentation lesen. Gib auf. Setzen Sie mehr Stunden ein. Das waren meine Möglichkeiten.

Ich habe die Stunden so lange investiert, bis ich eine Full-Stack-Webanwendung erstellen konnte. Es hat (zumindest) ein ganzes Jahr gedauert. Diese Stunden wurden damit verbracht, Tutorials noch einmal anzusehen, zu lesen und zu wiederholen, bis ich das Gefühl hatte, dass ich es „verstanden“ habe, und dann das Konzept in einem Projekt ausprobiert habe.

Ich hatte das Gefühl, dass ich mich nicht wirklich von den schmerzhaften Lerngewohnheiten, die ich im College anwenden musste, entfernt hatte. Es war schockierend, dass Tausende von neuen Webentwicklern diese Reise absolvieren mussten.

Also machte ich mich daran herauszufinden, warum diese technischen Tutorials zu stundenlanger Verwirrung führten. Ich las Bücher und Artikel auf dem Gebiet der kognitiven Psychologie, beschäftigte mich mit populären Erklärungstaktiken und schrieb auch meine eigene Reihe von Codierungs-Tutorials.

Hier sind die 5 Gründe, warum ein Internet voller Codierungs-Tutorials immer noch keine befriedigenden Lektionen liefern kann (und wie man es besser macht).

Fehler 1: Unterrichten durch Anzeigen von Code-Ausschnitten

Vergleichen wir Codierung mit Kochen. In beiden Fällen müssen Sie eine Reihe von Anweisungen pflichtbewusst befolgen, wenn Sie eine angemessene Ausgabe wünschen. Beide haben harte Regeln ohne Spielraum für Fehler.

Aus irgendeinem Grund lieben es die Entwickler von Tutorials, nach der erstmaligen Beschreibung eines Konzepts schnell einen Codeausschnitt auf den Bildschirm zu bringen. Sie werden den Code zeilenweise erklären, als ob dies ausreicht.

Es gibt keine eindeutigen Verknüpfungen zwischen verschiedenen Zeilen im obigen Code-Snippet, es sei denn, Sie sind ein fortgeschrittener Node.js-Entwickler und wissen, wie Sie einen HTTP-Server schreiben.

Wenn ich Ihnen beibringen wollte, wie man eine Sauce macht, ist dies gleichbedeutend damit, dass Sie ein Bild von jedem Bestandteil der Sauce in der vorbereiteten Form sehen, ohne zu sehen, wie Sie dorthin gelangen. Sie könnten es herausfinden, aber es wird viel Versuch und Irrtum erfordern.

Ist das gewürfelte Tofu? Gewürfelte Zwiebeln? Gewürfelter Fenchel? Wie groß sind die Brocken? Mit welchem ​​Werkzeug soll ich sie würfeln?

Wenn Sie ein erfahrener Koch werden möchten, möchten Sie natürlich nicht immer und immer wieder lernen, wie man Zwiebeln würfelt. Ich möchte Sie ein- oder zweimal unterrichten und Ihnen erlauben, jeden kleinen Schritt, von vollen Zwiebeln bis zu gewürfelten, unabhängig voneinander zu wiederholen.

Dies ist so nah wie wir zu einem Kochkurs kommen

Wenn das Erlernen des Erstellens eines HTTP-Servers in mehreren Schritten durchgeführt werden muss (wie im obigen Beispiel), sollte das Code-Snippet der letzte Teil sein. Es sollte nicht der erste (oder ganze) Prozess sein. Und der gesamte Kontext muss gemeinsam gelehrt werden.

Dies liegt daran, dass Ihr Gehirn Langzeitgedächtnisse über Assoziationen im Hippocampus speichert. Der Hippocampus benötigt Kontext, um ein neues Konzept mit verwandten Konzepten zu speichern. Kontext ist in diesem Fall nicht die nebenstehende Codezeile mit einzelnen Erläuterungen.

Stattdessen hätten neue Webentwickler eine viel bessere Chance, das Konzept eines HTTP-Servers zu speichern, indem sie es mit etwas verknüpfen, das sie bereits verstehen. Ihr Gehirn muss ein umfangreiches Netzwerk von Verbindungen aufbauen, um neue herausfordernde Konzepte erfolgreich zu speichern.

Hier sind einige Möglichkeiten, wie Ihr Gehirn die Komponenten eines HTTP-Servers besser verstehen kann:

  1. Eine Analogie, die die verschiedenen Teile des Codeblocks erklärt und vorhandene Beziehungen verwendet, um diese neuen Beziehungen zu erklären.
  2. Eine interaktive Version des Code-Snippets, die den Live-Status der Anwendung anzeigt. Wenn Sie eine Zeile ändern, erhalten Sie sofort eine Antwort darauf, was mit Ihrer Anfrage geschehen ist.

Fehler Nr. 2: Nichtbeachtung der 80/20-Regel

Wenn Sie einen Webentwicklungslehrer oder 10 neue Webentwickler interviewen, werden Sie immer wieder von denselben Herausforderungen erfahren. CSS Positionierung. Schwimmt. Rückrufe. Dies waren die häufigsten Herausforderungen der letzten 10 Jahre.

Aus irgendeinem Grund werden in den Tutorials jedoch alle Konzepte für dieselbe Zeitdauer unterrichtet. Wenn eine Lektion zu einführendem CSS aus 10 Lektionen besteht und voraussichtlich insgesamt 5 Stunden dauert, dauert jede Lektion ungefähr 30 Minuten. Die einfachen werden genauso lange unterrichtet wie die harten, obwohl es einen gut dokumentierten Konsens über die schwierigsten Themen gibt!

Es ist so, als würde man lernen, wie man ein Ei bricht und wie man eine Gourmet-Hühnerbrust vorsichtig anbrennt. Beides ist gleichermaßen wichtig, um ein gutes Essen zuzubereiten, aber man braucht viel mehr Übung. Aber Sie werden irregeführt, wenn Sie glauben, dass sie gleichermaßen schwierig sind, weil das perfekte Kochen einer Hühnerbrust von außen als unkomplizierte Aufgabe erscheint.

Neue Entwickler lösen dieses Problem auf verschiedene Arten:

  1. Angenommen, sie sind die Dummen und geben auf
  2. Konsultieren Sie andere Tutorials zum selben Thema, die sich größtenteils wiederholen und gelegentlich von schlechter Qualität sind. Der Ansatz „Sprühen und Beten“.
  3. Fahren Sie mit dem nächsten Thema fort, mit der Annahme, dass sie es später herausfinden werden.

Lehrer aus anderen Disziplinen werden eine 80/20-Analyse verwenden, um ihre Bemühungen neu auszurichten. Dies bedeutet, dass 20% der neuen Konzepte 80% der Lernzeit der Schüler verbrauchen.

Beispiele für CSS-Themen

Die 6 CSS-Themen könnten gleichermaßen notwendig sein, um eine schöne Website zu erstellen. Sie sind aber NICHT gleich leicht zu erlernen. Manche schaffen stundenlange Kämpfe.

In einer idealen Welt würde ein vollständiger CSS-Lehrplan zwei bis drei Mal mehr Material zu diesen allgemeinen herausfordernden Themen enthalten. Es würde positive Ermutigung ("Jeder kämpft damit!") Und zusätzliche Übungsmöglichkeiten beinhalten. Dies ist jedoch noch nicht geschehen, und ich erwarte nicht, dass dies jemals für die meisten populären Dienste geschehen wird.

Sie wissen, dass Sie in dieser Furcht gefangen sind, wenn Sie stundenlang versucht haben, ein neues Konzept zu erlernen, und Sie können immer noch nicht vorhersagen, was passieren wird, wenn Sie eine Codezeile optimieren. Mit der Feynman-Technik können Sie die Themen ermitteln, die Sie nicht vollständig verstehen:

  1. Wählen Sie ein Konzept
  2. Bringe es einem Kleinkind bei
  3. Ermitteln Sie Lücken und kehren Sie zum Ausgangsmaterial zurück
  4. Überprüfen und vereinfachen (optional)

Fehler 3: Unterrichten aus der Perspektive eines erfahrenen Ingenieurs

Viele einführende Codierungs-Tutorials wurden von Ingenieuren mit mehr als 10 Jahren Erfahrung geschrieben. Wie soll ich wissen? Weil ich mir die Tutorials immer wieder ansehen oder durchlesen musste, bis mir klar wurde: „Sie werden dieses Schlüsselkonzept nicht erklären! Ich muss im Internet nach einer Erklärung suchen, bevor ich fortfahren kann. “

Dies ist eine gut dokumentierte kognitive Verzerrung, die als „Fluch des Wissens“ bezeichnet wird und in allen technischen Disziplinen auftritt.

Bildquelle: CommunicateHealth

Dies bedeutet: Wenn Lehrer jahrelange Erfahrung mit einem technischen Fach haben, haben sie bereits ein tiefes Verständnis für das Fach geschaffen. Da sie von den Zusammenhängen in ihrem eigenen Gehirn geblendet sind, können sie nicht verstehen, wie ein Anfänger das neue Material sehen könnte.

Wenn Sie sich daran erinnern, wie Ihr Gehirn Erinnerungen von oben speichert, hat dies tatsächlich eine biologische Grundlage! Der Hippocampus des Lehrers hat Assoziationen gebildet, die im Gehirn der Schüler nicht vorhanden sind.

Um diese Herausforderung zu meistern, empfehle ich ein Tool wie FreeCodeCamp, das von autodidaktischen Webentwicklern für andere in einer ähnlichen Position geschrieben wurde! Es hat einen vollständigen Lehrplan, der speziell dazu gedacht ist, selbstgesteuerten Lernenden beim Überwinden von Hürden zu helfen.

Fehler 4: Das Unterrichten von Code als wäre es ein mysteriöses neues System

Kehren wir zum Kochvergleich zurück. Die meisten Menschen haben ihr ganzes Leben lang etwas gekocht oder die Grundlagen von den Eltern gelernt. Sie sind bereits mit allen grundlegenden Tools aus jahrelangem Ausprobieren vertraut. Wenn Sie also jemandem beibringen würden, ein professioneller Koch zu sein, hätten Sie bereits die Grundlagen, auf denen Sie aufbauen können.

Es gibt jedoch keine "Basis" -Version für das Lernen der Webentwicklung! Auch wenn Sie in der Vergangenheit R oder Java gelernt haben, wird es nicht viele Lektionen geben, die sich übertragen lassen.

Wie berücksichtigen die meisten Online-Tutorials dies? Dazu gehören Lektionen, in denen Code vermittelt wird, als sei es eine fantastische neue Welt voller HTTP-Server, tückischer Browser und asynchroner Ereignisse. Sie verhalten sich so, als ob diese komplizierten Teile die Grundlage für späteres fortgeschrittenes Lernen bilden.

Stellen Sie sich vor, das Kochen erfordert eine so hohe Eintrittsbarriere. Wir würden alle Mikrowellen essen. Beim Kochen werden alle fünf Sinne angesprochen und der richtige und der falsche Vorgang bleiben schnell in Ihrem Gehirn hängen. Das menschliche Gehirn lernt am besten, wenn es mehrere Sinne anspricht. Es kann Systeme verstehen, bei denen unterschiedliche Reize gut gegen schlecht sind.

Jetzt weiß ich, dass das unmöglich scheint. Wie kann der gesamte Code mit unseren Sinnen in Verbindung gebracht werden, da er in einem Browser oder auf einem Server ausgeführt wird? Und ich meine nicht, dass Sie einen

-Zoom auf einem Bildschirm sehen, während Sie die CSS-Eigenschaften umschalten. Das fördert das Lernen nicht.

Ich hätte auch gedacht, dass sich imaginäre Zahlen aus der Mathematik nicht mit den menschlichen Sinnen verbinden lassen. Erinnerst du dich an i, i², i³ und i⁴? Scheint wie ein neues System, das Sie nur auswendig lernen müssen, um sich zu bewerben.

Stattdessen verwendet Kalid Azad von BetterExplained ein Diagramm mit einer x- und einer y-Achse, um Ihnen die Visualisierung der „imaginären“ Dimension zu erleichtern. Nun ist das Konzept der imaginären Zahlen direkt an ein bekanntes Konzept gebunden. Kein Auswendiglernen erforderlich.

Fehler Nr. 5: Kein sofortiges Feedback

Auf den ersten Blick scheint es, als hätte die Webentwicklung bereits ein perfektes System für Feedback. Sobald Sie Ihren Browser aktualisieren oder "npm start" in die Konsole eingeben, erhalten Sie eine sofortige Antwort.

Nehmen wir an, Sie möchten eine Hähnchenbrust für Ihre Mahlzeit perfekt zubereiten. Stattdessen verbrennst du es. Was hätte schief gehen können?

  1. Es wurde zu dünn geschnitten
  2. Die Hitze zu hoch gestellt
  3. Legen Sie es zu spät in die Pfanne
  4. Lass es zu lange in der Pfanne

Ihr verbranntes Produkt am Ende gibt Ihnen keine Ahnung, was schief gelaufen ist. Nur jahrelange Erfahrung oder unzählige Versuche mit Versuch und Irrtum helfen Ihnen herauszufinden, was schief gelaufen ist.

Hier ist die Fehlermeldung, die Sie erhalten würden, wenn dies an einer Eingabeaufforderung geschehen wäre:

Das wird beim Debuggen nicht helfen! Es fördert das Lernen durch Versuch und Irrtum, bis Sie es Stunden später herausfinden. Stattdessen benötigen Sie ein Feedback-System, das Sie über die Auswirkungen jeder Entscheidung informiert:

Das obige Bild zeigt, dass in Schritt 2, „Highest Temp“, ein Fehler aufgetreten ist, der die Ausgabe ruiniert hat.

Dieses reiche Netzwerk möglicher Entscheidungen ist bereits im Gehirn von erfahrenen Köchen verankert. Und selbst fortgeschrittene Webentwickler können eine Fehlermeldung lesen und sich beim Debuggen auf einen Teil des Skripts konzentrieren. Anfänger haben jedoch keinen ähnlichen Instinkt und lernen heutzutage nur durch stundenlanges Ausprobieren mit intermittierendem Feedback.

Auch dies scheint in einem Texteditor oder Online-Editor wie CodePen nicht möglich zu sein. In Bret Victors berühmtem Essay "Learnable Programming" wurde bereits ein vollständiges Framework beschrieben, mit dem neue Programmierer Feedback zu jeder Codezeile in ihrem Skript erhalten können, sobald sie getippt werden.

Selbstlernende sind am meisten verletzt

Wenn Sie in der High School oder im College sind, können Sie sich mit einem unterdurchschnittlichen Unterrichtsniveau befassen. Sie müssen sich nur auf den nächsten Test vorbereiten und haben ein Netzwerk von Kommilitonen. Sie werden dahingehend beurteilt, ob Sie bei einem Test eine Punktzahl erzielen können, und nicht, ob Sie dafür bezahlt werden können, dass Sie die Fertigkeit in der Praxis üben.

Aber wenn Sie ein autodidaktischer Webentwickler sind, sehen Sie sich wahrscheinlich anderen Umständen gegenüber. Sie haben nur eine begrenzte Zeit und müssen Ihr gesamtes Können unter Beweis stellen, indem Sie während eines Vorstellungsgesprächs eine echte App erstellen oder einen Test bestehen. Es gibt kein Konzept, für einen Test zu lernen und dann weiterzumachen.

Da die Online-Bildungsbranche wächst und immer mehr Erwachsene gezwungen sind, online neue Fähigkeiten zu erlernen, gehe ich davon aus, dass sich die Macht auf die Lernenden verlagern wird. Online-Bildungsunternehmen werden zunehmend unter Druck gesetzt, die Lernerfahrung selbst zu verbessern. Die besten Unterrichtsstrategien werden mit Hunderttausenden zahlender Abonnenten belohnt.

-

Ich versuche einen neuen Weg zur Webentwicklung zu finden. Wenn Sie sich meine einprägsame Herangehensweise an Tutorials ansehen möchten, besuchen Sie CodeAnalogies.com. Und wenn Sie denken, dass andere Menschen diese Geschichte mögen würden, klatschen Sie!