Willst du ein Entwickler sein? Sie sollten wahrscheinlich Pair Programming sein.

Wenn Menschen an Softwareentwicklung denken, denken sie verständlicherweise an einen einsamen Wolfsprogrammierer, der von der Welt abgeschaltet ist und komplexe Probleme löst.

Was wäre, wenn ich Ihnen sagen würde, dass Softwareentwicklung in der realen Welt kaum jemals wirklich funktioniert? Diese Paarprogrammierung könnte Ihre Antwort darauf sein, schneller Code zu lernen, sich auf die reale Welt der Softwareentwicklung vorzubereiten und vielleicht mehr Spaß in der Welt zu haben Prozess?

Hört sich gut an. Wie arbeiten Softwareentwickler wirklich?

Was genauer sein mag, ist ein Team von Softwareentwicklern, die sich manchmal von der Welt abschotten, sich zu anderen Zeiten mit der Welt verbinden und immer noch komplexe Probleme lösen (aber zusammen ).

Das Lone-Wolf-Szenario kann in bestimmten Situationen zutreffen, z. B. beim Abschluss eines Nebenprojekts oder bei freiberuflichen Arbeiten. Meistens wird die Softwareentwicklung für Produkte jeder Größenordnung jedoch von einem vollwertigen Softwareteam durchgeführt, wahrscheinlich mit einer Mischung aus verschiedenen Entwicklungsstärken (siehe Abbildung unten vom DSDM Agile Framework). Dieses Software-Team wird in ein breiteres Geschäfts- und Handelsteam eingebunden (wir können unseren Endbenutzer nicht vergessen :))

Was bedeutet das für uns Softwareentwickler, die das Handwerk lernen? Das bedeutet, dass das Erlernen des Codierens oft als einsames Wolfsspiel beginnt. Wir möchten jedoch, dass es (so schnell wie möglich) zum Mannschaftssport der Softwareentwicklung wird, der in den meisten Organisationen vorherrscht.

Über den eigentlichen Codierungsinhalt hinaus ist es wichtig, die Fähigkeiten zur Zusammenarbeit und Teamarbeit aufzubauen, die Ihnen helfen, in einem Softwareentwicklungsteam erfolgreich zu sein. Die externe Unterstützung von anderen, um Sie zu dehnen, ist auch eine fantastische (vielleicht die beste) Möglichkeit zu lernen, selbst wenn die natürliche Versuchung darin besteht, sich nur durch knifflige Codierungsprobleme zu kämpfen.

Ein Team zu finden, mit dem man lernen und wachsen kann, ist möglicherweise keine praktische Lösung. Eine andere Person zu finden, mit der das Programm gekoppelt werden kann, ist ein viel realistischerer Ausgangspunkt.

Ok, ich bin fasziniert ...

Für Uneingeweihte: Was ist Paarprogrammierung?

Zum Glück kann uns Wikipedia hier helfen:

„Die Paarprogrammierung ist eine agile Softwareentwicklungstechnik, bei der zwei Programmierer an einer Workstation zusammenarbeiten. Der eine, der Fahrer , schreibt Code, während der andere, der Beobachter oder Navigator , jede eingegebene Codezeile während der Eingabe überprüft. Die beiden Programmierer wechseln häufig die Rollen. “

Wie verändert dies die Einstellung der beiden Personen, die sich dem Code nähern?

„Während der Überprüfung berücksichtigt der Beobachter auch die„ strategische “Richtung der Arbeit und entwickelt Ideen für Verbesserungen und wahrscheinliche zukünftige Probleme, die angegangen werden müssen. Dies gibt dem Fahrer die Möglichkeit, sich ganz auf die „taktischen“ Aspekte der Erfüllung der aktuellen Aufgabe zu konzentrieren und den Beobachter als Sicherheitsnetz und Leitfaden zu verwenden. “

OK Cool. Aber wird diese Paarprogrammierung nicht sehr unangenehm sein?

Sie sind vielleicht skeptisch gegenüber der Paarprogrammierung - ich war selbst sicherlich skeptisch. Ihre ersten Gedanken könnten sein, dass die Idee unangenehm klingt. Wird es so sein?

Um Ihre vernünftige Skepsis zu lindern, lassen Sie uns einige der Vorteile der Paarprogrammierung erläutern, die insbesondere auf diejenigen angewendet werden, die sich dem Beginn ihrer Codierungsreise nähern.

Drei Hauptvorteile der Paarprogrammierung, zugeschnitten auf jemanden, der das Codieren lernt:

(1) Paarprogrammierung ist eine fantastische Möglichkeit, von einem anderen Codierer zu lernen.

In keiner anderen Umgebung befinden Sie sich genau am selben Punkt einer Codierungsherausforderung, kämpfen sich durch genau dasselbe Problem und versuchen, es gemeinsam zu lösen. Sie werden lachen, Sie werden weinen und Sie werden letztendlich lernen .

