Flow ist ein Konzept, das von Mihaly Csikszentmihalyi eingeführt wurde. Kurz gesagt, es bedeutet, in die "Zone" zu gelangen. Sie fühlen sich in Ihre Aufgabe vertieft und konzentriert. Die Aufgabe kann schwierig, aber gleichzeitig herausfordernd sein. Wenn Menschen Flow erreichen, steigt ihre Produktivität. Das Programmieren erfordert viel mentalen Fokus, da wir oft mehrere Dinge gleichzeitig im Kopf haben müssen. Viele arbeiten gerne in einer ruhigen Umgebung, in der sie ihre volle Aufmerksamkeit auf die Aufgabe richten können. Wenn sie unterbrochen werden, kann es einige Minuten oder sogar Stunden dauern, bis sie wieder fließen.
Ich verstehe, dass es in der agilen Entwicklung und extremen Programmierung eine Praxis gibt, die als Paarprogrammierung bezeichnet wird. Dies bedeutet, dass Sie das gesamte Softwareentwicklungsteam in einem Raum zusammenfassen, damit die Kommunikation nahtlos verläuft. Sie schreiben Code mit Ihrem Paar, weil Sie auf diese Weise sofortige Codeüberprüfungen erhalten und weniger Fehler durchkommen.
Ich hatte immer Probleme, beim Pair-Programmieren einen Flow zu erzielen, da es ständig zu Unterbrechungen kam. Ich denke tief über ein Problem nach, dann stellt mir plötzlich jemand eine Frage von einem anderen Paar. Mein Gedankengang ist verloren.
Wie können Sie während der Paarprogrammierung einen Fluss erzielen und aufrechterhalten?
quelle
Antworten:
Bearbeiten: Haftungsausschluss - So definiere ich "die Zone":
A state of extreme focus, in which one is able to understand how many intricate details connect together, regardless of whether these do so elegantly (or simply) or not.
Ich versuche, diesen Zustand zu vermeiden, da ich möglicherweise in der Zone korrekten Code produziere, es mir und anderen Entwicklern später schwer fallen wird, ihn zu verstehen. Kurz gesagt: Für das Lesen von Code, der in der Zone geschrieben wurde, muss sich der Leser häufig in der Zone befinden. Diese Einschränkung ist mein Problem.
Es gibt ein schönes Kapitel über The Clean Coder, in dem Onkel Bob überzeugend erklärt, warum "Einstieg in die Zone" eine täuschend schlechte Idee ist.
Hier ist eine möglicherweise bessere Alternative als "Einsteigen in die Zone": Denken Sie klar und überlegen Sie ruhig und professionell, was Sie tun. Kommunizieren. Teilen Sie Ihre Gedanken mit Ihren Partnern. Identifizieren Sie die tatsächlichen Probleme. Diskutieren Sie mögliche Lösungen. Sie fühlen sich vielleicht nicht übernatürlich konzentriert, aber Sie treffen wahrscheinlich gute Entscheidungen und sind ansprechbar für Entwürfe.
Wenn Sie und Ihr Partner das Problem besprechen können, ohne dass Sie beide extrem konzentriert sind, ist es wahrscheinlich, dass Sie das Problem auf seine einfachere Natur zurückgeführt haben. Das bedeutet, dass Sie es jederzeit wieder verstehen können.
Auf der anderen Seite ... Wenn Sie nur etwas Zeit alleine brauchen, um Ihren Kopf klar zu bekommen (das tun wir alle manchmal), nehmen Sie es einfach. Fassen Sie Ihre Gedanken zusammen. Arbeite das Problem zuerst in deinem Kopf aus.
Aber die Sache ist, dass, wenn Sie dies tun - verwenden Sie diese Zeit nicht zum Schreiben von Produktionscode. Spielen Sie stattdessen mit Beispielcode und Prototypen. Versuchen Sie, das Problem zu verstehen, ohne erst an Lösungen zu denken. Wenn Sie alles richtig geschrieben haben, besprechen Sie es mit Ihrem Team und Partner oder sogar mit der Gummiente auf Ihrem Schreibtisch. Wenn Sie es immer noch nicht artikulieren können oder sie es nicht verstehen können, verfeinern Sie Ihre Ideen. Sobald Sie alles festgenagelt haben, integrieren Sie den gesamten Gedanken- und Beispielcode in eine echte, funktionierende Lösung.
quelle
Die Paarprogrammierung erfordert manchmal eine gewisse Isolation von Ihrem Partner.
Beispiel
Sie arbeiten zusammen an einer bestimmten Klasse und stellen fest, dass Sie eine Methode schreiben müssen, die gründliche Überlegungen zu einer komplexen Logik erfordert, ansonsten aber ein banales Ergebnis liefert. Sie arbeiten gemeinsam an der Erstellung von Komponententests für diese Methode und verschieben das Schreiben dieser Methode auf einen Zeitraum, in dem Sie isoliert arbeiten. Wenn die Methode abgeschlossen ist, kommen Sie zu zweit wieder zusammen und werten die Ergebnisse aus.
quelle
Ich habe festgestellt, dass es eine kleine Klasse von Problemen gibt, für die die Paarprogrammierung funktioniert. Wenn Sie beispielsweise an einem plattformübergreifenden Produkt arbeiten und der Winders-Typ eine Funktion implementiert hat, für die betriebssystemspezifischer Code erforderlich ist, kann er dem Mac-Typ helfen, dieselbe Funktion auf dem Mac-Code zu implementieren, während der Mac-Typ fährt.
Nach meiner Erfahrung führt Paarprogrammierung jedoch ungewöhnlich zu einem Nettoverlust an Produktivität. Es fühlt sich so oft so an, als würden wir zwei Entwickler dafür bezahlen, die Arbeit eines zu erledigen.
Ja, es verringert die schreckliche Möglichkeit, dass ein Entwickler während des Arbeitstages eine Stapelwechselpause einlegt.
IMHO wäre es billiger für diejenigen Unternehmen, die ihre Entwickler überwachen möchten, jeden Entwickler mit einem privaten Sicherheitsbeamten zu koppeln, um sich hinter den Entwickler zu stellen und den Entwickler mit einem Schlagstock zu schlagen, falls er jemals langsamer wird oder versucht, auf ein Unwichtiges zu stoßen Website.
quelle
Als Entwickler, der versucht, in die Zone einzudringen, werden Sie versuchen, sich so gut wie möglich zu isolieren, um sich wohl zu fühlen und den Kopf frei zu bekommen. Warum sollte die Paarprogrammierung anders sein?
Sie und Ihr Partner sollten eine zoneninduzierende Umgebung finden, die für Sie beide funktioniert. Dies erfordert möglicherweise Kompromisse bei einigen Dingen, aber mein wichtigster Punkt ist, dass die Pair-Umgebung der Solo-Umgebung ähnlich sein sollte. Schalten Sie die Außenwelt aus. Das Paar programmiert zusammen; andere Paare (andere Mitarbeiter im Allgemeinen) sollten nicht unterbrochen werden (mit Ausnahme von kritischen Problemen, bei denen Sie die Aufgabe übernehmen).
quelle
Flow ist ein großartiger Zustand, wenn Sie die genauen Schritte zur Lösung eines Problems kennen. dh wenige unbekannte Unbekannte. Sie sitzen in einer ruhigen Ecke und hämmern die Lösung weg. Die meisten Probleme / Storys / Features sind jedoch nicht sehr klar, wenn Sie mit der Programmierung beginnen. Es wird immer eine "Lücke" zwischen dem erwarteten Endzustand und der "Planung" Ihres Gehirns geben. Sie lernen eine Menge Dinge, wenn Sie es tatsächlich tun. Dein Gehirn jongliert
Code-Design
Tippen
Lernen Sie neue Dinge über die Domain und den Code
Wenn ich alleine programmiere, bemühe ich mich, diese Dinge auszugleichen. Ich neige dazu, in "Hasenlöcher" zu geraten, in denen mein versunkener Kostenfehler mich daran hindert, einen Schritt zurückzutreten, das Gesamtbild zu betrachten und mein Design zu ändern. Es fällt mir auch schwer, mit einer imaginären oder einer echten Gummiente zu sprechen. Ich bin immerhin im "Flow".
Wenn ich aber produktiv paarweise programmiere, bekomme ich abwechselnd Schreibperioden, gefolgt von Perioden des Denkens und Nachdenkens. Hier enthüllen sich viele versteckte Dinge und es kann ein anderes Design entstehen. Wenn ich in ein Kaninchenloch gehe, kann mein Partner mich herausziehen. Einem echten Menschen etwas zu erzählen / zu erklären hat den wunderbaren Effekt, seine Gedanken irgendwie klarer zu machen. Manchmal vermisse ich es, im "Flow" zu sein, aber ich denke, ich trage viel mehr zu meinem Team bei, wenn ich ein Pairing-Programm durchführe, als wenn ich alleine programmiere. Nach allem Programmieren! = Tippen. Programmierung geschieht im Gehirn und bessere Programmierung geschieht, wenn zwei Gehirne zusammenarbeiten und sich gegenseitig kritisieren.
quelle