Programmieren mit einer Gruppe von Leuten, die ich noch nie getroffen habe

50

Ich habe ein Gruppenprojekt aus meiner AP-Informatikklasse erhalten und muss mit drei anderen Personen zusammenarbeiten. Ich habe noch nie mit ihnen gesprochen, ich habe keine Ahnung, wie gut sie sind, und alles, was ich habe, ist ihre E-Mail-Adresse. Zusammenfassend lautet die Aufgabe wie folgt:

"Als Team absolvierst du mindestens drei Module in einer Klasse ..."

Ich werde versuchen, "Mannschaftskapitän" zu werden, weil keiner von ihnen versucht hat, sich gegenseitig zu kontaktieren, aber ich bin neugierig: Wie soll ich vorgehen? Ich habe ihnen eine E-Mail geschickt und sie gefragt, ob es Kommunikationsmethoden gibt, die sie einander vorziehen, aber sobald wir das Projekt tatsächlich starten, muss ich herausfinden, wer was tut.

Was soll ich machen? Wie übernehme ich die Verantwortung und führe drei Personen, die ich noch nie getroffen habe?

Hier ist ein Auszug aus der eigentlichen Aufgabe:

Daher müssen Sie zu Beginn der Woche die verschiedenen Rollen besprechen, die jedes Teammitglied in diesem Projekt einnehmen wird. Sie können über Pronto (oder Blackboard IM), E-Mail, ein Wiki, eine Google-Gruppe, einen Blog oder eine andere Methode kommunizieren, die Sie für richtig halten. Wenn ein Gruppenmitglied die Gruppe bis zum Ende der Woche nicht einbezieht, teilen Sie dies Ihrem Kursleiter mit, und er wird Sie zusätzlich beraten.
...
Am Ende eines Projekts steht auch eine Teambewertung an, in der Sie den Beitrag jedes Teammitglieds zum Abschluss dieses Projekts zusammen mit einer empfohlenen Note bewerten.

Edit: Viele Leute schlugen vor, dass ich sie in einem Café oder so etwas treffe. Das einzige Problem ist, dass wir uns alle in verschiedenen Zuständen befinden. Ich habe auch herausgefunden, dass einer von ihnen Facebook / Skype / Twitter nicht benutzen darf, also muss ich auf das Versenden von Nachrichten über Yahoo Messenger und E-Mails zurückgreifen.

Gabriel
quelle
10
Wie wäre es mit "mit diesen Leuten reden", "sie kennenlernen", "hören, was sie von diesem Projekt wollen" und "mit deinem Verstand nachdenken", anstatt SE nach dem Weg zu fragen ... kann es dir nicht geben? Niemand hier kennt sie. Ich meine, wenn sie eine Verhaltensstörung hätten und wenn sie in einer Machtposition wären, könnte es Sinn machen, nach dem Weg zu fragen ... aber das sind nur Leute wie Sie. Du bist in einer Sandkiste: Zeit, Dinge herauszufinden.
ZJR,
6
@zjr Wer hat deine Gans verbrannt? Natürlich arbeite ich mit ihnen und versuche Dinge herauszufinden. Aber ich wollte einige Ratschläge von Leuten bekommen, die diese Aufgabe schon einmal erledigt haben, anstatt dieses Projekt nur blind zu machen. Die Leute erwähnten auch einige großartige Projektmanagement-Anwendungen und ich lernte ein paar neue Sachen.
Gabriel
2
@ ZJR Ich bin mir nicht sicher, ob das der Sinn seiner Frage ist. Obwohl er sagte, dass er vorher noch nicht wirklich mit ihnen kommuniziert habe, bezog er sich auf dieses Programmierprojekt und darauf, wie er mit dem Team umgehen sollte, mit dem er zu tun hatte.
Jarrod Nettles

Antworten:

90

Der Leiter dieses Projekts wird die Person sein, die zu Beginn das Kommando übernimmt .

Dies gilt für die meisten Dinge im Leben - nicht nur für die Softwareentwicklung. Wenn alle anderen wie Hühner ohne Kopf herumlaufen, tritt die Person, die über die Dinge nachdenkt, vor und sagt: " Das werden wir tun und so werden wir es tun ." In der Regel wird die Person als Leiter für den Rest des Projekts angesehen. Denken Sie daran, dass Sie auf diese Weise die Verantwortung für den endgültigen Erfolg oder Misserfolg des Projekts übernehmen.

