Projekt zu zweit programmieren, wie?

7 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Dafür benutzt man eine Versionsverwaltung. Die meistverbreitete ist Git. Damit könnt ihr sogenannte Commits erstellen, eine Sammlung von Änderungen. Eine Reihe von diesen Commits gibt euch eine History.

Warum nicht ein Cloudspeicher? Ganz einfach: Wenn das ständig hin und her synchronisiert wird, gibt es

  • zu viele Konflikte, Synchronisation stoppt
  • die Änderungen werden direkt vollautomatisch in das Projekt des anderen synchronisiert, das kann zu unvorhergesehenen Problemen führen. Ihr fragt euch dann, warum etwas nicht mehr geht, obwohl es wegen Änderungen ausgelöst wurde, die automatisch Synchronisiert wurden

Dazu: Mithilfe von mehreren Branches könnt ihr einzelne Features getrennt voneinander entwickeln, sodass ihr euch nicht die ganze Zeit Änderungen hin und her schiebt.

Beachtet: Git ist nicht einfach so zu benutzen. Es gibt zwar GUIs (zum Beispiel in eurer IDE), trotzdem braucht ihr aber das Wissen.

Zum Üben kann ich euch diese interaktive Website empfehlen: https://learngitbranching.js.org/

Damit ihr euer Projekt auch untereinander austauschen könnt, braucht ihr einen Ort, um es hochzuladen. Github wäre ein guter Ort dafür.

Tutorials dazu, wie ihr Git mit Github nutzt, gibt es auch zu genüge.

Woher ich das weiß:Berufserfahrung – Informatiker Applikationsentwicklung

Logo, ihr macht euch ein Repository z.B. auf GitHub und los gehts: https://legacy.thomas-leister.de/github-fuer-anfaenger-repository-anlegen-und-code-hochladen/

Ihr könnt gleichzeitig an den selben Dateien arbeiten, Commits mit entsprechenden Kommentaren machen (wer hat welche Änderungen gemacht), Reviews anfordern etc. etc. Einfach mal ein wenig einlesen oder auf YouTube Tutorials kucken.

Woher ich das weiß:Studium / Ausbildung – Masterstudium Elektrotechnik - Schwerpunkt Embedded Systems
Der einzig richtige Weg, gemeinsam Code zu schreiben

Wo mehrere Leute zusammen Software erstellen, geschieht das auf keinen Fall in der Weise, dass zwei oder mehr Personen in dieselbe Datei schreiben.

Was man tatsächlich macht:

Man überlegt sich gemeinsam, welche Teile (= Funktionen, Moduln) das entstehende Programm haben muss und bestimmt dann für jeden dieser Teile eine Person, die den entsprechenden Code erstellt und grob testet.

Erst wenn einer dieser Moduln noch vom Bearbeiter selbst ein erstes Mal getestet und als fehlerfrei vermutet wird, stellt man ihn in das teamweit gemeinsam genutzte Versionsverwaltungssystem. Schon bald kommt dann der Zeitpunkt, von dem ab man erstmals durch Integration von Code, den unterschiedliche Personen erstellt haben, größere Teile der entstehenden Anwendung testen kann.

|

