Tipps / Tricks zum Verwalten eines neuen Teams mit neuem Code [geschlossen]


9

Wie gehen Sie mit sich selbst in einem neuen Team um, in dem Sie der älteste Entwickler sind und die meisten anderen im Team mehrere Jahre jünger als Sie sind? Die Aufgabe vor dem Team hat noch niemand in Ihrer Karriere zuvor erfüllt.

Das Management besteht auf einer höheren Produktivität des gesamten Teams, und als leitender Entwickler sind Sie verantwortlich.

Irgendwelche Tipps, um in einer solchen Situation Trümpfe herauszuholen? Natürlich braucht das gesamte Team Zeit zum Lernen und wir dürfen die neuen des Teams nicht vergessen. Aber auch die Fristen stehen vor der Tür ...


Sollte auf pm.stackexchange.com sein
JBRWilkinson

5
@JBRWilkinson Ich bin anderer Meinung. Hier geht es darum, ein technischer Vorsprung von Nachwuchsentwicklern mit einer engen Frist zu sein. Ich würde zustimmen, wenn es darum geht, ein Projekt von Nachwuchsentwicklern zu verwalten, aber ein technischer Leiter zu sein, ist etwas anderes als ein PM zu sein.
maple_shaft

Antworten:


13

Lassen Sie sich nicht von einer engen Frist oder der Neuheit des Projekts in die gute Ingenieurspraxis einmischen. Richten Sie ein Software-Repository ein, stimmen Sie einem Codierungsstil zu, erstellen Sie eine Testsuite usw. Die Neuheit der Aufgabe sollte keine große Rolle spielen, solange Sie qualifizierte Mitarbeiter unter sich haben, die dazu bereit sind arbeite hart und lerne die vor ihnen liegende Aufgabe.

Oder anders ausgedrückt: Sie wurden beauftragt, weil das Management der Ansicht ist, dass Ihr Hintergrund und Ihre Erfahrung Ihnen die Tools gegeben haben, die zum Erstellen hochwertiger Software erforderlich sind. Vergessen Sie nicht plötzlich Ihre Fähigkeiten, nur weil diese Aufgabe jetzt entmutigend erscheint.


Stellen Sie sicher, dass jeder im Team die Möglichkeit hat, alle Aufgaben zu schätzen, die ihm zugewiesen werden sollen, damit er sich innerhalb der Fristen einkaufen kann. Da Ihr Team immer noch die Seile lernt, verpflichten Sie niemanden länger als fünf Stunden pro Tag, wenn Sie die Schätzungen in eine verstrichene Zeit umwandeln. Und wenn die Fristen nicht eingehalten werden können, stellen Sie sicher, dass das Management so schnell wie möglich davon erfährt.
Dawood ibn Kareem

1
@ David - Wie hast du 5 Stunden trainiert (Es ist eigentlich keine schlechte Zahl, aber woher wissen wir das)? Geben Sie einfach zu, dass die Schätzung eines solchen Projekts ein Mist ist, und sagen Sie es dem Management.
Mattnz

3
Ich gehe davon aus, dass die meisten Menschen etwa 6 bis 6,5 Stunden pro Tag produktiv sind. Einige schaffen mehr als das, aber ich denke, das ist ein guter Durchschnitt. Da das Team neu ist, wird mindestens eine Stunde am Tag für das Lernen aufgewendet. Und ich glaube an Einschätzung - obwohl nicht jeder gut darin ist, muss es besser sein, als nur einzuspringen und zu programmieren, ohne zu wissen, wie lange eine Aufgabe dauern wird.
Dawood ibn Kareem

Es ist hilfreich, sich einzukaufen, wenn Sie die Teammitglieder dazu bringen, ihre Schätzungen zu entwickeln, bevor sie die geplante Zeit sehen, und sie den Plan nicht wesentlich überschreiten. Wenn Sie sie schätzen lassen, bevor Sie andere Schätzungen sehen, wird auch vermieden, dass die Schätzung verzerrt wird.
BillThor