Sie möchten dieses Projekt leiten? Hier sind ein paar Dinge, mit denen Sie sofort beginnen können , um eine große Wirkung zu erzielen.

  1. Verwenden Sie ein Projektmanagement-Tool wie Trello und senden Sie Einladungen an alle und beginnen Sie, Teile des Projekts an andere Personen zu vergeben.
  2. Generieren Sie eine Fehlerdatenbank und fügen Sie Aufgaben und Fehler hinzu. Beginnen Sie erneut mit der Zuweisung.
  3. Richten Sie ein Versionskontroll-Repository ein und checken Sie einen guten ersten Codeabschnitt ein, mit dem jeder arbeiten kann. Keine andere Form der Code-Kontrolle zulassen.
  4. Bieten Sie an, den Entwicklern den Einstieg in die Entwicklung zu erleichtern, indem Sie ihnen die Verwendung des Versionskontrollsystems und der Fehlerdatenbank zeigen.
  5. Versenden Sie wöchentliche E-Mails, in denen der Projektstatus und der Fortschritt der Vorwoche aufgeführt sind.

Keiner dieser Schritte ist besonders anstrengend oder zeitaufwändig, aber sie sparen viel Zeit . Darüber hinaus wird Ihr Team miteinander sprechen und sich daran gewöhnen, Sie als Verantwortlichen zu sehen.

Jarrod Brennnesseln
quelle
17
Wenn zwei Teammitglieder diesen Ansatz versuchen, seien Sie vorsichtig. Ein Kampf um Kontrolle und Führung kann eine Katastrophe sein - weitaus schlimmer als ein Haufen von Nichtstun-Teamkollegen.
Corbin März
3
@CorbinMarch Einverstanden. Dies funktioniert nur, wenn es im Team eindeutig an Führungsqualitäten mangelt - jeder wartet darauf, dass jemand anderes die Dinge in Gang bringt. Wenn bereits eine andere Person als Führungskraft auftaucht, können Sie für Ihr Projekt am besten hinter diese Person treten und sie unterstützen.
Jarrod Nettles
4
Nachdem ich das gelesen hatte, habe ich Trello ausprobiert und war sofort von seiner Einfachheit verführt. +1 für den Link. Wenn es eine Möglichkeit gibt, dieses Ding lokal zu installieren, wäre es die perfekteste ...
Radu Murzea
2
The leader of this project will be the person who steps up and takes charge at the beginning.Alle
begrüßen
5
Wie wäre es, wenn Sie sie erst einmal in einem Café treffen? Wie werden Sie ihnen Aufgaben zuweisen, wenn Sie keine Ahnung haben, welche Fähigkeiten sie haben? Persönlich mag ich es nicht, E-Mails "Hier ist Trello, hier ist ein Bug-Tracker und hier sind Ihre Aufgaben" zu erhalten, ohne vorher jemanden zu treffen.
Simon
24

Die Antwort von Jarrod Nettles fasst ziemlich viel zusammen, was ich vorschlagen wollte, also werde ich einige meiner jüngsten Erfahrungen in einer ähnlichen Situation einfließen lassen.

Ich würde vorschlagen, einen Weg zu finden, um mit ihnen zu sprechen, anstatt per E-Mail. Wenn Sie sich nicht in derselben Region befinden, können Sie alle über Skype abrufen. Wenn Sie in der Gegend sind, treffen Sie sie in einem Café oder so. Wenn Sie in ersten Besprechungen persönlich sprechen, werden Sie tatsächlich Entscheidungen treffen und die Arbeit dann und dort erledigen. E-Mail-Threads ermöglichen es schüchternen oder häufig nicht am Computer arbeitenden Personen, den Prozess zu unterbinden - wir alle wissen, wie faul Schüler sein können!

Bei Ihrem ersten Treffen würde ich versuchen, Ihre Gruppe besser kennenzulernen, als Sie versucht haben, mit dem Projekt weiterzumachen - aber ignorieren Sie das Projekt nicht! 10 oder 20 Minuten Eis brechen ist wahrscheinlich genug unter 4 Personen.