Wichtig ist, dass Sie beim Erlernen des Codierens unterschiedliche Wissensdatenbanken aufgebaut haben und neue Inhalte von Ihrem Paar abrufen können. Noch wichtiger ist, dass es bei einer guten Programmierung letztendlich darum geht, Ihren besten Problemlösungsprozess anzuwenden und nicht nur über viel inhaltliches Wissen zu verfügen (siehe diesen Beitrag). Die Paarprogrammierung ermöglicht es Ihnen, aus dem Prozess eines anderen Entwicklers zu lernen und Feedback zu Ihrem eigenen Codierungsprozess zu erhalten (mehr zu Feedback unten).

Ein Bonusvorteil, wenn Sie diese Perspektive auf Ihren Codierungsprozess haben und sie Ihrem Paar erklären müssen: Rubber-Ducking ist eine fantastische Möglichkeit, Code zu debuggen. Kurz gesagt, es geht darum zu erklären, was Sie mit einer 'Gummiente' oder einem anderen leblosen Objekt zu lösen versuchen, damit Sie eine Perspektive auf das Problem erhalten. Warum nicht einem realen Programmierer erklären, dass Sie stattdessen Ideen abprallen können?

(2) Pairing ist eine großartige Umgebung, um die Teamfähigkeiten zu üben, die für eine gute Softwareentwicklung von zentraler Bedeutung sind.

Wir haben bereits früher festgestellt, dass Software ein Mannschaftssport ist. Indem Sie Ihre Codierungspraxis durch Pairing aus Ihrem eigenen Kopf herausnehmen, bauen Sie natürlich die Soft-Team-Fähigkeiten auf, die für die Arbeit in einem größeren Software-Entwicklungsteam so wichtig sind.

Das Codieren von Interviews kann oft beinhalten, dass Sie Ihren Interviewer während des Codierens oder Pseudocodes durch Ihren Denkprozess sprechen. Mit der Pairing-Übung können Sie Ihre Codierungsgedanken klar artikulieren und sich in diesen paarartigen Interviews die bestmögliche Chance geben.

(3) Die Vorteile der Paarprogrammierung sind für (relativ) neue Softwareentwickler noch größer.

Wie aus der von Laurie Williams durchgeführten Untersuchung hervorgeht, funktioniert die Paarkodierung am besten, wenn (i) das Paar an komplexen Aufgaben arbeitet und (ii) Einzelpersonen über ähnliche Programmierkenntnisse verfügen (siehe von Laurie Williams zusammengestellte Paarprogrammierungsforschung).

Als neu geprägter Codierer, der sich auf den Weg zur Größe macht, sind viele der Aufgaben, die Sie ausführen, von Natur aus komplex, da Sie noch nicht über die Erfahrung und das Wissen verfügen, die bestimmte Codierungsaufgaben vereinfachen können. Ihr Paar, das auch das Codieren lernt, befindet sich in einer Vielzahl von Codierungswissensbereichen mit größerer Wahrscheinlichkeit auf einem ähnlichen Niveau wie Sie, selbst wenn einer von Ihnen in einem bestimmten Bereich stärker ist.

Abgesehen von der Hardcore-Forschung können Sie sich auch von der Tatsache trösten lassen, dass die Mehrheit der renommierten Coding-Bootcamps (die entwickelt wurden, um Leute von Neulingen zu Junior-Codierern in etwa 3 Monaten zu bringen) stark auf Paarprogrammierung angewiesen ist, damit Programmierer von Null auf Null wechseln können Held so schnell wie möglich.

Die Tatsache, dass diese intensiven Bootcamps mit Code-Unterricht so oft Pairing verwenden, ist ein klarer Indikator dafür, dass es definitiv ein Nugget Gold ist, sie zum schnellen Lernen und Lernen zu verwenden. Ich selbst entdeckte die Ehre, Pairing zu verwenden, um im Coding Bootcamp, an dem ich teilgenommen habe, Makers Academy, zu lernen.

Wenn Sie immer noch skeptisch sind, fordere ich Sie auf, die Paarcodierung zu versuchen . Ich könnte seine Vorteile weiter auflisten, aber dies wird verblassen im Vergleich dazu, es auszuprobieren, seine Kräfte in der Praxis zu sehen und letztendlich zu entscheiden, ob es eine großartige Möglichkeit ist, für Sie zu lernen.

OK, ich bin überzeugt, es zu versuchen. Wie fange ich an?

Finden Sie zuerst Ihr Paar (idealerweise eine Person mit ähnlichen Fähigkeiten, die auch das Codieren lernt). Dies kann ein Freund sein, den Sie kennen, der das Codieren lernt, oder jemand, den Sie auf Ihrer Codierungsreise treffen.

Das persönliche Pairing ist ideal, aber das Remote-Pairing ist auch großartig und kann eine bequemere Lösung sein (für die Sie eine Bildschirmfreigabesoftware wie Skype oder Mikogo verwenden können). Am Arbeitsplatz wird häufig ein Pairing zwischen Senior- und Junior-Entwicklern durchgeführt, damit der Junior schnell vom Senior-Entwickler lernen kann.

Wenn Sie derzeit keine offensichtliche Person haben, mit der Sie sich paaren können, ist es an der Zeit, mit dem Aufbau Ihrer Entwickler-Community zu beginnen.

