{"id":45073,"date":"2022-05-18T12:21:33","date_gmt":"2022-05-18T12:21:33","guid":{"rendered":"https:\/\/g9hq0oamq8.onrocket.site\/?post_type=methode&#038;p=45073"},"modified":"2023-08-21T10:52:12","modified_gmt":"2023-08-21T10:52:12","slug":"pair-and-mob-programming","status":"publish","type":"methode","link":"https:\/\/www.innovation.wiki\/de\/method\/pair-and-mob-programming\/","title":{"rendered":"Pair and Mob Programming"},"content":{"rendered":"\n<p>\u201cWhat one programmer can do in one month, two programmers can do in two months.\u201c Fred Brooks<\/p>\n\n\n\n<p>Viele Leute denken, dass man Programmierung einfach und in hohem Ma\u00dfe parallelisieren kann. Wenn die Entwickler am selben Projekt arbeiten, funktioniert diese Methodik allerdings nur zu Teilen. Selbstverst\u00e4ndlich k\u00f6nnen bestimmte Bestandteile unabh\u00e4ngig voneinander entwickelt werden, allerdings gibt es auch h\u00e4ufig Abh\u00e4ngigkeiten zwischen den zu programmierenden Modulen. Insbesondere in agilen Sprints stellt sich die Frage, inwiefern eine hohe Parallelisierung sinnvoll ist, denn hier soll ja bewusst ein gemeinsames Ziel und Produktinkrement geschaffen werden.<\/p>\n\n\n\n<p>Aus dem Extreme Programming (XP) hat sich die Methodik des Pair Programmings entwickelt, die mittlerweile h\u00e4ufig in agilen Softwareprojekten angewandt wird. Hierbei arbeiten zwei Entwickler gleichzeitig an einem Arbeitsplatz an einer Aufgabe und programmieren zusammen. Einer der Entwickler schreibt dabei den Code (\u201cDriver\u201c), und der andere Entwickler kontrolliert den Code, gibt Feedback und denkt aktiv \u00fcber die Problemstellung nach (\u201cNavigator\u201c). Diese Rollen werden dann nach und nach rotiert.<\/p>\n\n\n\n<p>Untersuchungen haben gezeigt, dass dadurch die Entwicklungskosten nur minimal steigen, weil durch das \u201eVier-Augen-Prinzip\u201c\u00a0Fehler deutlich fr\u00fcher erkannt und behoben werden. In der Praxis lassen sich also durch das Pair Programming u. a. folgende Vorteile\u00a0erzielen:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>geringe Fehlerquote,<\/li><li>Zusammenarbeit und Kommunikation im Team wird gest\u00e4rkt,<\/li><li>Code-Qualit\u00e4t steigt,<\/li><li>durch den gemeinsamen Austausch k\u00f6nnen Probleme bessergel\u00f6st werden,<\/li><li>Wissen wird geteilt. Eine Weiterf\u00fchrung des Pair Programmings ist das sogenannte Mob Programming. Hierbei arbeitet ein gesamtes Team \u2013 der \u201eMob\u201c \u2013 an einer Coding-Aufgabe, wobei es wie beim Pair Programming einen Driver gibt, der an der Workstation sitzt und den\u00a0Code eingibt. Die anderen Mitglieder \u00fcbernehmen gemeinsam die Rolle des Navigators, entwickeln L\u00f6sungsvorschl\u00e4ge und diskutieren miteinander. Allerdings kennt das Mob Programming\u00a0auch weitere Rollen, sodass neben dem Driver und Navigator auch\u00a0folgende Rollen besetzt werden k\u00f6nnen:<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Designated Navigator<\/strong>: Moderiert die Diskussionen der anderen&nbsp;Navigatoren, sammelt Vorschl\u00e4ge und entscheidet, wenn die Vorschl\u00e4ge auseinander gehen<\/li><li><strong>Researcher<\/strong>: \u00dcbernimmt Forschungsaufgaben, die zur L\u00f6sung der Aufgabe hilfreich sein k\u00f6nnen<\/li><li><strong>Learner<\/strong>: Nimmt prim\u00e4r teil, um als Teil der Gruppe zu lernen und aktiv nachzufragen<\/li><li><strong>Timekeeper<\/strong>: \u00dcberwacht die Zeit und k\u00fcmmert sich um den RollenwechselNeben den Vorteilen aus dem Pair Programming st\u00e4rkt das Mob&nbsp;Programming vor allem auch die Teambindung, da hier noch mehr&nbsp;Mitglieder involviert sind.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Beim Pair und Mob Programming arbeiten zwei oder mehr Personen gemeinsam an einem Problem, wobei nur eine der Personen den Code programmiert und die anderen bei der L\u00f6sungsfindung unterst\u00fctzen.<\/p>\n","protected":false},"featured_media":45075,"template":"","meta":{"_surecart_dashboard_logo_width":"180px","_surecart_dashboard_show_logo":true,"_surecart_dashboard_navigation_orders":true,"_surecart_dashboard_navigation_invoices":true,"_surecart_dashboard_navigation_subscriptions":true,"_surecart_dashboard_navigation_downloads":true,"_surecart_dashboard_navigation_billing":true,"_surecart_dashboard_navigation_account":true,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":""},"working-guide":[],"transformation-blocks":[59,62,65,66],"innovation-stage":[],"class_list":["post-45073","methode","type-methode","status-publish","has-post-thumbnail","hentry","transformation-blocks-organizing","transformation-blocks-scanning","transformation-blocks-exploiting","transformation-blocks-exploring"],"_links":{"self":[{"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/methode\/45073","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/methode"}],"about":[{"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/types\/methode"}],"version-history":[{"count":0,"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/methode\/45073\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/media\/45075"}],"wp:attachment":[{"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/media?parent=45073"}],"wp:term":[{"taxonomy":"working-guide","embeddable":true,"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/working-guide?post=45073"},{"taxonomy":"transformation-blocks","embeddable":true,"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/transformation-blocks?post=45073"},{"taxonomy":"innovation-stage","embeddable":true,"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/innovation-stage?post=45073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}