Wenn es darum geht, über das Projekt zu sprechen, würde ich vorschlagen, das durchzuarbeiten, was Ihrer Meinung nach das Projekt beinhaltet. Ich denke, es ist wichtig, dass Sie klarstellen, dass dies Ihr Verständnis ist und nicht, dass Sie ihnen genau sagen, was sie tun sollen. Jeder sollte in der Lage sein, seine Gedanken und Ideen in den Ring zu werfen, wenn er welche hat, und Sie sollten von diesem ersten Treffen mit einem angemessenen Verständnis davon wegkommen, was Sie als Gruppe mit dem Projekt zu tun haben.

In zukünftigen (regelmäßigen) Besprechungen können Sie verschiedene Teile des Projekts genauer betrachten. Sehen Sie sich an, was genau getan werden muss, welche Ressourcen und wie viel Zeit benötigt werden und wer was tun kann. Teilen Sie das Stück bei Bedarf weiter auf. Vielleicht versuchen Sie ein paar weiche Fristen zu setzen?

Andy Hunt
quelle
4
+1 für die Erwähnung des Sprachkontakts. Persönlich ist am besten, Videochat am besten, Telefonkonferenz noch besser als nur Mail.
Barend
@andybursh Leider darf ein Schüler nicht einmal Facebook verwenden. Also kommt Skype nicht in Frage ... hoffentlich können wir Dinge durch Text herausfinden.
Gabriel
10

Hat einer von Ihnen Erfahrung in der Arbeit mit einer Gruppe von Menschen, die Sie noch nie online getroffen haben und die Sie nicht persönlich kennenlernen können, sondern die ein Projekt gemeinsam abschließen müssen?

Fügen Sie unterbewusste, lächerliche Fristen hinzu und lassen Sie sich durch Marketing den Fluss runter verkaufen. Das klingt nach ungefähr 65% der Softwareentwicklungsprojekte in der realen Welt.

Sie sind wahrscheinlich am besten bedient, wenn Sie Leute dazu bringen, sich freiwillig für Teile zu melden, an denen sie interessiert sind, anstatt einseitig die Verantwortung zu übernehmen und Aufgaben zuzuweisen. Sie sitzen wahrscheinlich alle da und überlegen, wie sie die Verantwortung übernehmen sollen. Oder wie sie einen armen Kerl kriegen können, der sich zu sehr um die Gruppenarbeit kümmert, damit sie in seiner Klasse fahren können.

Wyatt Barnett
quelle
2
Sie haben vergessen, dass viele von uns mit Offshore-Teams zusammenarbeiten müssen, die wir noch nie zuvor getroffen haben.
maple_shaft
7

In solchen Fällen müssen Sie zunächst einen Issue-Tracker einrichten und dessen Verwendung erlernen.

Für eine grundlegendere Einführung in den Umgang mit Entwicklungen, wie Sie sie beschreiben, gilt meine Lieblingsreferenz für Martin Fowlers Artikel Verwenden eines agilen Softwareprozesses mit Offshore-Entwicklung . Dieser Artikel beschreibt die Grundlagen und fortgeschrittenen Konzepte zum Einrichten der verteilten Teamkommunikation:

Use Continuous Integration to Avoid Integration Headaches
Have Each Site Send Ambassadors to the Other Sites
Use Contact Visits to build trust
Don't Underestimate the Culture Change
Use wikis to contain common information
Use Test Scripts to Help Understand the Requirements
Use Regular Builds to Get Feedback on Functionality
Use Regular Short Status Meetings
Use Short Iterations
Use an Iteration Planning Meeting that's Tailored for Remote Sites
When Moving a Code Base, Bug Fixing Makes a Good Start
Separate teams by functionality not activity
Expect to need more documents.
Get multiple communication modes working early

