> ## Documentation Index
> Fetch the complete documentation index at: https://docs.baenninger.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Pair Programming

Pair Programming ist eine Praxis der agilen Softwareentwicklung, bei der zwei Programmierer an einem Arbeitsplatz zusammenarbeiten. Einer der Programmierer, der "Driver", schreibt den Code, während der andere, der "Observer" oder "Navigator", die Arbeit des Drivers überprüft, strategische Ratschläge gibt und Fehler identifiziert. Die beiden wechseln regelmässig die Rollen.

## Vorteile

<AccordionGroup>
  <Accordion title="Verbesserte Codequalität">
    Durch die kontinuierliche Überprüfung des Codes während der Entwicklung werden Fehler frühzeitig erkannt und behoben.
  </Accordion>

  <Accordion title="Wissenstransfer">
    Pair Programming fördert das Lernen und den Wissenstransfer innerhalb des Teams, da die Programmierer ständig voneinander lernen.
  </Accordion>

  <Accordion title="Team-Kommunikation">
    Die ständige Zusammenarbeit fördert eine bessere Kommunikation und ein besseres Verständnis innerhalb des Teams.
  </Accordion>

  <Accordion title="Schnellere Problemlösung">
    Zwei Köpfe sind besser als einer – oft werden Probleme schneller gelöst, wenn zwei Personen daran arbeiten.
  </Accordion>

  <Accordion title="Lerneffekt">
    Pair Programming ermöglicht es weniger erfahrenen Entwicklern, von ihren erfahreneren Kollegen zu lernen.
  </Accordion>
</AccordionGroup>

## Ausführung

<Steps>
  <Step title="Setup">
    Zwei Programmierer sitzen an einem Computer und teilen sich eine Tastatur und eine Maus.
  </Step>

  <Step title="Rollenverteilung">
    Einer agiert als Driver und schreibt den Code, während der andere als Navigator fungiert und die Arbeit überwacht.
  </Step>

  <Step title="Regelmässiger Rollentausch">
    Die Rollen wechseln typischerweise alle 15 bis 30 Minuten, um beide Programmierer aktiv zu halten und den Lerneffekt zu maximieren.
  </Step>

  <Step title="Kommunikation">
    Der Driver erklärt kontinuierlich, was er macht, während der Navigator Feedback und Ratschläge gibt.
  </Step>
</Steps>

## Best Practices

<AccordionGroup>
  <Accordion title="Effektive Kommunikation">
    Klare und präzise Kommunikation ist entscheidend für den Erfolg. Beide Partner sollten in der Lage sein, ihre Gedanken und Ideen klar auszudrücken.
  </Accordion>

  <Accordion title="Respekt und Offenheit">
    Beide Programmierer sollten die Ideen und Ansätze des anderen respektieren und offen für Feedback sein.
  </Accordion>

  <Accordion title="Regelmässige Pausen">
    Um Ermüdung zu vermeiden und die Konzentration zu behalten, sind regelmässige Pausen wichtig.
  </Accordion>

  <Accordion title="Flexibilität">
    Der Rollentausch sollte flexibel gestaltet sein, je nach Bedarf und Komplexität der Aufgabe.
  </Accordion>

  <Accordion title="Gemeinsame Verantwortung">
    Beide Partner tragen die Verantwortung für den geschriebenen Code und sollten darauf achten, dass er den Qualitätsstandards entspricht.
  </Accordion>
</AccordionGroup>

## Grenzen

<AccordionGroup>
  <Accordion title="Hoher Zeitaufwand">
    Pair Programming kann im Vergleich zum Solo-Coding zunächst zeitaufwändiger sein, was in engen Zeitplänen zu einem Problem werden kann.
  </Accordion>

  <Accordion title="Zwischenmenschliche Konflikte">
    Persönliche Differenzen oder unterschiedliche Arbeitsstile können zu Konflikten führen und die Effektivität mindern.
  </Accordion>

  <Accordion title="Nicht immer geeignet">
    Nicht alle Aufgaben oder Probleme eignen sich für Pair Programming, besonders wenn sie triviale oder sich wiederholende Routinearbeiten sind.
  </Accordion>

  <Accordion title="Kosten">
    Die Praxis kann teurer sein, da zwei Entwickler an derselben Aufgabe arbeiten, was in einem höheren Stundenaufwand resultiert.
  </Accordion>
</AccordionGroup>