@ BillThor: Sicherlich bringt man den Kerl dazu, die Arbeit zu schätzen, und verwendet seine Zahlen als Ausgangspunkt. Ich habe gerade einen Job geschätzt und bekam die Nachricht "Wir dachten, es wäre 1/3 davon". Warum haben sie mich überhaupt gefragt, ob sie wüssten, wie lange es dauern würde?
Mattnz

7

Beginnen Sie zuerst mit der Verwendung eines Quellcode-Steuerungssystems ab der ersten Codezeile. Gewöhnen Sie sich an, Code früh und häufig einzuchecken.

Zweitens entscheiden Sie sich für eine Teststrategie . Das sollte natürlich Unit-Tests bedeuten, aber Sie sollten auch überlegen, wie Abnahmetests automatisiert werden können.

Drittens richten Sie einen kontinuierlichen Integrationsserver ein, damit Ihr Code regelmäßig erstellt und regelmäßig getestet wird.

Sobald Sie das haben, legen Sie als Team einige einfache Codierungsstandards fest . Sie möchten, dass Ihr Code für alle leicht lesbar ist. Es ist nicht wirklich wichtig, was die Standards sind. Einrücken mit Tabulatoren, Einrücken mit Leerzeichen, geschweifte Klammer in derselben Linie, was auch immer. Es ist egal, was sie sind, nur dass jeder sie konsequent anwendet.

Da das Team hauptsächlich aus Nachwuchsentwicklern besteht, sollten Sie den Code häufig überprüfen , um sicherzustellen, dass Ihrem System nicht zu viele technische Schulden entstehen.

Erwägen Sie schließlich die Verwendung von SCRUM . Wenn Sie dies tun, mieten Sie einen Trainer oder gehen Sie zu einem Training. Da Sie alle etwas tun, was Sie noch nie getan haben, ist es einfach unmöglich, realistische Fristen festzulegen. Mit SCRUM hat Ihr Management Einblick in Ihre täglichen Aktivitäten, sodass es sehen kann, welche Fortschritte erzielt werden (oder nicht). Und da Ihre Fristen anscheinend Ihnen gegeben wurden, garantiert SCRUM zumindest, dass Sie, wenn Sie die Frist nicht einhalten können, zumindest abgeschlossene Geschichten schrittweise liefern, was wohl besser ist, als mit einem Riesen zum Ende zu kommen System, das überhaupt nicht funktioniert.


2
+1 für Versionskontrolle und Codeüberprüfung früh und häufig.
JMQ

2
Ich bin der Meinung, dass die Quellcodeverwaltung so notwendig ist, dass sie unabhängig von der Zusammensetzung des Teams und von allem durchgeführt werden sollte.
maple_shaft

6

Zusätzlich zur Antwort von @chrisaycock ... Unterschätzen Sie nicht die Zeit, die Sie für Mentoring / Training usw. benötigen. Als Lead müssen Sie lernen, die Details loszulassen und Ihrem Team zu vertrauen. Ihre Aufgabe ist es, der Enabler zu werden, Straßensperren zu entfernen und Störungen zu verursachen, wenn das Management dort einspringt. In einem "normalen" Team, bei etwa 7 oder 8, programmiert der Lead nicht mehr. In Ihrer Situation sinkt dieser Wert auf 3 oder 4 (vielleicht sogar weniger), Sie sind keine Programmierressource für das Projekt.


+1 für die Zuweisung von Zeit für Mentoring und Training. Ein effektiver technischer Vorsprung macht Nachwuchsentwickler produktiv.
maple_shaft

"Sie sind keine Programmierressource für das Projekt". Ich frage mich, ob es seinem Management genauso geht, heh. Ich hoffe, Sie werden nicht zum "Helden" -Programmierer für das Projekt.
JMQ