Für Ihr Projekt werden Sie sicherlich nicht in der Lage sein, alle dort genannten Tipps und Tricks zu befolgen (z. B. gibt es wahrscheinlich keine Botschafter oder Kontaktbesuche für Sie :), aber es lohnt sich trotzdem zu studieren.

  • Für viele Teams wäre es mit Sicherheit ein Overkill, alle oben genannten Punkte zu haben. Trotzdem finde ich es sehr hilfreich, eine solche umfassende Checkliste zu haben - damit auch übersprungene Elemente überprüft und die Gründe für die Ablehnung klar dokumentiert werden -, nur um sicherzustellen, dass nichts Wichtiges übersehen wurde.
Mücke
quelle
6
Ich stimme diesen Punkten zu, aber sein Team kommt nur für eine sehr kurze Zeit zusammen, und die meisten dieser Vorschläge wären ein schwerer Overkill für das, was er braucht. Sehr gut anwendbar, um festangestellte Teams voranzubringen.
Jarrod Nettles
@ JarrodNettles, das ist ein guter Punkt, danke - Ich habe die Antwort aktualisiert
Mücke
3
... ja, lasst sie uns in die Hölle der Bürokratie treiben, anstatt sie irgendeinen echten Code produzieren zu lassen. Bitte.
ZJR,
1
@ZJR Wie ich bereits sagte, ist seine Liste für diese Art von Projekt wenig umfangreich, aber eine ordnungsgemäße Team- und Codeorganisation ermöglicht es ihnen, Arbeitscode zu produzieren , anstatt nur Code auf ihren Bildschirmen.
Jarrod Nettles
@ZJR gut für die von Fowler aufgelisteten Sachen, ich bevorzuge eher "bürokratische" Standards. Idee , meine eigenen , kreativen Wege zu erfinden , um Fehler zu verfolgen, Code - Änderungen und Aktien Team Wissen integriert irgendwie gerade nicht leuchtet mein Feuer
gnat
5

Sie haben uns nicht gesagt, wie viel Zeit Sie dafür haben oder in welcher Sprache Sie arbeiten (ich würde sagen, eine einzelne Klasse ist sehr klein, aber in Ihrer Sprache ist es vielleicht viel mehr).

Zuallererst ein funktionierendes Produkt um jeden Preis.

Wenn das Projekt zwei Wochen oder weniger dauert, gehen Sie davon aus, dass Sie der Einzige sind, der etwas unternimmt, und freuen sich über jede Hilfe, die Sie erhalten. Versuchen Sie Dinge für alle zu planen, aber stellen Sie sicher, dass Sie immer noch ein funktionierendes Produkt haben, wenn niemand etwas tut. Auch wenn jemand etwas tut, verlassen Sie sich nicht darauf, dass er weitermacht: Seien Sie darauf vorbereitet, dass jeder jederzeit aussteigt.

Wenn Sie mehr als eine Woche haben, planen Sie einen Wochentag, an dem das Produkt als Meilenstein markiert werden soll, und halten Sie sich so weit wie möglich daran. Stellen Sie sicher, dass Sie etwas haben, das Sie ausprobieren können, und überprüfen Sie die Mängel von: Wenn das Schlimmste zum Schlimmsten kommt, geben Sie es ab. Bei jedem, das Sie erstellen, werden Sie sehen, wie viel Sie verbessern können, was Sie motivieren wird, zu gehen auf. Planen Sie nicht zu weit voraus: Sicher, Sie müssen eine Vorstellung davon haben, womit Sie enden werden, aber Ihre spezifischsten Pläne sollten kurzfristig sein.

Beachten Sie, dass sich diese beiden Bereiche ein wenig überschneiden: Dies ist beabsichtigt, da zwei Wochen meiner Meinung nach eine Art Grauzone sind, in der es schwierig ist, zwei Iterationen durchzuführen, aber nur in einer Iteration zu arbeiten, ist riskant.