Die Kenntnis anderer Entwickler ist ein so wichtiger Aspekt beim Erlernen des Codierens an sich. Sie können Gedanken von Menschen abprallen lassen, gemeinsam Ideen entwickeln und von Menschen mit unterschiedlichen Hintergründen und Stärken lernen. Daher lohnt es sich, sich diesen Communities anzuschließen, um andere Entwickler zu treffen. Es ist ein leckerer Bonus, jemanden zu finden, mit dem man sich paaren kann.

Wenn Sie ein neuer Programmierer sind, empfehle ich zwei sichere Wege, um andere Entwickler zu treffen:

(1) Treten Sie einer Coding-Community bei, in der Menschen zusammenkommen, um zu codieren / das Codieren zu lernen. In London könnten Sie beispielsweise dem "London Hackspace" beitreten.

(2) Nehmen Sie an Coding-Community-Veranstaltungen teil, insbesondere für neue Codierer. Eine gute Route ist die Teilnahme an einer Veranstaltung, die von einem aktuellen Bootcamp durchgeführt wird. Andere Codierer, die das Bootcamp auschecken, befinden sich in einer ähnlichen Position wie Sie.

Wenn Sie ein potenzielles Paar (oder mehrere!) Gefunden haben, probieren Sie verschiedene Paarprogrammiertechniken aus, um eines zu finden, das Ihnen gefällt:

Im Folgenden finden Sie zwei Beispiele für Paarprogrammiertechniken:

(1) Pomodoro-Paarung. Ein Timer ist auf 25 Minuten eingestellt, wobei eine Person der Fahrer und die andere der Navigator ist. Alle 25 Minuten machen Sie eine kurze Pause und wechseln die Rollen. Hierfür gibt es hier eine großartige Chrom-Erweiterung.

(2) Ping-Pong-Paarung. Der Treiber schreibt einen fehlgeschlagenen Test und übergibt dann die Treiberrolle (und die Tastatur) an die andere Person. Der neue Treiber schreibt den Code, um diesen Test zu bestehen, überarbeitet den Code und schreibt einen fehlgeschlagenen Test, durch den die andere Person fahren kann. (Um die testgetriebene Entwicklung zu verstehen, lesen Sie Punkt 1 hier)

Weitere Paarprogrammiertechniken finden Sie unter:

  • Paarprogrammiertechniken
  • Remote-Pair-Programmierung

Zum Schluss: Ausbalancieren der Sicht auf die Paarprogrammierung

Hoffentlich fühlen Sie sich jetzt inspiriert, Paarprogrammierung als leistungsstarkes Werkzeug zu Ihrer Lern-Toolbox hinzuzufügen. Es ist wirklich sehr nützlich und ich hoffe, Sie haben jetzt genug Informationen, um loszulegen.

Um das oben Gesagte auszugleichen: Die Paarprogrammierung ist natürlich nicht immer einfach. Das Lernen, Ihren Codierungsprozess zu erklären und zu externalisieren, kann schwierig sein. Die Zusammenarbeit mit anderen kann im Allgemeinen schwierig sein, und bestimmte Szenarien können die Wertepaarprogrammierung verringern (z. B. wenn die Fähigkeiten oder Ziele des Paares nicht übereinstimmen).

"Schwierige Dinge sind nicht einfach, aber sie sind es wert", liebt Mia

Grundsätzlich habe ich jedoch nichts hilfreicheres gefunden, als stundenlanges Paarprogrammieren mit einer Vielzahl von Menschen mit unterschiedlichen Hintergründen und Talenten, wenn Sie lernen, in einem Softwareentwicklungsteam zu programmieren und zu arbeiten.

Wenn es darauf ankommt, kommt es darauf an, dass die meisten Dinge im Code (und im Leben) gut mit anderen zusammenarbeiten. Der zusätzliche Bonus? Die Zusammenarbeit mit anderen hat die Aufregung, in Richtungen zu gehen, die Sie vielleicht nicht erwarten, die Strenge, durch Meinungsverschiedenheiten und Diskussionen qualitativ hochwertigen Code sicherzustellen, und vielleicht, vielleicht, wird es einfach viel mehr Spaß machen!

Suchen Sie nach weiteren Codierungsgeheimnissen?

Dies ist der fünfte Beitrag in einer Reihe, der sich auf die geheimen Meta-Erkenntnisse konzentriert, die ich beim Codieren an der Makers Academy gelernt habe: die Ansätze, Tools und Denkweisen, um die Durchbrüche zu erzielen, die Sie als Kick-Ass-Codierer benötigen .

Klicken Sie hier für meinen vorherigen Beitrag: 5 Möglichkeiten, sich von klebrigen, kniffligen Codierungsproblemen zu lösen

Wenn Ihnen dieser Blog-Beitrag gefallen hat und Sie mehr davon lesen möchten, klicken Sie bitte auf "Folgen" und geben Sie mir ein paar Klatschen, indem Sie unten auf die Schaltfläche "Mittlere Klatschen" klicken.