Code für Computer zu schreiben ist schwierig, aber Code für Menschen zu schreiben ist noch schwieriger
- Code für Computer zu schreiben ist bereits schwierig. Man muss große Geschäftsziele in kleine logische Anweisungen zerlegen.
- Aber Code für Menschen zu schreiben ist noch schwieriger. Das ist eine Aufgabe an der Schnittstelle von Informatik und Psychologie.
- Wie Richard Feynman sagte: Stell dir vor, wie schwierig Physik wäre, wenn Elektronen Gefühle hätten. Das beschreibt Programmierung für Menschen ziemlich gut.
Der Einstieg ist bereits das Produkt
- Auf Nutzerfeedback zu hören ist wichtig, aber das meiste Feedback kommt von Power-Usern, die das Produkt häufig verwenden.
- Es gibt einen Survivorship Bias. Von Nutzern, die gar nicht erst anfangen, hört man fast nie Feedback.
- Consumer-Produkte haben ihren Onboarding-Prozess über lange Zeit optimiert. Für Entwickler-Tools sollte dasselbe gelten.
- Der Onboarding-Prozess sollte als Teil des Produkts betrachtet werden, und das Setup sollte minimal sein, damit Nutzer das Produkt innerhalb weniger Minuten verwenden können.
Menschen lernen nicht aus „Kernkonzepten“, sondern aus Beispielen
- Menschen sind hervorragend im Pattern Matching. Computer dagegen folgen strenger Logik.
- Viele Dokumentationen für Entwickler-Tools sind wie Computerprogramme geschrieben. Das ist für Menschen ungeeignet.
- Lernen anhand von Beispielen ist effektiver. Beispiele helfen Nutzern, das Tool zu verstehen.
In die Erfolgsfalle tappen
- Der Grundmodus der Programmierung ist Fehlerbehebung. Nutzer verbringen die meiste Zeit damit, Fehler zu beheben.
- Deshalb ist es wichtig, Fehler in Erfolg zu überführen.
- Fehler sollten als Gelegenheit genutzt werden, Nutzer auf den richtigen Pfad zu lenken. Exception-Handling sollte Code-Snippets enthalten, und Warnmeldungen sollten Hilfe bieten.
Konzeptuelle Überlastung vermeiden
- Neue Konzepte verstehen zu müssen, erzeugt Reibung.
- 2–3 Konzepte sind in Ordnung, aber 8 neue Konzepte zu lernen ist belastend.
- Ideal ist ein Framework, das mit wenigen Konzepten mächtige Funktionen bietet. React bietet zum Beispiel mit einigen einfachen Konzepten starke Funktionalität.
Das konzeptuelle Enten-Prinzip
- Wenn neue Konzepte eingeführt werden, ist es wichtig, Begriffe zu verwenden, die den Nutzern vertraut sind.
- Zum Beispiel ist es sinnvoll, das Auswerten eines neuen Werts eine „Funktion“ zu nennen. So können Nutzer bestehende mentale Modelle nutzen.
Programmierbarkeit
- Nutzer werden kreative Dinge in einer Codebase tun.
- Fast alles an einem Framework sollte „programmierbar“ sein.
- Dinge sollten direkt aus dem Code aufrufbar sein statt nur über eine CLI, und Konfiguration sollte in ein SDK oder eine API überführt werden.
Vorsicht mit Magie, Defaults und Syntax Sugar
- Defaults und magische Funktionen sollten mit Bedacht eingeführt werden.
- Wenn Defaults nicht in mehr als 97 % der Fälle und Magie nicht in mehr als 99 % der Fälle greifen, sollte man sie nicht einführen.
- Coding ist kein Golf. Das Ziel sollte nicht sein, möglichst wenig Code zu schreiben, sondern Lesbarkeit in den Vordergrund zu stellen.
Code für Menschen zu schreiben ist schwierig
- Die meisten Dinge sollten unveränderlich sein.
- „Scaffolding“ (Code-Generierung) sollte vermieden werden.
- Feedback-Loops müssen extrem schnell sein.
- Es sollte einen Entsorgungsprozess geben, damit Nutzer leicht damit umgehen können.
- In Dokumentation und Beispielen sollten automatische Tests für Code-Snippets verwendet werden.
Zusammenfassung von GN⁺
- Dieser Artikel behandelt die Schwierigkeit, Code für Menschen zu schreiben, und mögliche Lösungsansätze.
- Es ist wichtig, nutzerfreundliche Entwickler-Tools zu bauen, und das beginnt beim Onboarding.
- Lernen über Beispiele ist effektiv, und der Schlüssel liegt darin, Fehler in Erfolg zu überführen.
- Bei der Einführung neuer Konzepte sollte man Begriffe verwenden, die den Nutzern vertraut sind, und Programmierbarkeit mitdenken.
- Defaults und magische Funktionen sollten mit Vorsicht eingeführt werden, und Lesbarkeit sollte Priorität haben.
1 Kommentare
Hacker-News-Kommentare
Menschen lernen auf unterschiedliche Weise
Schreiben und Empathie sind wichtig
Nicht alle lernen anhand von Beispielen
Code wird für Menschen geschrieben
Zitat aus Code Complete
Code zu schreiben ist für Menschen da
Meinung zur Weiterentwicklung von IDEs
Werbung für einen Blogpost
Meinung dazu, wie man Programmieren lernt
Die Bedeutung von Beispielen und Kernkonzepten