Ich gehe vom schlimmsten Fall aus, in dem Sie mit Leuten zusammenarbeiten, die in der Programmierung noch sehr neu sind. Mein allgemeiner Rat wäre:

  • Behalten Sie eine Liste der Funktionen, die Sie bald implementieren möchten, und wer daran arbeiten wird. Jarrod schlug Trello vor, und das unterstütze ich voll und ganz: Wenn Ihre Teamkollegen nicht sehr erfahren sind, wird es viel helfen. Sie könnten auch versuchen, die Käfer dort zu behalten.
  • In einem Team von vier Personen benötigen Sie eine Versionskontrolle. Es kann andere zögern, Beiträge zu leisten, wenn sie nicht wissen, wie sie zu leisten sind, aber es lohnt sich.
  • Alle externen Abhängigkeiten können Neulinge abschrecken. Wenn Sie Komponententests schreiben, sagen Sie den Leuten, dass sie sich keine Sorgen machen sollten, sie zu beschädigen. Sagen Sie den Leuten, dass sie sich keine Sorgen machen sollten, den Build zu brechen, besonders am Anfang. Es ist viel schwieriger, Leute zu korrigieren, die keinen Code schreiben, als solche, die fehlerhaften Code schreiben.
  • Prüfen Sie, ob die hier vorgeschlagenen Dinge wirklich auf Sie zutreffen. "Kontinuierliche Integration" ist ein ausgefallener Begriff - für ein kleines Programm kann dies bedeuten, dass "dieses Programm ausgeführt wird und alle Funktionen verwendet werden können". Hast du überhaupt Websites? Hilft Ihnen die Aufteilung in Teams?
  • YAGNI, hundertmal vorbei. Wenn Sie wirklich müssen, schreiben Sie die Dinge im Voraus für die Funktionen, die Sie selbst erstellen werden. Lass es funktionieren und überarbeite es dann, sonst kommst du nicht dazu, es zum Laufen zu bringen.
  • Refactor. Nehmen Sie sich etwas Zeit, um das Problem zu beheben. Vergessen Sie nicht, dass Ihre Teamkollegen auch Ihren Code lesen müssen: Ein Tag, an dem Sie hässliche Teile reparieren und einfache Lösungen durch leistungsfähigere ersetzen müssen, ist keine Verschwendung.
  • Alle Teile im Auge behalten. Indem Sie Änderungsprotokolle überfliegen und gelegentlich den Code anderer lesen, stellen Sie sicher, dass alles den Qualitätsstandards entspricht, die Sie durchsetzen sollten, und stellen Sie sicher, dass es nicht so schwer ist, sich auf das Problem einzulassen, wenn die Person ausfällt.
  • Zögern Sie nicht, an dem Wichtigsten zu arbeiten, im Gegensatz zu dem, was Sie sich vorgenommen haben. Wenn jemand hinter dem Zeitplan zurückfällt, notieren Sie dies irgendwo und machen Sie es selbst. Fragen Sie sie zuerst, aber fahren Sie fort, wenn sie nicht antworten oder wenn Sie ein- oder zweimal fragen und dann das Gefühl haben, dass sie es immer noch nicht tun.
  • Konzentriere dich darauf, etwas zu machen, auf das du stolz bist. Auch wenn es von der Zuordnung abweicht. Auch wenn Sie große Features abschneiden müssen, um das, was Sie haben, flüssiger zu machen. Denken Sie bei jeder Iteration an "Bin ich stolz darauf?", Und versuchen Sie bei der nächsten Iteration, diese Probleme zu beheben.

Ich hatte ein Projekt, das in letzter Zeit schrecklich gescheitert ist. Sie können meine Gedanken darüber lesen, warum es fehlgeschlagen ist, wenn Sie möchten, aber dies fasst zusammen, wie ich so etwas tun würde, wenn ich noch eine Chance dazu hätte.

Anton Golov
quelle
Interessant zu lesen, ich war in ähnlichen Situationen und es scheint, dass einige der Fehler sehr häufig sind
Joe Taylor
4

Die Antwort von Jarrod Nettles ist gut. Ich würde das hinzufügen:

  1. Erwarten Sie, dass mindestens eine der anderen drei Personen völlig unbrauchbar sein wird.
  2. Akzeptieren Sie einfach, dass Sie das Gefühl haben, den größten Teil (oder die gesamte) Arbeit zu erledigen, aber jeder wird gleich gutgeschrieben. Jeder Versuch, Dinge "fair" zu machen, wird nur unnötige Konflikte verursachen und Sie verlangsamen.
  3. Bleiben Sie in Kontakt mit allen Teammitgliedern, die gut sind. Solche Leute sind schwer zu finden, und Sie werden wieder mit ihnen arbeiten wollen.
