Pair Programming - wie Mentoring gestalten?



  • Hi Leute,

    ich arbeite momentan zum ersten mal richtig in einem Team (2 Mann). Wir haben eine Aufgabe, die zwar wenig Code erfordert, aber eine inhärent hohe Code Komplexität hat (sehr Abstrakter Code, sehr allgemein, sehr template lastig). Der Hintergrund ist, dass wir mit unserer alten Codebasis voll auf die Schnauze geflogen sind und dank diverser bugs und schlechtem Design unsere effektive Produktivität nahe 0 lag.

    Wir haben uns entschlossen das Redesign in Pair-Programming zu machen. Auch und vor allem, weil wir damit rechnen müssen, dass einer von uns Beiden bald vielleicht nicht mehr da ist, und immer jemand da sein soll, der das ganze Projekt versteht. Das Design steht und wir kommen als Team gut miteinander klar. Das Problem ist nun, dass ich ein wesentlich besserer Programmierer als mein Partner bin. Sie hat noch nicht so viel mit Templates am Hut gehabt und muss sich jetzt direkt in Policy based Design einarbeiten. Sie hat zwar schon gute Ideen insbesondere bremst sie mich etwas, was dem Design echt gut tut, aber momentan bin ich derjenige, der programmiert. Und wie gesagt sollen eigentlich immer 2 Leute in der Lage sein, den Code zu warten und Wissen weiterzugeben.

    Nun habe ich mir überlegt, ob ich eine Art Mentoring Session einlegen soll, und sie einfach eine Klasse aus der Planung programmieren lasse und mich daneben setze und auf die richtige Implementation achte. Quasi das was wir vorher gemacht haben umgekehrt. Aber ich habe Angst, dass ich sie damit überfordern könnte. Wie macht man das also am Besten? Ich bin jetzt nicht der Überlehrer. Hat jemand von euch vielleicht Erfahrung mit Pair-Programming mit komplexen Code und stark abweichendem Kenntnisstand?



  • immer jemand da sein soll, der das ganze Projekt versteht

    Eine gute Dokumentation loest dieses Problem.

    daneben setze und auf die richtige Implementation achte

    Also sie soll das programmieren, was du dir vorstellst? Das funktioniert nicht, aber Ueberforderung ist nicht das richtige Wort dafuer. Ist wie mit der richtigen Interpretation in Deutsch. Die gibt es nicht.

    Auch und vor allem, weil wir damit rechnen müssen, dass einer von uns Beiden bald vielleicht nicht mehr da ist

    Soll ich jetzt raten, wer von euch beiden geht? Wenn sie es waere, dann wuerde es wohl reichlich egal sein.

    aber momentan bin ich derjenige, der programmiert

    Dann aendere das! Lass sie ueben, wobei ich Pair-Programming nicht gut finde. Der Zwang, alles gleich "richtig" zu machen, ist sehr hemment. Und dabei auch noch beobachtet zu werden ...



  • pair programming heißt ja nicht "einer arbeitet und ein anderer schaut zu". und wenn das passiert ist auch was schief gelaufen. man sollte sich das eher vorstellen wie auto fahren und karte lesen. der fahrer ist der mit der tastatur, der beifahrer pennt aber nicht, sondern er hat den überblick und weist ggf. auf wichtige stellen hin. wichtig ist auch, dass regelmäßig gewechselt wird, sagen wir alle ca. 15 minuten, sonst ist die gefahr zu hoch, dass einer abtaucht.

    gerade wenn die programmierkenntnisse stark unterschiedlich sind, ist das anfangs aber schwierig. insbesondere wenn du an der tastatur bist, mußt du dich ein bißchen zusammenreißen und nicht alles nur schnell machen und ggf. danachnerklären warum du das so gemacht hast. lass deinen partner an deinen denkprozessen und der entstehung des codes teilhaben.

    wenn man das beachtet, ist pair programming meiner erfahrung nach eine gute möglichkeit schnell wissen zu vermitteln. allereings habe ich damit noch jeine sehr umfangreichen projekte umgesetzt, kleinere aber schon, und das durchaus mit leuten die über unterschiedliche kenntnisse verfügten.



  • Danke schonmal für die Antworten.

    knivil schrieb:

    immer jemand da sein soll, der das ganze Projekt versteht

    Eine gute Dokumentation loest dieses Problem.

    Wie du weißt, ist es schwierig bis unmöglich, die Dokumentation einer Software immer up-to-date und auf einem hohen Niveau zu halten. Und insbesondere im wissenschaftlichen Umfeld, wo gute Programmierer wie auch frische Studenten mit dem Code arbeiten wollen ist es kaum unmöglich eine Dokumentation zu schreiben, die allen alle Fragen beantwortet. In dem Fall geht nichts über jemanden, der die Bibliothek gut kennt und konkrete Fragen dazu beantworten kann.

    Also sie soll das programmieren, was du dir vorstellst?

    Wie wir es uns im Design vorgestellt haben. Wir haben die letzten Tage lange geplant. Aber nicht jeder hat alles im Kopf. Insbesondere bei neuen Konzepten schleichen sich schnell Fehler ein. Sie ist besser bei der mathematisch sauberen Definiton der Abhängigkeiten und Komponenten, ich besser in der Planung des Programms. Insofern machen wir beide Fehler und korrigieren uns auch gegenseitig.

    Der Zwang, alles gleich "richtig" zu machen, ist sehr hemment. Und dabei auch noch beobachtet zu werden ...

    Eigentlich machen wir Beide das bislang sehr locker. Ich habe ja vorher auch nicht einfach so programmiert, denn wie Jester es schon sagte: Sie hat die Karte gehalten und darüber nachgedacht, ob die Richtung stimmt. Es ist erstaunlich, wie unterschiedlich zwei Leute ihre Prioritäten setzen und ich muss sagen, dass die wenigen gemeinsamen Sessions eine echte Verbesserung dargestellt haben. Sowohl der Produktivität, als auch der dem Design und der Arbeitsmoral. Nur muss es halt in beiden Richtungen klappen.

    @Jester hmm. Also gibts wie immer kein wirkliches Patentrezept. Ich denke, ich werde das morgen einfach mal bei einer Klasse versuchen, wo alles ziemlich überschaubar ist. Vorher drüber reden, was wir machen wollen und mich dann daneben setzen und während sie den Code schreibt, die Karte halten.



  • Im Endeffekt willst du sie doch eh nur durchbumsen - gibs doch zu.



  • otze schrieb:

    Danke schonmal für die Antworten.

    knivil schrieb:

    immer jemand da sein soll, der das ganze Projekt versteht

    Eine gute Dokumentation loest dieses Problem.

    Wie du weißt, ist es schwierig bis unmöglich, die Dokumentation einer Software immer up-to-date und auf einem hohen Niveau zu halten. Und insbesondere im wissenschaftlichen Umfeld, wo gute Programmierer wie auch frische Studenten mit dem Code arbeiten wollen ist es kaum unmöglich eine Dokumentation zu schreiben, die allen alle Fragen beantwortet. In dem Fall geht nichts über jemanden, der die Bibliothek gut kennt und konkrete Fragen dazu beantworten kann.

    Documentation lies.


Anmelden zum Antworten