Wichtig: Im Versionsverwaltungssysten sollten nur Teile zu finden sein, die den Status haben "der Bearbeiter denkt, dieser Teil sei bereits fehlerfrei" (relativ zur schriftlichen Spezifikation, welche definiert, was dieser Modul zu leisten hat. Auch diese Spezifikation selbst muss - vorher schon - ins Versionsverwaltungssystem gestellt worden sein: einfach deswegen, damit jeder im Team weiß,

  • was der eigen Code zu leisten hat,
  • und welche Funktionalität er vom Code anderer erwarten darf.

Ob die Bearbeiter mit ihrer Meinung, ihr Teil sei schon fehlerfrei und funktional vollständig, recht haben, kann und wird erst Integrationstest zeigen: Man versteht darunter den Test immer neuer Versionen der gesamten Anwendung bis hin zu dem Punkt, in dem alles funktioniert und fehlerfrei zusammenarbeitet.

|

Sofern Code nicht einfach nur interaktiv (über eine geeignete graphische Benutzerschnittstelle) getestet wird, muss es Testtreiber geben. Auch sie werden im Versionsverwaltungssystem aufbewahrt und mit jedem neuen Test wachsen. Es sollte dann insbesondere ein Executable test.exe geben, welches sie alle — in geeigneter Reihenfolge — aufruft und bei jedem Aufruf ein datiertes Protokoll erzeugt, aus dem hervorgeht, welche der Testfälle in jeweils welchem Modul Fehler aufgedeckt haben.

BeamerBen  21.10.2021, 12:43
Wo mehrere Leute zusammen Software erstellen, geschieht das auf keinen Fall in der Weise, dass zwei oder mehr Personen in dieselbe Datei schreiben.

Doch. Das ist falsch. Siehe meine Antwort.

0
grtgrt  21.10.2021, 17:48
@BeamerBen

Deine Antwort bezieht sich wohl auf sog. "Pair Programming". Es ist dies aber eine Methodik, die sich nie durchgesetzt hat. Propagiert wurde sie durch Wartungsprogrammierer, die dachten, damit verhindern zu können, dass fehlerhaft Code Patches entstehen, wenn ein Wartungsprogrammierer Code zu reparieren hat, den Dritte geschrieben und allzu wenig dokumentiert hatten.

0
grtgrt  21.10.2021, 17:54
@grtgrt

Wichtiges Prinzip ist: Code sollte immer durch die Person fortgeschrieben werden, welche die aktuelle Version in Versionsverwaltungssystem gestellt hat. Nur wenn sie nicht (oder nicht mehr) verfügbar ist, darf auch jemand anderes den Code fortschreiben.

0
BeamerBen  21.10.2021, 23:22
@grtgrt
  1. Ich hab den Begriff Pair Programming bewusst nicht verwendet weil so wie das teilweise durchgeführt wird es mir einfach wie eine sinnlose Produktivitätssenkende Maßnahme erscheint. Aber um Leute in etwas einzuarbeiten und Wissen weiter zu geben oder wenn es Fehler gibt bei denen sich verschiedene Bereiche überschneiden kann es stellenweise doch Sinn machen. Das ist das normalste der Welt das man Kollegen mal um Hilfe fragt wenn man nicht weiter führt und sich zusammen berät.
  2. Es sollte keine Projekte geben die ausschließlich von einer Person abhängig sind, das gilt es zu vermeiden. Grundsätzlich richtig das es Personen geben sollte die sich um bestimmte Abschnitte kümmern aber das den Code kein anderer anfassen darf halte ich für Schwachsinn.
0

Meine Güte die Antworten hier schon wieder. Hauptsache erst mal den einzig "wahren" Weg raus hauen aber dann auf die eigentliche Frage nicht eingehen.

Ich nutze kein PyCharm und kann dir daher keine konkrete Lösung bieten aber für andere Editoren wie VS Code oder Atom geht das auf jeden Fall über Erweiterungen. Bei Atom war es glaube ich sogar standardmäßig integriert und bei VS Code scheint es eine "Live Share" Erweiterung zu geben aber da ich den Editor auch nicht mehr nutze kann ich dir nicht sicher sagen ob das die beste Lösung ist.

Eine andere Möglichkeit ist so etwas wie Microsoft Teams zu nutzen, da können auch Leute über die Bildschirm teilen Funktion den PC remote steuern.

Ich würde also entweder fürs zusammen arbeiten einen anderen Editor oder Screenshare nutzen wenn ihr keine Erweiterung für PyCharm findet.

Und jetzt zu dem Teil den hier irgendwie keiner anspricht (abgesehen davon dass die eigentlich Frage nicht beantwortet wird):

Es gibt valide Gründe zusammen Code zu schreiben

Worauf hier keiner eingeht ist wann und warum man Code zusammen schreiben sollte und wann nicht, weil es gibt eben doch valide Gründe zusammen an Code zu arbeiten. Was du möchtest ist kein valider Weg um permanent zusammen zu arbeiten. Da haben die anderen völlig recht, da nimmt man eine Versions Verwaltung. Was du beschreibst nutzt man aber sehr wohl zum lernen und wenn man ein Problem hat bei dem man alleine nicht weiter kommt. Oft schreibt hier allerdings eine Person den Code und der andere schaut zu und gibt Feedback oder Ideen und dann tauscht man auch mal.

Um effektiv zusammen arbeiten zu können will man aber eher nicht Zeitgleich an der selben Datei arbeiten wenn man nicht auch wirklich aktiv an der gleichen Sache zusammen arbeitet. Das funktioniert oft nicht gut weil man sich in die Quere kommt.

Woher ich das weiß:Berufserfahrung – Software Entwickler / Devops

Wenn ihr beide nur temporär in einer Datei gleichzeitig arbeiten wollt dann gibt es ein Sessions Feature wo einer ne Session aufmachen kann der andere joined und dann seht ihr alle änderungen gegenseitig. Ansonsten falls das ganze etwas komplexer werden sollte schließe ich mich den anderen an und würde sagen um git kommt ihr nicht drum herum...

Woher ich das weiß:Hobby – Ich Programmiere seit 3,5 Jahren mit Python