Joel Spolsky: Wie man erfahreneren Programmierern Fragen richtig stellt

Faddish und Brainwashing Usenet, Burning Man und Stack Overflow Rules


Bild


Joel Spolsky, April 2018

Unter Entwicklern gibt es ein beliebtes Fahrrad: Wenn Ihr Code nicht funktioniert, müssen Sie eine Gummiente nehmen und ihr - ja, Ente - sagen, wie dieser Code funktionieren soll: Erklären Sie jeder Zeile, was passieren soll. was am Ende herauskam, etc. Die Entwickler, die diesen Life-Hack an sich selbst getestet haben, argumentieren, dass es dem leblosen Objekt bei der detaillierten Diskussion des Problems häufig gelingt, seine Lösung zu finden.

Dies ist einer der Tricks, mit denen Sie das Problem während des Programmiervorgangs selbst lösen können. Eine andere Möglichkeit besteht darin, zu lernen, wie man ein Programm (Debuggen) auf der Basis von „Teilen und Erobern“ debuggt.. Es ist nicht möglich, tausend Codezeilen für einen einzelnen Fehler zu brechen. Sie können den Code jedoch in zwei Teile teilen und sehen, was in der ersten Hälfte und was in der zweiten Hälfte passiert. Tun Sie es fünf bis sechs Mal und Sie werden genau die Linie mit dem Fehler erreichen.

Aufgrund des Vorstehenden ist es interessant, die Checkliste von John Skeet zu lesen, um die perfekte Frage zu schreiben . John fragt: "Haben Sie die Frage sorgfältig gelesen, um ihre Verständlichkeit und Verständlichkeit für eine Person zu schätzen, die die Informationen, die Sie in Ihren Augen haben, nicht gesehen hat?" Im Großen und Ganzen ist dies ein Test mit einer Gummiente. Eine weitere Option: "Wenn Code in der Frage enthalten ist, haben Sie ihn in ein vollständiges, aber kurzes Programm eingegeben?" Die Betonung des Kurzprogramms ist in der Tat ein Test, ob Sie versucht haben, sich zu teilen und zu erobern oder nicht.

Grob gesagt schlägt Johns Checkliste vor, dass die Leute zuerst versuchen, das zu tun, was erfahrene Programmierer bereits versucht haben, und dann andere um Hilfe bitten.

Leider hat nicht jeder von dieser Checkliste gehört. Oder vielleicht hat er es gehört, aber er hat es ignoriert. Die Person hat ein Problem mit dem Code, sie weiß, dass es ein Stapel-Überlauf-Frage- und Antwortsystem gibt, das ihr helfen kann, und sie hat keine Zeit, das Protokoll eines Nerds über das Stellen von Fragen zu lesen.

Oft gibt es Diskussionen darüber, ob der Stapelüberlauf Fragen von Neulingen zur Programmierung zulassen soll.

Als Jeff und ich über das ursprüngliche Design des Systems diskutierten, erzählte ich ihm von einer Gruppe über die Programmiersprache C, die in den 80er Jahren im Usenet-Netzwerk populär war. Es wurde comp.lang.c genannt .

C ist eine einfache und eingeschränkte Programmiersprache. Sie können feststellen, dass der C-Compiler nur 100 KB groß ist. Wenn Sie also eine Diskussion ausschließlich für C erstellen, werden die Gesprächsthemen sehr schnell beendet.

Und noch etwas. In den 90er Jahren war C eine Sprache für Studenten, die gerade erst anfingen, sich mit Programmieren zu beschäftigen. Und dieselben Schüler hatten am häufigsten die primitivsten Probleme mit C.. Und sie liefen sofort mit Fragen in comp.lang.c.

Und die alten Leute langweilten sich dort. Sehr langweilig. Sie haben die Übelkeit von Schülern satt, die jeden September in die Gruppe eintreten und fragen, warum sie eine Reihe von Zeichen aus einer Funktion usw. nicht zurückgeben können. Jeder. September.

Diese Oldtimer erfanden auch das Konzept der FAQ (Frequently Asked Questions). So schienen sie zu sagen: "Um Gottes willen, hör auf zu fragen, was das Usenet bereits hundertmal beantwortet hat", das heißt, die Leute der alten Schule wollten nur die wunderbarsten und esoterischsten Fragen beantworten, die 99% der normalen C-Programmierer im Allgemeinen haben wurden nicht benötigt. Die Nachrichtengruppe verblasste, weil sie tatsächlich nur einer kleinen Gruppe von Menschen diente, die seit etwa einem Jahrzehnt herumhingen.

Darüber haben Jeff und ich gesprochen. Was sollen wir mit Fragen von Anfängern machen?
Am Ende wurde entschieden, dass Neuankömmlinge sein sollten. Stack Overflow hat nicht das Konzept von "zu einfachen" Fragen ... Trotzdem ist es am besten, zuerst die Antwort selbst zu finden, bevor Sie sich an andere wenden, um Hilfe zu erhalten.

Wir haben verstanden, dass es für einige "fortgeschrittene" Programmierer langweilig sein könnte, dieselben einfachen Fragen zu lesen, und sie werden uns nicht mehr kontaktieren. Es ist in Ordnung - Stack Overflow verpflichtet niemanden, ein Leben lang dort zu sitzen. Sind Sie es leid, Fragen von Neulingen über die Tatsache zu lesen, dass sie keine lokalen Anordnungen von Charakteren zurückgeben („es funktioniert für mich!“), Und möchten Sie lieber den Rest Ihres Lebens damit verbringen, Musikalben zu sortieren? Wie du willst, dein Recht.