Kristopher Johnson
quelle
Ich würde mit Ihren ersten beiden Punkten nicht einverstanden sein. Erwarten Sie nicht das Schlimmste von Menschen, sonst bekommen Sie es. Sie werden Ressentiments entwickeln und möglicherweise die Unterstützung nützlicher Teammitglieder verlieren, wenn diese Ihre Verachtung bemerken. Die Betreuung eines Kindes, das mit der Sprache nicht vertraut ist, kann eine großartige Erfahrung sein und Ihre Arbeitsbelastung verringern. (Halten Sie jedoch Ausschau nach Blutegeln, die sich weigern, nachzudenken.) Außerdem verfügt das Projekt über eine "Teamevaluierung", damit jeder, der die Arbeit ausführt, Anerkennung erhält. (Oder wer auch immer dafür gesorgt hat, dass sich jeder wie Dreck fühlt, bekommt nichts.) Seien Sie brutal ehrlich und sorgen Sie sich nicht, dass der Typ, der nichts getan hat, versagt. Es ist nur fair zu Ihrem Team.
idbrii
3

Ich war ein paar Mal in einer ähnlichen Position, da ich sicher eine Menge Leute habe. Das Wichtigste ist jedoch, dass Sie Ihr Bestes geben, um alle zufrieden und zufrieden zu stellen. Ich finde es daher gut, dass Sie die Aufgabe eines Teamleiters übernehmen möchten, wie auch immer jemand, der oben erwähnt wurde - dies muss sorgfältig als jemand anderes angegangen werden Vielleicht haben sie das Gefühl, sie sollten stattdessen den Job machen.

Ich weiß, dass Sie gesagt haben, dass niemand es auf sich genommen hat, miteinander in Kontakt zu treten, aber manchmal können diese Situationen für Menschen schwierig sein, wie Sie sagten, Sie arbeiten mit Menschen, die Sie noch nie getroffen haben, und es kann schwierig sein, sich zu verständigen usw.

Ich würde mit einer E-Mail beginnen, in der ich alle anspreche und ihnen mitteile, wer Sie sind, wie Sie das Projekt ansprechen möchten, und ihnen mitteilen, dass Sie das Projekt leiten möchten, indem Sie die Verantwortung für die Festlegung von Rollen, Zielen, Fristen, Kommunikationszeiten und Meetups übernehmen ( wenn gewünscht / gewünscht) und Projektupdates.

Obwohl Sie andere Menschen nicht vollständig beeinflussen können, können Sie verfolgen, wer was tut und wer nicht. Durch das Delegieren von Jobs kann die Arbeit gleichmäßig oder angemessen auf Personen mit unterschiedlichen Fähigkeiten oder Niveaus aufgeteilt werden.

Auf diese Weise können Sie, wenn bestimmte Arbeiten nicht ausgeführt werden, die Arbeit auf die Personen verteilen, die tatsächlich daran arbeiten möchten. Auf diese Weise erhalten Sie am Ende kein fehlgeschlagenes Projekt, und Sie haben Aufzeichnungen darüber, wie Sie versuchen, Daten, Zeiten und alle relevanten Informationen zu kommunizieren, die Sie am Ende anzeigen können, wenn etwas schief geht. ALLE Dinge, die Sie auf dem Laufenden halten, wenn manche Leute nicht ihr Gewicht verlieren.

In Bezug auf Tipps:

Ich persönlich liebe eine kollaborative Arbeitsumgebung, die hier zu finden ist: https://docs.google.com/

Auf diese Weise können Sie Word-Dokumente, Tabellenkalkulationen usw. gemeinsam nutzen. Ich kann nicht betonen, wie nützlich das manchmal ist. Ich benutze es mit einigen Leuten, mit denen ich arbeite und die gerade nicht im Land sind.

Ich hoffe, das hat jemandem geholfen. Es gibt so viele Aspekte bei der Leitung eines Projekts, dass wir für immer weitermachen könnten, aber es hängt einfach von so vielen Dingen ab. Zumindest ist dies ein kleines bisschen zu helfen.

Nils
quelle
Willkommen bei P.SE! +1 für die Beratung hier. Guter Rat.
Jarrod Nettles