Ich weiß nicht einmal, ob diese Frage Sinn macht ... aber lassen Sie mich das beleuchten ...
Stellen Sie sich vor ... Sie sind völlig in Programmiergedanken / -ideen / -konzepten versunken , Ihr Gehirn ist im aktivsten Zustand, wenn es darum geht , eine Lösung für ein Problem zu finden, oder wie Joel Spolsky es ausdrückt - Sie sind tief in Ihrer "Zone" "- AND, plötzlich bricht jemand oder ein Ereignis Ihre Verstrickung - etwas, das Sie einfach nicht vermeiden können, etwas, um das Sie sich kümmern müssen. ... die Vorstellungskraft ist voll. Zurück zur Realität
Etwas, das Ihre Konzentration brechen kann, kann sein ...
- Sie werden zu einer dringenden Besprechung gerufen
- Ihr Code hat den täglichen Build unterbrochen und Ihr Kollege ruft Sie an
- Sie haben sich nur an etwas erinnert, was Sie tun mussten, aber vergessen, es zu tun
- Ihr Teamkollege hat aufregende Neuigkeiten zu berichten und besteht darauf, dass Sie zuhören
- Ihre Freundin (oder Ihr Freund) ist gerade herübergekommen
Nehmen wir nun an, Sie haben nur 5-10 Minuten Zeit, um das zu verlassen, worauf Sie vertrauen, und die Unterbrechung zu unterhalten.
Meine Frage ist - wie können Sie schnell den Geisteszustand "retten", in dem Sie sich befanden, als die Umleitung kam? Schreiben Sie es in "irgendeiner Form" auf ein Blatt Papier oder einen Computer oder "erinnern" Sie sich nur irgendwie daran? Wie können Sie diese genauen Gedanken innerhalb von 5-10 Minuten retten, damit Sie später, wenn Sie zurückkommen, direkt von dem "Punkt" aufholen können, den Sie verlassen haben.
Es passiert mir oft so, dass ich mich einfach nicht an die genauen Gedanken erinnern kann, die ich vor dem Schlag gedacht habe - und ich habe das Gefühl, dass ich eine gute Idee oder eine Lösung für ein Problem verloren habe. Ich versuche, rückwirkend zu denken, um zu dem gleichen kognitiven Zustand zu gelangen, der mich über eine Idee aufgeregt hat - aber ich bin frustriert, nicht in der Lage zu sein, dorthin zu gelangen.
Passiert dir so etwas? Wie "erholen" Sie sich davon?
Mein Hauptanliegen ist nicht Code - es sind diese "abstrakten Ideen", die noch nicht in Code umgewandelt wurden, die ich irgendwie "speichern" muss.
- update -
Nach diesen vielen Jahren kann ich zuversichtlich sagen, dass es KEINE Möglichkeit gibt, dies zu tun. Kein einziges Mal, wenn Sie Ihren kognitiven Zustand auf ein Blatt Papier kritzeln, können Sie ihn so wiederherstellen, wie er war. Unser Gehirn ist viel komplexer als das Kritzeln von Schnipsel, wenn es um die Informationen geht, die es zu jedem Zeitpunkt aktiv hält.
Der beste Weg ist, die Ablenkung zu vermeiden, egal wie wichtig sie ist, es sei denn, es ist eine Situation auf Leben und Tod. Nichts ist wichtiger, als in der Zone zu sein und sie zu beenden.
Wenn Ihr Arbeitsplatz so naiv ist, dass Sie das "Sein in der Zone" nicht schätzen, sollten Sie sich nach einem neuen Arbeitsplatz umsehen. YMMV obwohl. Und bei den persönlichen Beziehungen sind es soziale Fähigkeiten und eine Prise Artikulativität, die eine Welt des Guten bewirken können.
quelle
Antworten:
Bevor ich meinen PC verlasse, schreibe ich auf ein Post-It oder ein Blatt Papier. Ich mache das normalerweise sowieso als Teil einer Fehlerbehebung oder Analyse. Es ist sehr hilfreich, wenn ein Bug später (wieder) geöffnet wird. Sie können immer noch Ihre Gedankengänge von vor einem Monat sehen und schneller herausfinden, was Sie tun müssen.
Außerdem: Setzen Sie einige Lesezeichen in Ihren Code. Wenn Sie zurückkommen, können Sie überprüfen, was Sie getan haben, indem Sie die von Ihnen gesetzten Lesezeichen anzeigen.
quelle
Ich hole die lokale Notizblockanwendung heraus und schreibe meinen Plan für die kommenden Dinge auf.
Ich habe festgestellt, dass dies am meisten hilft. In 100% der Fälle kann ich mich nicht erinnern, was ich vorhatte, als ich zurückkam. Ideen sind leicht zu finden, aber erinnern Sie sich an die tatsächlichen Schritte, die Sie ausführen wollten?
Ich benutze so etwas wie;
Ich speichere es auf dem Desktop und lasse die Datei geöffnet.
Ich fand, dass dies für mich diese Vorteile hat;
quelle
Neben dem ausgezeichneten Vorschlag, Dinge aufzuschreiben, ist dies eine Fähigkeit, die mit ...
Trainieren.
Früher war ich das schlechteste Multitasking-Team der Welt. Die Leute hatten Angst, mich zu unterbrechen, weil mir das so unangenehm war. Dann wurde mir klar, dass es nicht wie eine CPU mit mehreren parallelen Kernen war, sondern wie ein Interrupt mit Task-Switches. Also fing ich an, mich zu trainieren, um mich zu entspannen und es als notwendigen Teil des Lebens zu akzeptieren.
Seit einem Jahrzehnt verwende ich ein Pomodoro-ähnliches System, bei dem ich einfach eine Pause mache, wenn der Timer abläuft. Es ist erstaunlich einfach, nach ein paar Minuten Pause in einer entspannten Umgebung "in die Zone" zurückzukehren - ich freue mich darauf! Und für längere Unterbrechungen sind diese schriftlichen Notizen von unschätzbarem Wert. Ich kann fast den gesamten mentalen "CPU-Status" jetzt ziemlich einfach wiederherstellen, es sei denn, es vergeht mehr als ein Tag.
Außerdem bin ich nicht mehr so mürrisch, wenn Leute es tun, weil ich es jetzt gewohnt bin, mit Unterbrechungen umzugehen. Ich habe es auch viel besser gemacht, einfach zu sagen: "Warte einen Moment, während ich mir eine Notiz mache." Es ist erstaunlich, wie viel angenehmer meine sozialen Interaktionen sind!
Das Gehirn ist wie ein mentaler Muskel, und bei Dingen wie Multitasking wird es besser, wenn Sie es zunehmend schwieriger trainieren.
quelle
Das passiert die ganze Zeit! Wenn ich gerade Code schreibe, kann ich 90% der Leute anweisen, ein paar Sekunden zu warten - sie wissen, dass es in ihrem besten Interesse ist, mich nicht zu stören. Während dieser paar Sekunden zerdrücke ich absichtlich einige Tasten in der Zeile des Codes, an dem ich gearbeitet habe, und markiere die obige Zeile mit XXX (dies wird in vim gut hervorgehoben).
Der Code wird püriert, sodass das Programm nicht kompiliert werden kann und ich gezwungen bin, mir diese Zeile anzuschauen. Für die meisten meiner Sprachen, in denen ich schreibe, reicht dies aus, um zu sehen, wo ich aufgehört habe, und mein Gedächtnis schnell in den produktiven Zustand zu versetzen.
Ich habe auch gelernt, dass es heutzutage ein Luxus ist, in "der Zone" zu sein (durch den Umgang mit ständigen Unterbrechungen). Zwar ist es in Bezug auf die Produktivität definitiv nicht ideal, aber es zwingt Sie, das Beste aus dem herauszuholen, was Sie haben.
quelle
Ich habe herausgefunden, dass ich immer, wenn ich mit git arbeite, weniger Probleme habe, die Arbeit hinter mir zu lassen (und vor allem weiter daran zu arbeiten). Das liegt nicht an git selbst, sondern an den Methoden, die ich beim Erlernen von git-Workflows angewendet habe. Ich spreche von Themenzweigen .
Wenn Sie alle wichtigen Aufgaben in Ihrer Entwicklung in einem speziellen Themenbereich erledigen, ist es viel einfacher, zu Ihrer Arbeit zurückzukehren. Hier ist der Grund.
Wenn Sie Disziplin haben, erleichtert diese Arbeitsweise das Verlassen Ihrer Arbeit und das spätere Aufnehmen.
Wenn ich an etwas arbeite, finde ich immer etwas, das mit meinem aktuellen Thema zu tun hat. Auch hier zahlt sich eine Disziplin aus. Beenden Sie entweder Ihre aktuelle Arbeit. Wenn dies nicht möglich ist (ich habe häufig dieses 'Problem' - 'Ich muss es jetzt beheben' usw.), erstellen Sie einfach einen neuen Zweig für das Fix (oder Refactoring, Verbesserung, was auch immer). Selbst wenn Ihr aktueller Arbeitsbereich noch nicht bereit ist, sich zu verpflichten, erledigen
git stash
Sie die kleine Arbeit in einem eigenen Thema undpop
kehren Sie aus dem Versteck zu Ihrer eigentlichen Arbeit zurück.quelle
Um den Status der Aufgabe zu erhalten und zu einem anderen zu wechseln, liebe ich es, den Kontext von Mylyn beizubehalten. Mylyn speichert und stellt später den genauen Status Ihrer IDE wieder her (offene Perspektive, geöffnete Dateien, Speicherort in diesen usw.).
Für Dinge, die ich tat, gab ich TODO-Kommentare ein. Eclipse zeigt diese automatisch als Aufgabenliste an.
quelle
Ich entwickle in einer VM. Und wenn ich unterbrochen werde (Tagesende, Mittagessen, Besprechungen usw.) und meine Gedanken nicht verlieren möchte, schreibe ich einfach einen Kommentar in den Code, so etwas wie:
Manchmal gehen diese Kommentare für ein paar Zeilen weiter, wenn es kompliziert ist. Aber ich schreibe einfach den Kommentar in den Code, in die IDE, lasse die IDE geöffnet und benutze den Befehl "Suspend and Exit" auf der VM. Wenn ich es dann wieder hochziehe, ist mein Kommentar direkt vor mir, was mir hilft, schnell zu dem zurückzukehren, woran ich vorher gedacht habe.
quelle
Ich habe mich an die Verwendung von Mind-Mapping-Software (derzeit FreeMind) gewöhnt. Ich benutze es für alles, aber es enthält eine To-Do-Liste für jedes Projekt, an dem ich arbeite. Während ich mir eine Lösung für ein bestimmtes Problem in der Liste überlege, schreibe ich es in meine Mind Map. Dort speichere ich meine Lösung, auch während ich daran arbeite, anstatt zu versuchen, alles in meinem Kopf zu behalten.
Damit möchte ich mich auf die Details der Code-Implementierung konzentrieren, ohne das Gesamtbild zu verlieren. Das bedeutet auch, dass Unterbrechungen nur minimale Auswirkungen auf meine Arbeit haben, da ich die Schritte, denen ich folgen möchte, sowieso irgendwo aufzeichnet.
Die von Ihnen verwendete spezifische Software oder Verfolgungsmethode ist irrelevant. Diese Idee wäre genauso nützlich in Notepad oder mit einem Stück Papier. Das relevante Konzept ist, dass Sie Ihre Ideen so aufzeichnen, wie Sie sie haben, damit sie immer verfügbar sind.
quelle
Wenn Sie sich in einer Umgebung mit vielen Unterbrechungen befinden, halte ich ein stündliches Tagebuch (notieren Sie sich stündlich ein paar Aufzählungszeichen) für sehr nützlich. Ich benutze eine Kombination aus TiddlyWiki und paper (Tiddly zum Dokumentieren / Durchsuchen, paper zum schnellen Nachdenken).
Ich habe damit angefangen, als ich von zu Hause aus mit einem Kleinkind gearbeitet habe, und das hat meine Produktivität auf ganzer Linie gesteigert. Es hilft bei dem unmittelbaren Problem, meine Gedanken wiederzuentdecken, und hat den netten Nebeneffekt, mein Selbstbewusstsein zu steigern (ich habe letzte Woche eine Stunde damit verbracht, eine 10-Zeilen-Bit-Banging-Methode zu modifizieren, um sie besser lesbar zu machen. Wahrscheinlich nicht die beste Verwendung meiner Zeit).
quelle
Ersteres ist eine Versicherung gegen Unterbrechungen, Zurückverfolgen und spätere Wiederholungen, während Letzteres unerlässlich ist, um dort fortzufahren, wo Sie aufgehört haben
quelle
Ich habe einen laufenden Kommentar in einem Notizblock neben mir. Ich habe versucht, dies in einer Notizblockdatei zu tun, aber aus irgendeinem Grund funktioniert es nicht so effektiv wie das Aufschreiben. Wenn Sie in Bezug auf das, was Sie als Ihre Arbeit notieren, vernünftig organisiert sind, haben Sie effektiv einen Kernspeicher für Ihre abstrakten Gedanken, auf den Sie zurückkommen können.
quelle
Was mir sehr geholfen hat (auch für "OK, jetzt gehe ich nach Hause und komme morgen wieder zur Arbeit"), war es, ständig einige Gedanken in meinem Kopf festzuhalten und dann Dinge von dieser Liste zu streichen.
Aber es hängt definitiv davon ab, (i) diese Liste aktiv zu verarbeiten - zumindest zu löschen, anstatt Hunderte von halbfertigen "Aufgabenlisten" zu erstellen, zu denen Sie zurückkehren möchten, und (ii) genug zu üben, um die Erfahrung zu haben um zu wissen, was Sie schreiben müssen und was nicht - welche Aufgaben über die Schaltfläche "Symbolleiste hinzufügen" verfügen und welche Details des Designs Sie das nächste Mal auswendig können und ohne welche Aufgaben Sie die Hälfte der Planung bereits ausgeführt haben es zu realisieren und Sie müssen sich das notieren.
Vermeiden Sie außerdem unnötige Ablenkungen. Es ist immer gut, über eine Ablenkung hinweg weitermachen zu können, und es wird immer einige geben, aber ermutigen Sie nicht zu viele.
quelle
Ich habe tatsächlich mehrere Fehler verursacht, weil ich in einer früheren Firma in den Mittagspausen hastig und abrupt unterbrochen wurde. Am Ende fragte ich nach ein paar weiteren Minuten oder ging einfach ohne mich, nur um mich zum Beitritt zu zwingen, und so ließ ich den Code halb geschrieben, den Gedanken halb vollständig, nur um eine Stunde später zum Code zurückzukehren und zu verlieren verfolgen und Dinge falsch machen.
Am Ende fing ich an, das zu kompensieren, indem ich mir Notizen machte und Aufgabenlisten aufschrieb und sozusagen einen "flacheren mentalen Stapel" aufrechterhielt. TDD hilft auch, da die Tests ausdrücken, was Sie mit einem Design tun möchten und sicherstellen, dass Sie es tun.
Ich habe auch eine Sprache entwickelt, die irgendwo zwischen dem liegt, was mir intuitiv wie Codierung erscheint, und der menschlichen Sprache. Es besteht aus Klängen wie " Nyargh! Bloobly-bloop! " Und ich mache diese Klänge manchmal, wenn Leute versuchen, mit mir zu sprechen, während ich beschäftigt bin. Obwohl sie diese Geräusche nicht verstehen, zeigt dies, dass ich im Moment nicht in der Lage bin, richtig mit Menschen zu kommunizieren. An diesem Punkt entfernen sie sich und ermöglichen mir, weiter zu denken und Code zu schreiben.
Das heißt, meine Frau hat sich an die Idee gewöhnt, dass sie mit mir sprechen könnte und ich nicke und so weiter und habe kein einziges Wort, das sie sagte, mental verarbeitet. Es ist, als würde ich sehen, wie sich ihr Mund bewegt und Geräusche herauskommen, aber es wird nicht richtig in Maschinenanweisungen übersetzt. Sie hat gelernt, meine Reaktionen zu bemerken, wenn das passiert, während ich in Gedanken versunken bin.
Manchmal bearbeite ich auch das, was sie gesagt hat, zur Hälfte und schiebe es einfach in die gleichzeitige Warteschlange, als würde sie mir eine Frage stellen, zu welchem Zeitpunkt ich es nicht vollständig verarbeiten kann, bis ich alles aus meiner mentalen Warteschlange entfernt habe (was sehr ineffizient ist) Verriegelungsmechanismen für die Fadensicherheit). Also hat sie sich daran gewöhnt, mir eine Frage mit nur einem Nicken und keiner Antwort oder einer unsinnigen Antwort wie "Ja" oder "Blödsinn" zu "Was willst du heute Abend tun?" Zu stellen. Nur für mich, um es zehn Minuten später zu verarbeiten und die Frage zu beantworten, als hätte ich es erst vor einer Sekunde gehört.
Ich weiß auch nichts über euch, aber ich bin ziemlich zerstreut, wenn ich mich in Programmiergedanken verliere. Am Ende habe ich ewig nach meinen Socken gesucht und vergessen, wo ich sie hingelegt habe. Irgendwie habe ich sie in den Kühlschrank gestellt. Ich glaube, ich habe versucht, ein Getränk oder etwas mit meinen Socken in der Hand zu nehmen, und irgendwie habe ich die Socken in den Kühlschrank gestellt und vergessen, das Getränk zu nehmen. Zu einer anderen Zeit ging ich zu einer Müllkippe, nachdem ich mein Auto mit meinen Autoschlüsseln in der Hand geparkt hatte und versuchte, eine Verpackung, die ich hatte, in den Müll zu werfen. Stattdessen warf ich meine Autoschlüssel in die Müllkippe und bemerkte es erst, als ich versuchte, das Auto mit der Plastikhülle aufzuschließen. Dann musste ich den Müll nach meinen Schlüsseln durchsuchen. Wie auch immer, meine Frau ist an solche Dinge gewöhnt, weil meine Sachen an seltsamen Orten auftauchen.
Abgesehen von diesem Teil sind Dating und Romantik beim Programmieren schwierig. Ich hatte viele vergangene Beziehungen, in denen das Dating wunderbar verlief, bis wir anfingen, zusammen zu leben, und sie sahen, dass diese Seite von mir die ganze Zeit in Gedanken versunken war, während sie den ganzen Tag am Computer saßen und nachdenklich herumliefen , während sie mit " Bloobly-Bloop! " Antworteten und Interesse verloren. Es ist schwer, jemanden mit der Geduld dafür zu finden. Ich hatte wirklich Glück mit meiner Frau, die es erträgt.
quelle