Die Tatsache, dass Sie sich gerade der Programmierung anschließen, bedeutet nicht, dass Ihre Frage keinen Platz im Stapelüberlauf hat. Ich habe sogar speziell die Frage gestellt:Aber wie bewegt man die Schildkröte in LOGO ? “Um zu zeigen, dass Website-Designer sich über absolute Anfänger zu Hause freuen.

Aber wie immer hat diese Frage nach dem Gesetz der unbeabsichtigten Folgen fast einen Skandal ausgelöst - und das überhaupt nicht wegen ihrer Einfachheit. Das Problem ist, dass ich diese Angelegenheit in böser Absicht angegangen bin. Jeff Atwood sagte diesbezüglich gut : „Eine einfache Frage ist nicht schlecht. Es ist schlecht, wenn keine Mühe besteht, eine Antwort zu finden. " ( Ah, na ja, das ).

Für Anfänger erscheint die Anzahl der Punkte, die vor dem Stellen einer Frage ausgefüllt werden müssen, unnötig und manchmal einfach seltsam. Es ist wie ein Burning Man Festival. Denken Sie, dass Sie irgendwo in der Wüste zu einer Brandparty gehen, und bei Ihrer Ankunft schreien sie Ihnen etwa 10 Prinzipien ins Gesicht, „Radikale Selbstdarstellung“ und in der gleichen Weise müssen Sie daher nach dem Abwasch jeden Tropfen Wasser aus einem trockenen See sammeln und mit nach Hause nehmen - um ihn gegebenenfalls zu übergeben. Jede Community hat ihre eigenen Regeln, und auf den ersten Blick scheinen sie bizarr und lustig zu sein, oder wenn Sie nur versuchen, Code zum Laufen zu bringen, sind sie seltsam und abstrus.

Viele der Burning Man-Regeln, die das Festival so erfolgreich machen, wirken sehr abstrakt, aber sie machen Sinn. Das US-amerikanische Land Administration Bureau, das ein Wüstenfest erlaubt, verlangt, dass kein kontaminiertes Wasser auf den Boden gegossen wird, da Lehmboden nicht gut absorbiert, was zu mikrobiellem Wachstum und Krankheiten führen kann. Aber warum sollte man das alles erklären, wenn man es nur kann? zu sagen, dass wenn Besucher das Wasser nicht wegnehmen, dann das Festival nicht mehr stattfinden wird?

Gleiches gilt für den Stapelüberlauf. Wir erlauben nicht, dass zu abstrakte Fragen veröffentlicht werden („Wie erstelle ich ein Programm?“). Unsere allgemeine Regel lautet: Wenn die Antwort auf Ihre Frage die Größe eines ganzen Buches hat, möchten Sie zu viel. Es ist so, als würdest du schreiben: "Meine Niere scheint zu schmerzen. Wie schneide ich es? " Eine solche Frage klingt für Chirurgen, die seit zehn Jahren lernen, dies zu tun, unangemessen und sogar beleidigend.

Was mich stört, ist, dass wir beim Versuch, eine neue Generation von Entwicklern auszubilden, die sich auf Vielfalt und Inklusivität verlassen, auch Hindernisse für diejenigen bilden, die das Programmieren lernen möchten. In vielerlei Hinsicht sind die spezifischen Regeln des Stapelüberlaufs nur ein Hindernis. Aber noch schlimmer ist die Vernachlässigung und Unhöflichkeit von Neulingen in den Foren.

Ich bin sehr besorgt darüber. Als Entwickler haben Sie eine beispiellose Gelegenheit, zukünftige Szenarien zu erstellen . Und die Einschränkungen, die Stack Overflow jungen Programmierern auferlegt, schaden nicht nur ihnen, sondern auch dem Stack Overflow-System selbst und schrecken potenzielle Mitglieder der Community ab. Die Programmierung ist nicht ohne Probleme; Unser Ziel ist es, es einfacher zu machen.

Nächstes Jahr wollen wir hart an diesem Bereich arbeiten. Wir können andere Menschen nicht verändern, sie freundlicher machen. Ich denke jedoch, dass wir einige Aspekte der Stack Overflow-Benutzeroberfläche verbessern können, die die Menschen zu mehr Kultur motivieren. Zum Beispiel können wir die Eingabeaufforderungen auf der Seite „Frage stellen“ optimieren oder an reaktiver Moderation arbeiten, damit Community-Mitglieder selbst unhöfliche Kommentare markieren und sich darüber beschweren können, was derzeit nicht der Fall ist.

Wir arbeiten auch an einer neuen Funktion, mit der Sie Ihre Frage an eine kleine Gruppe von Personen aus Ihrem eigenen Team senden können, um eine bestimmte freundliche Atmosphäre in einer riesigen Metropole zu schaffen, nämlich Stack Overflow.

Trotz der Tatsache, dass wir uns bemühen, den Stapelüberlauf komfortabler zu gestalten, war es unser Hauptziel, die beste Ressource der Welt für Programmentwickler zu schaffen.

Der durchschnittliche statische Programmierer ruft uns 340 Mal an. Das ist unsere Stärke. Es gibt andere Informationsquellen zum Schreiben von Programmen, aber es gibt nur eine Website, der Entwickler so sehr vertrauen und die sie pflegen müssen - es ist wie die Library of Congress für Programmierer.



Bild
Erfahren Sie in SkillFactory-Onlinekursen, wie Sie einen begehrten Beruf von Grund auf neu erlernen oder Ihre Fähigkeiten und Ihr Gehalt verbessern können:



Weiterlesen



All Articles