Es fällt mir sehr schwer, mich auf das zu konzentrieren, was ich mache (programmtechnisch), wenn etwas (Kompilierung, Startzeit usw.) mehr als nur ein paar Sekunden dauert. Anekdotisch scheint es, dass die Schwelle ungefähr 10 Sekunden beträgt (und ich erinnere mich, dass ich über Studien gelesen habe, die dasselbe sagten, obwohl ich es jetzt nicht finden kann). Normalerweise nehme ich also eine Änderung vor und führe das Programm aus, um es zu testen. Das dauert ungefähr 30 Sekunden, also beginne ich etwas anderes zu lesen, und bevor ich es weiß, sind 20 Minuten vergangen, und dann dauert es (wenn ich Glück habe!) Noch mehr als 10 Minuten, um den Kontextwechsel zu bewältigen und wieder in die Programmierung einzusteigen .
Es ist keine Übertreibung zu sagen, dass einige Dinge, die mich Minuten kosten sollten, buchstäblich Stunden in Anspruch nehmen.
Ich bin sehr gespannt, was andere Programmierer tun, um dieser Tendenz entgegenzuwirken (oder ob ich einzigartig bin und sie diese Tendenz nicht haben?). Vorschläge jeglicher Art sind willkommen - von "Setz dich auf deine Hände, nachdem du den Kompilierknopf gedrückt hast" über mentale Tricks bis zu "Wenn es 30 Sekunden dauert, etwas zu starten, um eine Änderung zu testen, stimmt etwas nicht mit deinem Entwicklungsprozess überein ! "
quelle
Antworten:
Ich habe ein kleines Kommandozeilen-Dienstprogramm namens 'alert' geschrieben, das dazu führt, dass der Computer piept / einen Ton wiedergibt / usw. Wenn ich dann einen längeren Befehl wie a ausführen muss, führe ich einen
make
ausmake; alert
. Wo ich kann, muss es auch ein Argument aufnehmen, damit es je nach Argument einen anderen Klang erzeugt. So kann ichmake; alert $?
und ich werde wissen, a) der Build ist fertig, und b) es hat bestanden oder ist fehlgeschlagen. Du musst nicht so schick damit sein; nur einecho -e "\a"
kann genug sein.Wenn Sie wirklich ausgefallen / nervig werden möchten, verwenden Sie ein Text-to-Speech-Paket und rufen Sie ein Dialog-Popup auf.
Die Hauptidee hierbei ist, Ihre Ablenkung zu unterbrechen, sobald die arbeitsbezogene Aufgabe abgeschlossen ist.
quelle
MSG="back to work" && xmessage -buttons ok -default ok -nearmouse "${MSG}" 2> /dev/null
;
anstelle von verwenden&&
. Ihr zweites Beispiel wird nur ausgeführt,show_message
wenn esmake
erfolgreich war, was nicht ganz Ihren Wünschen entspricht. Um es klar auszudrücken: Ich mag das Beispiel, das Sie gegeben haben, ich bin nur wählerisch in Bezug auf die Implementierungsdetails. ;)command; alert
und es gibt eine Desktop-Warnung aus, wenn Sie fertig sind und angeben, welcher Befehl beendet wurde. Sehr nützlich für lange Zusammenstellungen oder Tests.Ich habe das gleiche Problem, und die Lösung für mich bestand darin, die Zeit damit zu verbringen, etwas zu tun, das Sie nicht zum Ansaugen bringt. Für mich bedeutet dies normalerweise, entweder (1) eine Wasserflasche aufzufüllen oder (2) aufzustehen und Ich mache einen 30-sekündigen Spaziergang durch das Büro, um meine Beine zu strecken, die die Bewegung sowieso brauchen. Sie können sich beim Surfen im Internet verirren. Sie verlieren sich selten, wenn Sie in Ihrer eigenen Kabine herumlaufen.
quelle
Tun Sie etwas für Ihre Gesundheit:
Stehen Sie auf, gehen Sie von Ihrem Computer weg und machen Sie einige Hand- und Armstreckenübungen. Dies dauert maximal 2-5 Minuten. Ihr zukünftiges Ich, das nicht an RSI leidet, wird es Ihnen danken.
Lesen Sie auch in Bezug auf die 2-5-minütige Pause die Pomodoro-Technik durch . Dies basiert auf der Idee, häufige kurze Pausen einzulegen, um sich von Ihrer aktuellen Aufgabe zu lösen und die Dinge ein wenig einwirken zu lassen. Es ist eine Pause, die kurz genug ist, um den Gedankengang nicht vollständig zu verlieren, aber lang genug, um Ihrem Gehirn eine Atempause zu gönnen.
quelle
Entwicklung ist ein kreativer Prozess. Sie können nicht ständig produktiv sein, insbesondere wenn in Ihrem Büro viele Ablenkungen auftreten. Deshalb schlägt der Joel-Test ruhige Arbeitsbedingungen vor.
Joel Spolsky erklärt auch , was es bedeutet, "nicht in der Zone zu sein" . Jedes Mal, wenn Sie durch etwas an Ihrer Arbeit gehindert werden, müssen Sie zehn Minuten, oft mehr, aufwenden, um wieder in die Zone zurückzukehren und wieder produktiv zu werden.
Es gibt viele Ablenkungen:
Es hat nichts damit zu tun. Das einzige, was Sie tun können, ist, die Ablenkungen selbst zu entfernen:
Wenn Sie in Ihrem Fall vom Compiler abgelenkt werden, versuchen Sie, die Kompilierungszeit zu verkürzen, indem Sie:
quelle
Ich denke, ich werde derjenige sein, der es sagt, aber du solltest einfach da sitzen und warten, bis es zu Ende ist.
Sie müssen sich neu trainieren, um nicht das Bedürfnis zu verspüren, ständig aktiv zu sein und Dinge zu tun. Dies ist ein sehr nachteiliges Problem, das nicht nur Entwickler, sondern alle Menschen betrifft. Die Gesellschaft ist besessen von dem Bedürfnis nach ständiger Stimulation (visuell, akustisch, mental). Es scheint, dass niemand länger als 30 Sekunden untätig bleiben kann, ohne sein Handy herauszuziehen und eine SMS zu schreiben, im Internet zu surfen, Facebook zu überprüfen usw.
Wenn Sie auf Kompilieren klicken und es eine Minute dauern wird, ist dies eine großartige Gelegenheit, einfach zu sitzen und Ihr Gehirn entspannen zu lassen. Widerstehen Sie dem Drang, etwas Stimulierendes zu tun, und genießen Sie einfach einen Moment der Nichtaktivität.
Mit der Zeit wird es einfacher und Sie werden feststellen, dass Sie eine viel bessere Arbeitserfahrung haben, wenn Sie aufhören zu versuchen, Ihr Gehirn den ganzen Tag über auf 100% zu halten.
quelle
Ich stimme dem zu, was @retracile vorschlägt, aber beachten Sie, dass Sie sich gemäß den Zen-Programmierregeln jeweils nur auf eine Aufgabe konzentrieren sollten. Wenn Sie Anrufe entgegennehmen, im Internet surfen, in sozialen Netzwerken surfen oder sogar Multitasking ausführen, wird dies höchstwahrscheinlich Ihre Produktivität verringern. Nutzen Sie die kurze Wartezeit, um über die bestehende Aufgabe / Lösung nachzudenken und was Sie tun können, um sie zu verbessern.
quelle
Ich habe eine Stange am Türpfosten
Ich kann nur 5 Klimmzüge machen, es dauert also weniger als eine Minute. Oder ich mache eine Tasse Tee.
quelle
Für mich ist es unbarmherzig, einen sauberen Arbeitsbereich zu schaffen, unabhängig davon, wie dieser Arbeitsbereich aussieht. Alles, was nicht Teil meines aktuellen Projekts ist, ist Rauschen im heiligen Signal-Rausch-Verhältnis. Ein wesentlicher Aspekt bei der Aufrechterhaltung des Fokus ist es, das Signal-Rausch-Verhältnis hoch zu halten.
Wenn ich programmiere, bedeutet dies, dass ich Programme schließe, die ich in letzter Zeit nicht verwendet habe, regelmäßig meine Browser-Registerkarten beschneide und meinen Desktop von Elementen frei halte, die für meine aktuellen Projekte nicht unmittelbar relevant sind. Ich benutze die zehn Sekunden Verzögerung, um sozusagen "die Runden zu drehen" - Tabs schließen, Programme schließen, temporäre Dateien löschen und archivieren, was archiviert werden muss, usw.
Sich daran zu gewöhnen, "die Runden zu drehen", hilft auch dabei, Hasenpfade zu verhindern, weil es mich zwingt, alle aktuellen Aufgaben ständig zu bewerten - und daran erinnert zu werden.
Es muss ein geringer Preis gezahlt werden, wenn Sie einen Tab, den Sie heute bereits fünf Mal geöffnet haben, erneut öffnen oder eine Eingabeaufforderung mit erhöhten Berechtigungen zum 15. Mal erneut starten müssen. Die Verwendung von Beschleunigern wie Tastaturkürzeln kann dies jedoch verhindern ein sehr kleiner Preis in der Tat.
quelle
Ich finde, es hilft, die tatsächliche Zeit zu verfolgen, die ich nicht arbeite
Sie können dafür eine beliebige Anzahl von Dingen verwenden. Ich weiß, dass es viele kostenlose Apps gibt, die Sie herunterladen können, um dies für Sie zu tun (ich kann mir momentan keine aus der Luft denken, aber wenn mir jemand welche gibt, werde ich sie zu dieser Antwort hinzufügen), oder Es ist sehr einfach, eigene zu erstellen. Normalerweise verwende ich ein von mir erstelltes Fenster, das ein winziges Fenster in der Ecke meines Bildschirms mit Schaltflächen für
Working
/ istNotWorking
, und klicke immer dann auf das, wenn ich den Fokus wechsle.Eine Schachuhr funktioniert auch
Schon durch das Verfolgen Ihrer Zeit wird Ihnen bewusster, wie viel Zeit Sie für die Arbeit verschwenden sollten, und ich bin produktiver, weil ich mich dazu zwinge, diese überaus interessante Stapelüberlauf-Frage oder diesen Blog zu verlassen Artikel, und machen Sie sich wieder an die Arbeit
quelle
Um meine Aufmerksamkeit aufrecht zu erhalten, benutze ich Kritzeleien. Ich habe immer einen Stift und einen Notizblock hinter meiner Tastatur und kritzele weg. Es ist nicht mehr, als auf einem bedeutungslosen Stück Papier herumzukratzen, aber es hält meine Aufmerksamkeit gerade genug aufrecht und lenkt mich nicht ab, damit ich gleich wieder zu dem zurückkehren kann, an dem ich gearbeitet habe.
Ich habe das mein ganzes Leben lang unbewusst gemacht, aber kürzlich ein Wiki gefunden: http://en.wikipedia.org/wiki/Doodle
quelle
Was auch immer Sie tun , gehen Sie nicht auf eine der StackExchange-Sites. Sie werden dich einsaugen :)
Im Ernst, wenn Sie im Internet surfen, während Sie darauf warten, dass etwas erledigt ist, ist dies nicht gut für die Produktivität (es sei denn, Sie recherchieren etwas im Zusammenhang mit der aktuellen Aufgabe).
Normalerweise erledige ich einige kleinere Aufgaben, die nicht länger als 1-2 Minuten dauern. (etwas säubern, Kommentare schreiben, Notizen).
quelle
In Ihrem Fall stehen Sie auf und gehen ein wenig herum. Wenn es schwierig ist, wieder in die "Zone" zurückzukehren, liegt das wahrscheinlich daran, dass Sie zu weit in der Zone sind. Dinge im Web zu tun ist nur eine andere Zone und eine, in der man leicht den Überblick über die Zeit verlieren kann Gehen Sie spazieren, machen Sie einen Zauberer, am besten auf einer Toilette, oder sprechen Sie mit einem zufälligen Kollegen. Wir machen eine Menge Sachen hinter den Kulissen auf Autopilot. Pausen sind nicht schlecht für das Codieren, sie sind gut, aber die Idee ist, das Zünden auf allen Zylindern für eine Weile anzuhalten und zu sehen, was Ihre Rückbrenner hervorbringen, während der bewusstere Teil Ihres Geistes ihm eine Pause gibt. Gute Entwickler sind keine menschlichen Taschenrechner. Lassen Sie die Teile Ihres Gehirns, die all die intuitiven und mustergleichen Funktionen des Autopiloten ausführen, eine Weile lang ihre Arbeit tun.
Wenn dies nicht nur ein Codierungsproblem ist, sollten Sie ADD in Betracht ziehen.
quelle
Die Vorschläge zum Aufstehen und Herumlaufen usw. sind gut, wenn Ihre Fahrräder lang sind (etwa eine Stunde). Aber wenn die Zykluszeiten kurz werden und ich mich zwischen vim und make alle paar Minuten hin und her bewege, bleibe ich in der Zone, indem ich in der Pipeline bleibe: Während die Build- oder Testsuite ausgeführt wird, gehe ich in der Regel hin und her Überprüfen Sie den Code und beginnen Sie mit der Arbeit an dem nächsten Block, den ich sowieso tun würde, wenn der Build oder die Tests erfolgreich sind.
quelle
Machen Sie zu Beginn eines jeden Tages einen Plan, wie Sie diese "Freizeit" nutzen können. Es könnte beinhalten
oder so ziemlich alles.
Lassen Sie diese sekundäre Aufgabe immer in einem Fenster auf Ihrem Desktop öffnen. Sobald Sie auf die Schaltfläche "Kompilieren" geklickt haben (oder was auch immer Sie länger als 30 Sekunden brauchen), wechseln Sie zur sekundären Aufgabe und nehmen Sie sich genügend Zeit, um tatsächlich vorwärts zu gehen. Dies kann einige Minuten dauern. oder könnte weniger sein.
Behalten Sie im Hinterkopf, während Sie die sekundäre Aufgabe erledigen, dass dies nicht das ist, worauf sich Ihr Gehirn konzentrieren sollte. Denken Sie weiter über die Programmierung nach. Das ist nicht einfach; Sie werden immer noch öfter unter dem Kontextwechsel leiden.
Wenn Sie dies tun, ist Ihre verlorene Zeit keine Zeitverschwendung, auch wenn Sie häufig den Kontext verlieren, und Sie haben am Ende des Tages etwas zu zeigen. Das Wichtigste ist jedoch, zu Beginn des Tages zu planen, was die sekundäre Aufgabe des Tages sein wird.
quelle
Ich nehme an, wir können die Kompilierungszeit verwenden, um den Code zu dokumentieren, den Code zu bereinigen und ihn korrekt auszurichten, damit wir uns nicht von unserer IDE entfernen und trotzdem die Qualität des Codes verbessern.
quelle
Normalerweise versuche ich in der Zwischenzeit nur, nach Fehlern, Tippfehlern oder Möglichkeiten zu suchen, um den Stil des Codes zu verbessern . Das hält mich am Code fest, aber ich lenke mich (immer) nicht von etwas Interessantem ab. Auch das !
quelle
Es ist denkbar, dass Sie ein bisschen ADHS haben. Viele Leute tun es. Bewältigungsmechanismen sind wie in den anderen Antworten angegeben (oder möglicherweise Medikamente).
quelle
Während dieser 10-30 Sekunden gehen und etwas tun:
Tun Sie in dieser Zeit nichts, von dem Sie wissen, dass es lange dauern wird (es sei denn, Sie können es sich leisten, etwas Zeit zu verbringen), wie:
Installieren Sie auch keinen akustischen Alarm, um das Ende der Kompilierung anzuzeigen. Ihre Kollegen werden es zu schätzen wissen.
quelle
Zur allgemeinen Ablenkung vom Internet während der Arbeit empfehle ich das Pomodoro Plugin, wenn Sie Google Chrome verwenden
Ich persönlich denke, dass Sie während Ihrer gesamten Arbeitszeit nicht produktiv sein können! Da Sie kompilieren, bedeutet dies, dass Sie genügend Anstrengungen unternommen haben, um Luft zu holen ... um nicht zu missbrauchen oder den Kontext zu verlassen. Denken Sie weiter über den nächsten Schritt nach, wenn die Kompilierung keine Fehler erzeugt ... oder bereinigen Sie Ihre Arbeit Bereich: Desktop, Tabs, Explorer ...
quelle
Was Sie beschreiben, ist völlig normal.
Bei Usability-Studien wurden Verzögerungen nach Größenordnungen untersucht. Wie lange muss ein Benutzer warten, wenn er auf eine Schaltfläche klickt?
Es gibt viele Ausnahmen, wie zum Beispiel zusammengesetzte Operationen wie das Tippen.
Wenn wir Performance-Arbeiten machten, stellten wir oft die Frage "Wie schnell sollte Operation X sein?" Die Antwort ist, solange der Benutzer eine Verzögerung wahrnehmen kann, schneller wäre besser.
In Ihrem Fall erreichen Sie diese Zehnerschwelle und Ihre Aufmerksamkeit lässt nach. Das Beste, was Sie tun können, ist die Verzögerung zu verringern. Je kürzer die Verzögerung ist, desto höher ist Ihre Produktivität. Stellen Sie sich vor, Sie hätten den Code auf der linken Seite Ihres Bildschirms und die laufende App auf der rechten Seite. Während Sie den Code bearbeiten, ändert sich die App in Echtzeit. Bis Sie dort sind, haben Sie Raum für Verbesserungen.
Siehe auch Jeffs jüngsten Blog-Beitrag (der tonnenweise gute Inhalt, zu dem er führt): http://www.codinghorror.com/blog/2012/03/visualizing-code-to-fail-faster.html
Wenn Sie zu etwas anderem wechseln möchten, wählen Sie etwas aus, das Ihr Gehirn nicht auf die gleiche Weise wie die von Ihnen geleistete Arbeit beschäftigt. Mach deinen Schreibtisch sauber, meditiere, strecke dich, mach Liegestütze, mach Kunst und schaue aus dem Fenster.
quelle
Bei der Ad-hoc-Arbeit in SAS finde ich die folgende Zeile sehr nützlich:
Dies erzeugt ein Popup-Dialogfeld, sobald der gesamte vorhergehende Code ausgeführt wurde. Ich bin sicher, dass es Entsprechungen in anderen Sprachen gibt. Ich hätte dies als Kommentar zu Retraciles Antwort gepostet, aber ich habe nicht genug Ruf.
quelle