Obwohl ich nicht alle Fallstricke auflisten kann, ist das Formulieren einer Frage und das Aufteilen in ein eigenständiges Problem oftmals so aufwändig, dass Sie, wenn Sie es ausreichend vorbereitet haben, Ihre eigene Frage in mehr Schritten beantwortet haben Zeit, als es sonst gedauert hätte.
Ich erlebe dasselbe für> 75% der Fragen, die ich poste.
Dies ist jedoch kein Argument dafür, dies nicht zu tun. Dies ist effektiv das Debuggen von Gummienten. Sie finden Antworten auf Fragen, die Ihrer Meinung nach als Antwort auf Ihre Frage auftauchen könnten. was bedeutet, dass Sie über das Problem aus der Sicht verschiedener Personen nachdenken; was bedeutet, dass Sie aus allen möglichen Richtungen über das Problem nachdenken; Das ist der beste Weg, um den Fehler zu finden.
Bestenfalls haben Sie schlüssig bewiesen, dass Sie sich die Antwort hier nicht vorstellen können. Im schlimmsten Fall beantworten Sie am Ende Ihre eigene Frage. Beachten Sie die Anführungszeichen, denn das ist überhaupt nicht schlecht. Es war vielleicht ein wenig ineffizient, aber es ist besser, das Problem langsam zu lösen, als sich schnell zu entscheiden, das Problem nicht anzugehen . Sie werden das Problem irgendwann schneller lösen können.
Ein typisches Beispiel:
Als junger Entwickler habe ich mich oft mit der ASP.Net-Fehlerseite befasst . Ich musste die Nachricht googeln, um herauszufinden, was los ist. Es kann mehrere Stunden dauern, bis ich die richtige Lösung gefunden habe. Ich habe im Grunde jeden Fehler in dem Buch gemacht und musste mich anschließend mit den Konsequenzen aus der Fehlersuche auseinandersetzen.
Wenn jetzt ein Fehler auftritt, kenne ich bereits die "üblichen Verdächtigen" dafür, was das Problem verursachen könnte. Meine mentale Liste der "üblichen Verdächtigen" basiert effektiv auf den Problemen, mit denen ich während meiner Karriere am meisten zu tun hatte. Ohne die zeitineffiziente Beinarbeit von Stunden des Googelns hätte ich diese mentale Liste nie erstellt . Aber jetzt, wo ich diese mentale Liste habe, bin ich bei der Fehlersuche erheblich schneller.
Auch wenn ich es nicht genau sagen kann, kann die Reaktionsfähigkeit der freien Konversation nicht mit jeder Form von Internetdiskussion in Textform verglichen werden, die mir einfällt.
Ich bin hier etwas anderer Meinung. Sie haben Recht, dass die Internetkommunikation weniger reaktionsfreudig ist, aber Sie haben (meiner Meinung nach) Unrecht, dass dies schlecht für Sie ist.
Als Einzelentwickler sind Sie auf das Debuggen von Gummiente angewiesen. Der Schlüssel zu RDD besteht darin, dass Sie Fragen antizipieren , die die Gummiente für Sie haben könnte. Man kann sich offensichtlich nicht darauf verlassen, was die Gummiente tatsächlich sagt.
Wenn Sie sich mit langsamen Messagingsystemen befassen (Posten auf StackOverflow oder Schreiben von Briefen), sind Sie von Natur aus motiviert, sicherzustellen, dass Sie es beim ersten Mal richtig machen. Weil das Korrigieren eines Fehlers ein langsamer und mühsamer Prozess sein wird.
Beachten Sie im Vergleich dazu, dass Sie mit schnellen Messagingsystemen (Konversation, Instant Messaging) sofort etwas korrigieren können. Die Fähigkeit, etwas schnell zu korrigieren, führt dazu, dass die Menschen weniger Anreize haben, um sicherzustellen, dass es korrekt ist.
Vier Beispiele dafür:
- Wenn ich als Entwickler meine persönliche Analyse- / Aufgabenliste erstelle, verwende ich immer noch Stift und Papier. Mir ist aufgefallen, dass ich Annahmen und Unwahrheiten beschönige, wenn ich meine Notizen schreibe, weil ich denke, dass "ich das später leicht beheben kann". Wenn Sie jedoch etwas korrigieren müssen, das Sie auf Papier geschrieben haben, ist dies ärgerlich. Sie müssen die Dinge durchstreichen und zwischen den Zeilen schreiben, und das Dokument sieht so viel schlimmer aus, wenn es Kritzeleien enthält. Wenn ich auf Papier schreibe , überprüfe ich mich anhand von Fakten, bevor ich mich dazu entscheide, es zu schreiben. Dies fängt viele Missverständnisse früh auf, bevor ich überhaupt Code schreibe, der Fehler produzieren würde.
- Meine Großmutter war Sekretärin (Alter der Schreibmaschine). Um einen Tippfehler in einem formellen Dokument zu machen, musste die gesamte Seite erneut eingegeben werden. Meine Tante ist eine Sekretärin (Alter der Textverarbeitung). Sie kann sich auf eine automatische Rechtschreibprüfung verlassen und Fehler können einfach und mit minimalem Aufwand behoben werden. Es überrascht nicht, dass meine Großmutter im Vergleich zu meiner Tante erheblich weniger Tipp- und Rechtschreibfehler macht.
- Früher wurden Videospiele auf Kassetten gedruckt. Das Beheben eines Fehlers nach der Veröffentlichung war nahezu unmöglich. Sie müssen alle Kassetten erneut drucken, an alle Anbieter verteilen und hoffen, dass die Anbieter sich irgendwie mit den Kunden in Verbindung setzen, die das Spiel bereits gekauft haben. Es würde Tonnen von Geld kosten (doppelte physische Produktionskosten) und würde immer noch einige Kunden nicht erreichen. Im Zeitalter von Internet-Patches haben Spieleentwickler gezeigt, dass sie wesentlich weniger in das Testen ihrer Spiele investieren, um Fehler am Veröffentlichungstag zu vermeiden, da es so viel einfacher ist, jedem Kunden direkt einen Fix zukommen zu lassen. Die Auswirkung eines Fehlers wird auf einen Punkt reduziert, an dem es besser ist, eine Handvoll Probleme nachträglich zu beheben, als alles Mögliche testen zu müssen Fehler, die auftreten könnten.
- Früher lebte ich in einer Wohnung im dritten Stock, ohne Aufzug, und musste oft ein oder zwei Straßen von meinem Gebäude entfernt parken. Ich habe fast nie vergessen, etwas aus meinem Auto mitzunehmen. Jetzt wohne ich in einem Haus mit meinem Auto direkt neben mir in der Einfahrt. Ich vergesse die ganze Zeit Dinge aus meinem Auto zu nehmen .
Der Grundgedanke dabei ist, dass ein schwieriges Austauschsystem die Menschen dazu anregt, korrekte und faktengeprüfte Austausche durchzuführen . Die Schwere der Bestrafung (= schwieriger Korrekturprozess) lehrt Sie, keine Fehler zu machen.
Durch das Ausblenden von Details, um eine genau definierte Frage zu stellen, wird die Möglichkeit ausgeschlossen, dass jemand Probleme entdeckt, an die Sie noch nicht gedacht haben.
Wenn Sie ein MCVE erstellen , sollten Sie es nicht einfach erstellen und in der Frage veröffentlichen. Sie sollten zunächst für machen es selbst , so dass Sie das Problem isolieren kann. Und dann, wenn Sie der Meinung sind, dass das Problem nicht mehr behoben werden kann und Sie die Ursache immer noch nicht erkennen können; Dann haben Sie eine gültige Frage für StackOverflow.
Ein typisches Beispiel:
Ich habe immer ein zweites Visual Studio mit einer einfachen Konsolen-App namens Sandbox. Immer wenn ich auf ein technisches Problem stoße, kopiere ich den fehlerhaften Code in die Sandbox und spiele damit herum.
- Was passiert, wenn ich diese Einstellung ändere?
- Kann ich das Problem reproduzieren, wenn ich den Code verkürze?
- Welche Einstellungen machen es möglich / unmöglich, das Problem zu reproduzieren?
In 90% der Fälle stelle ich die Ursache des Problems fest, da mir die Sandbox dabei geholfen hat, den fehlerhaften Code zu betrachten, ohne vom umgebenden Kontext abgelenkt zu werden (oder beispielsweise Unsicherheiten in Bezug auf Werte, die für verschiedene Teile des Codes vorliegen).
In den anderen 10% der Fälle verbleibt mir der minimale Code zur Reproduktion des Problems, der als perfektes Beispielsnippet zum Posten auf StackOverflow dient.
Last but not least möchte ich aus offensichtlichen Gründen nicht mein gesamtes Projekt veröffentlichen, damit die Welt es für den Rest der Ewigkeit betrachtet.
Wenn Sie Ihr MCVE bereits haben, sollten Sie nicht viel an persönlichen (oder Unternehmens-) Informationen enthalten. Wenn Sie dies tun, ist es einfach, die Dinge in ein grundlegenderes Beispiel für foo / bar / baz umzubenennen, da der Code minimal ist.