Unterbrechung im Gedankenfluss
-
Ich habe ein echtes Problem mit meiner Produktivität in unruhiger Umgebung.
Mein Problem ist nicht, dass ich mich nicht auf einen Task konzentrieren kann. Ich kann mich enorm fokussieren auf das Problem, das es gerade zu lösen gilt. Aber mein Problem ist, dass es sehr lange dauert, bis dieser Zustand des Fokus erreicht ist, und dass er sofort weg ist, wenn mich jemand unterbricht.Für mich ist Programmieren eine Tätigkeit, die erfordert eine große Menge an Details im Ultrakurzzeitgedächtnis zu halten.
Wenn ich an einer Funktion arbeite, habe ich die Namen und Typen aller Parameter, aller lokalen Variablen im Kopf, ich habe in etwas vor Augen, wie mein Stack gerade aussieht, und ich weiß welche Exception noch geflogen kommen könnte oder durchgereicht werden müsste.Noch schlimmer ist es bei refactorings, am besten dateiübergreifenden, wenn man gerade die Parameterreihenfolge oder den Defaultparameter einer Funktion geändert hat und sich durch die Liste der Caller arbeitet, um alle anzupassen. Der Tool-Support dafür ist auch im Jahre 2012 immernoch beschissen, weil keine IDE das Code-Modell mit allen dynamischen Typen und template-spezialisierungen so versteht, dass sie beim Refactoren wirklich alles erwischen würde.
Jetzt stellt euch vor, ihr seid durch 3/4 aller Aufrufe durch, und dann platzt jemand in den Raum und stellt euch eine Frage. Oder das Telefon klingelt.
Das ist für mich so wie von Kernel- in Usermode switchen zu müssen: Alle register wegspeichern und sämtliche Caches invalidieren... Jedenfalls dauert es erstmal einen Moment, bis ich überhaupt aufnahmefähig bin und kommunizieren/antworten kann. Danach drehe ich mich dann wieder zum Bildschirm, schaue auf meinen Editor und ich weiß NICHTS mehr. Das ist dann als müsste ich alle Register nicht aus dem Hauptspeicher, sondern von einer Diskette neuladen.
Es dauert bei mir etwa eine Stunde konzentriertes Arbeiten, bis mein Gehirn in diesem "ich weiß genau was das Programm gerade tut"-Modus ist. Bis sozusagen alles, was ich mir gerade merken muss, in meinem L1-Cache liegt.
Das heißt, wenn mich während dieser Phase jemand vollpault, sei es nur für eine Minute, verliere ich effektiv eine Stunde Arbeitszeit.
Für einen nicht-Programmierer ist das extrem schwer zu verstehen denn er hat mich "ja nur eine Minute gebraucht".
Eine Mitigation-Taktik dafür wäre allenfalls nachts alleine im Büro arbeiten, wenn einen keiner anquatschen kann. Ist aber aus naheliegenden sozio-kulturellen Gründen keine so gute Idee.
Daher meine Frage: Was sind eure Taktiken, mit Unterbrechungen umzugehen? Könnt ihr euren "State" im Kopf "wegspeichern"? Wie? Habt ihr einen Trick, schnell wieder reinzukommen? Gibt es Techniken die man lernen kann, um sich schneller wieder konzentrieren zu können?
Gruß,
Phil
-
-
bis dieser Zustand des Fokus erreicht ist
Kann trainiert werden. Meditation ist einer.
und dann platzt jemand in den Raum und stellt euch eine Frage. Oder das Telefon klingelt.
Notizen helfen. Mache ich immer, wenn ich mit fremden oder unuebersichtlichen Code zu tun habe.
Mitigation-Taktik dafür wäre allenfalls nachts alleine im Büro arbeiten
Wenn die Aufgaben klar sind, dann fange ich manchmal nach Feierabend an.
klebe es auf die Tür.
Ich habe keine Tuer, die mich schuetzt.
-
PhilippM schrieb:
Könnt ihr euren "State" im Kopf "wegspeichern"? Wie? Habt ihr einen Trick, schnell wieder reinzukommen?
da ich alles allein entwickelt hab, kenn ich mein baby... wenn ich was nicht kenn, sollts eh neu gemacht werden
-
Sheldor schrieb:
Kaufe dir soetwas und klebe es auf die Tür.
Kannst es auch ausdrucken.
Link 0
Link 1bevorzuge eher http://ecx.images-amazon.com/images/I/41awmdyup5L._SL500_AA300_.jpg
-
Gute Frage. Dieses Problem kenne ich so gar nicht. Sitze in einem Großraumbüro und werde eigentlich regelmäßig durch Kollegen, Telefon o.ä. abglenkt. Vielleicht fokussierst du dich zu stark auf deine Arbeit. Kann jetzt nur für mich sprechen. Das Problem, mit dem ich mich gerade beschäftige, existiert mehr oder minder als Bild in meinem Kopf und ist nach einer Ablenkung auch recht schnell wieder präsent.
Keine Ahnung, ob das trainierbar oder naturgegeben ist
-
Nachts arbeiten.
-
PhilippM schrieb:
Könnt ihr euren "State" im Kopf "wegspeichern"? Wie?
Ich hab eher das Problem, dass ich das nicht aus dem Kopf bekomme. Ich kenn nicht nur die Variablen/Parameter etc. von einer Funktion an der ich grad arbeite, ich habe hunderte Klassen im Kopf und wie die aufgebaut sind, wie die Methoden heißen, welche Parameter die bekommen und was es für Sonderfälle gibt. Reinkommen muss ich nicht, ich bin immer drin. Das ist auch das Problem, ich kann abends oder im Urlaub schwer den Kopf freibekommen.
-
Ich hör in solchen Flow-Situationen instrumentale Musik mit earphones. Dadurch bekomm ich erstmal weniger Telefonterror mit und zweitens ist die Ansprechhürde für meine Kollegen dadurch höher, was zu weniger Unterbrechungen führt. Wenn dann doch einer was will, bin ich grundsätzlich freundlich, weil ich weiß, dass es dann ja etwas wichtiges sein muss.
-
Ich kann nur Abends oder Nachts sinnvoll programmieren. Geht mir da auch so.
-
Dein Gehirn ist nicht multitaskingfähig trainiert!
Proggen ist ein Prozess, bei dem man jeweils nur mit der Realisierung einer Teilaufgabe beschäftigt ist. Welche Teilaufgabe das bei einer Unterbrecbhung gerade war, solltest du dir doch merken können.
Schreib einfach mit Kommentaren in den Code, was das momentane Ziel ist und wo es noch nicht zufriedenstelllend läuft! Auch ein Logfile kann gute Hilfe bringen. Kann man sogar brauchen, wenn mal eine Unterbrechung länger dauert, ein Programm gewartet, oder erweitert werden soll.
-
knivil schrieb:
bis dieser Zustand des Fokus erreicht ist
Kann trainiert werden. Meditation ist einer.
und dann platzt jemand in den Raum und stellt euch eine Frage. Oder das Telefon klingelt.
Notizen helfen. Mache ich immer, wenn ich mit fremden oder unuebersichtlichen Code zu tun habe.
Mitigation-Taktik dafür wäre allenfalls nachts alleine im Büro arbeiten
Wenn die Aufgaben klar sind, dann fange ich manchmal nach Feierabend an.
Genau die drei Punkte hätte ich auch vorgeschlagen:
1. Meditation oder Autogenes Training.
2. Notizen/Diagramme machen.
3. Evtl. früher nach Hause gehen, um dort per VPN weiterzuarbeiten oder eben nach Feierabend weiterarbeiten, wenn das Problem große Konzentration erfordert.
4. Evtl. das Problem in abgemildeter Form ansprechen: Deinen Kollegen klarmachen, dass du in etwa 15 Minuten Einarbeitungszeit brauchst, wenn du auch nur 1 Minute lang unterbrochen wirst.
4.1 Das Störproblem auch deinem Chef klarmachen.
-
Guter Artikel zu dem Thema
Why Multitasking Doesn’t Work
-
Also müssten wir nur ganz schnell zwischen Tasks switchen - mehrmals pro Sekunde - und Multitasking wäre ausreichend gut emuliert.
-
314159265358979 schrieb:
Also müssten wir nur ganz schnell zwischen Tasks switchen - mehrmals pro Sekunde - und Multitasking wäre ausreichend gut emuliert.
Mehrmals pro Sekunde?
Dafür muss ein Neurologe unser Gehirn manipulieren.
Aber wer lässt ein Schnitzel in der Pfanne anbrennen, nur weil gerade das Telefon oder es an der Haustür klingelt? Für solche Störungen gibt es Strategien, für die eigene Arbeit auch!
-
Das erste ist die Unterbrechung transparent zu machen.
Da hilft schon mal eine "Pain Snake" http://agile-commentary.blogspot.de/2008/12/snake-on-wall.htmlEs ist nachgewiesen das wenn man aus dem Flow gerissen wird bis zu 15 Minuten vergehen kann bis man wieder genauso produktiv ist wie vor der Unterbrechung.
Ein riesen Problem.
Wir haben es in der Arbeit unter anderen so gelöst das wir eine "Kopfhörerregel" eingeführt haben, sobald jemand die Kopfhörer drin hat darf er nicht gestört werden. (Die Snake haben wir aber auch, gut für die Visualisierung in anderen Teams, seit wir die haben bekommen wir weniger Unterbrechungen von Externen. Impediments müssen halt beseitigt werden.)
Ohne Unterbrechungen schafft man einfach mehr, und die Qualität steigt außerdem.
(Nur beim Pairing geht diese Regel natürlich nicht.)Man sollte auch Meetings usw immer vor oder nach einer berechneten Unterbrechung legen (Mittag zb), auch das Daily Standup kann eine böse Unterbrechung sein. Ein guter Zeitplan bringt da enorm viel. Am Tag sollte man mehrere Stunden zusammen bekommen wo das Team normal Arbeiten kann ohne das immer ein Meeting oder Anruf dazwischen funkt.
Auch wenn man meint das man nicht unterbrochen wurde, unbewusst ist man es doch, auch wenn man nur Gequatsche aus dem Nebenraum mitbekommt.
Man muss den Spagat schaffen zwischen unterbrechungsfreie Arbeit und Diskusionen im Team die dem Produkt helfen und auch das Klima fördern.Andere Maßnamen können unter anderen sein das man sein Mail Programm schließt und einfach nur noch einmal Täglich "Mails macht"
Oft ist es so das sobald der Umschlag zu sehen ist man schon raus gerissen wurde, zb weil man gleich antworten will, oder überhaupt lesen. Schnell ufert das aus.
Ich Persönlich schau nur nach Mail wenn ich weiß ich hab mindestens 30 Minuten nichts kompliziertes zu tun und kann ruhig unterbrochen werden. Ansonsten muss es halt bis zum nächsten morgen warten.Auch Cheffs verstehen sowas!
Das ganze ist ein recht interessantes Thema, euer Scrummaster (o.ä.) wird euch darüber einiges erzählen können.
Wir hatten bei einer Retro das als Hauptthema, erstmal einmal visualisieren und dann schauen ob die Anzahl der Unterbrechungen ein Problem ist das sich in die Velocity niederschlägt.
-
Wenn du wirklich eine Stunde brauchst ist dein Code wohl zu kompliziert gestrickt.
-
Also ich hab eigentlich kein Problem damit, wenn ich beim Programmieren unterbrochen werde. Ich habe heute was Programmiert, auf Ctrl+C gedrückt, dann kamen die Kollegen und wollten essen gehen. Ich hab den Rechner gelockt und bin mit gegangen. Während des Essens hab ich nie an das gedacht was ich programmiere. Nach dem Essen hab ich mich an meinen Rechner gesetzt, 3-5 Sekunden auf den Code geschaut und Ctrl+V gedrückt und es hat gepasst. Da musste ich kurz an den Thread hier denken und hab weiter programmiert.