Ich hatte den Eindruck, dass das OP einfach der älteste Entwickler war und keine besonderen Titel oder Pflichten hatte (dh er ist kein "technischer Leiter" oder "Architekt"). In diesem Fall ist er mit Sicherheit eine Entwicklungsressource und wird wahrscheinlich die produktivste sein.
TMN

@TMN: Ich habe die Realität reflektiert, was in einem Team mit einem qualifizierten / erfahrenen Mann und allen anderen deutlich weniger qualifizierten passiert. Zweifellos ist der erfahrene Typ, wenn er codiert, der produktivste und wird voraussichtlich codieren. Das TEAM wird am produktivsten sein, wenn er es nicht tut. In einer nicht aufgeklärten Organisation messen Manager die individuellen Leistungen, sodass der Top-Typ schlecht aussieht, wenn er das Beste tut - das TEAM leistungsfähig macht und dafür wenig Belohnung erhält. Er ist besser, die Junioren trocken aufzuhängen und sich großartig aussehen zu lassen.
Mattnz

1

Konzentrieren Sie sich auf die Kommunikation in zwei Bereichen.

Es ist nicht einfach, dies zu tun, und das ist ein Grund, warum dieser Job schwierig ist. Wenn das Einhalten der Frist das Schneiden von Funktionen bedeutet, gehen Sie darüber hinaus. Das einzige, was Sie bei all dem vermeiden möchten, ist ein schneller Code, um eine Frist festzulegen. Dies ist der Anfang vom Ende einer Codebasis, die nicht gut hält, und der Beginn einer technischen Verschuldung, die erstickt.

2) Kommunikation zwischen Teams. Richten Sie formelle Praktiken ein, wie sie Bryan und andere empfehlen. Stellen Sie sicher, dass Sie sich regelmäßig als Team treffen, z. B. einmal pro Woche zusätzlich zu den täglichen Scrums. Gewinnen Sie Respekt und Vertrauen, indem Sie zuhören , Ihrem wichtigsten Werkzeug. Stellen Sie sicher, dass Sie sich darauf konzentrieren, zu helfen. Vermeiden Sie negative Kritik um jeden Preis. Verwenden Sie bei Bedarf positive Kritik und Ermutigung, z. B. "Das ist großartig. Wenn Sie einmal X in Betracht ziehen möchten, ist dies nicht das, was wir brauchen. Sie müssen stattdessen X tun."


0

Was ich getan habe, ist die fähigen zu identifizieren und zu teilen und zu erobern. Ich nehme die Top 2 oder 3 und mache sie zu Kapitänen. Die anderen werden dann gleichmäßig in Teams aufgeteilt, die den Kapitänen zu ihren eigenen kleinen Teams folgen.

Ich gebe den Kapitänen Chunks oder Module für ein Programm.

Die Kapitäne geben den Neulingen kleinere Programmier- oder Forschungsaufgaben, während sie sich selbst erklären, was sie tun, damit Mentoring währenddessen stattfindet.

Ich versuche, den Raum so zu gestalten, dass sich jeder im selben offenen Raum befindet, aber jedes Team seinen eigenen Computerkreis hat. Ich mag es, in schreiender Entfernung zu allen zu sein, damit sich die Dinge schnell bewegen.

Dies funktioniert bisher für etwa 10-20 Programmierer gut. Die kleineren Gruppen sind einfach besser in einer Gruppe zu sein und ich habe noch mit nichts Größerem gearbeitet.


Divide & Conquer hat seine Tücken. Ich habe gesehen, dass jedes Subteam das Rad (schlecht) für ähnliche Probleme neu erfunden hat, mit denen das gesamte Team konfrontiert ist.
NWS

Ja, besonders wenn Sie sich in separaten Gebäuden befinden, versuche ich, alle an einem offenen Ort zu halten und regelmäßig herumzulaufen. Was ich tue, ist, Kern-API-Signaturen zu erstellen und die Teams darauf vorzubereiten, sie so zu erstellen, dass alles eine Verbindung herstellt.
Jason Sebring
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.