Wie soll ich ein Team mit unterschiedlichen Fähigkeiten führen?


15

Ich werde mit einigen Freunden an einem Softwareprojekt arbeiten, und ich wurde zum technischen Leiter ernannt. Keiner dieser Leute ist ein schlechter Programmierer, aber ich habe bedeutend mehr Erfahrung als sie. Ich muss in der Lage sein, die Arbeit auf alle im Team zu verteilen und gleichzeitig darauf zu achten, dass wir einander nicht auf die Zehen treten. dass sie den relativ hohen Qualitäts- und Skalierungsstandards entsprechen, die wir für den Erfolg dieses Projekts benötigen, ohne dass ich alles überprüfen muss, was sie tun.

Wie soll ich Standards einhalten und gleichzeitig Mikromanagement vermeiden? Reicht es aus, ein paar Diagramme zu erstellen, einige Codeüberprüfungen zu planen und darauf zu vertrauen, dass ich in der Lage bin, alles zu reparieren, was möglicherweise kaputt geht, oder sollte ich die TDD-Route einschlagen und explizite Tests schreiben, die das Team erfüllen muss?


11
Gibt es ein Team mit den gleichen Fähigkeiten?
P. Brian Mackey

@ P.Brian.Mackey: Ich meine ganz anders.
Jon Purdy

@ Jon: Ich hoffe wirklich, dass Sie wissen, worauf Sie sich einlassen. Stellen Sie sicher, dass sie von Anfang an Schweinefleisch im Angebot haben (!). Ich habe das vage Gefühl, dass Sie jemanden brauchen, der viel Erfahrung mit Ihnen hat, wenn er anscheinend nicht einmal Unit-Tests schreiben kann und (!) Nicht herausgefunden hat, wie man das alleine macht: Es führt Ich denke, dass Sie vielleicht ihre Fähigkeiten überbewerten. Es erübrigt sich zu erwähnen, dass es keine gute Projektmanagement-Technik ist, mehr Kompetenz vorauszusetzen als dies der Fall ist.
Henrik

@Henrik: Ich weiß, worauf ich mich einlasse, ich habe nur wenig Erfahrung im Umgang mit anderen Entwicklern und möchte Ratschläge dazu erhalten, wie ich einen reibungslosen Ablauf sicherstellen kann. Ich habe volles Vertrauen in ihre Fähigkeiten, und ich denke, die Leute lesen in meiner Frage viel mehr Negativität, als ich es tatsächlich gesagt habe. Ich habe gerade etwas mehr als die Hälfte meines Lebens mit dem Programmieren verbracht, also habe ich bereits viele Fehler gemacht, auf die diese Jungs mit zwei bis drei Jahren Erfahrung noch nicht gestoßen sind.
Jon Purdy

Ist für eine Firma oder ein Nebenprojekt?
Marcie

Antworten:


10

Sie sollten einige ihrer Codes überprüfen und sich gegenseitig überprüfen lassen. Sie möchten nicht die Check-In-Polizei sein, sondern so oft wie möglich Feedback geben. Ein Rezensent zu sein kann sein Verständnis stärken. Lassen Sie sie auch Ihren Code überprüfen. Sei das Model.

Nebenbemerkung: Es sollte keine Überraschungen während einer jährlichen Überprüfung geben.


2
+1 für "Sei das Model." Das war der größte Vorteil, den ich in Code-Reviews gesehen habe: Von der Glätte anderer Menschen zu lernen. Das und den gelegentlichen Defekt zu fangen.
Peter K.

1
Ein Tool zur Codeüberprüfung
Henrik,

9

Vor allem : Kommunizieren Sie Ihre Erwartungen und Ihr Design auf möglichst unterschiedliche Weise. Diagramme sind für manche gut; definierte Schnittstellen funktionieren für andere; Paarprogrammierung funktioniert auch; formale Codeüberprüfungen können auch einigen Menschen helfen.

Ich auch empfehlen , so viel wie möglich mit Hilfe der Automatisierung:

  • Fordern Sie das Team auf, ein Tool wie NDepend oder Resharper zu verwenden, wenn Sie sich im .Net-Bereich befinden. Passen Sie die Standardregeln an, wenn Sie sie nicht mögen.
  • Automatisieren Sie Ihre Tests so weit wie möglich.

Es ist schwer, mit einem fehlgeschlagenen Testfall oder einem automatisierten Inspektionstool zu streiten, vorausgesetzt, sie sind gut eingerichtet.


3
Schlechte Programmierer stellen wahrscheinlich schlechte Testfälle auf?
JeffO,

1
Werkzeuge wie Resharper sind def. ordentlich, aber sicher nicht frei. Für automatisiertes Testen muss testfähiger Code geschrieben werden, der möglicherweise eine unpraktische Anforderung darstellt, wenn die Fähigkeitsstufen weit davon entfernt sind.
P.Brian.Mackey

@ Jeff: Sie sind keine schlechten Programmierer, wir haben nur unterschiedliche Hintergründe und ich habe Jahre auf ihnen. Vermutlich würden ich und der erfahrenste Typ die Tests schreiben, wenn überhaupt.
Jon Purdy

@ Jeff O: Dann hol sie aus dem Team.
Peter K.

@ P.Brian.Mackey: Es gab keine Spezifikation für kostenlose Tools in der Frage. Wenn der Code nicht testbar ist, holen Sie sie aus dem Team. Versuchen Sie, ihnen das Schreiben von testbarem Code zu zeigen. Wenn sie keine Verbesserungen erzielen, nehmen Sie sie aus dem Team.
Peter K.

5

Wenn Sie wirklich mit einer Vielzahl von Fähigkeiten an einem Projekt arbeiten, wird es einige Probleme geben. Die Frage ist, wann Sie mit ihnen umgehen? Werden sie so schlechten Code schreiben, dass Sie vielleicht besser dran sind, wenn Sie nicht von ihnen unterstützt werden? Wird dies zu persönlichen Spannungen führen? Wirst du Freundschaften beenden? Diese Fragen kann niemand außer Ihnen beantworten.

Unter der Annahme, dass jeder im Team bleibt, empfehle ich, die Aufgaben in kleine Teile aufzuteilen (größere gehen an erfahrenere Typen) und die erfahrensten Entwickler überlassen, wenn Sie fertig sind. Stellen Sie sicher, dass die Qualitätssicherung in regelmäßigen Abständen durchgeführt wird. Das kommt dem, was in der Realität passiert, ziemlich nahe.


3

Halte dich so weit wie möglich vom Unkraut fern. Wenn Sie in einem Team führend sind, müssen Sie einen bestimmten Teil Ihrer Bandbreite für die Krisen und das Gesamtbild sparen. Diagramme sind gut und Kodierungsstandards sind immer vernünftig, aber es ist noch besser, Prozesse einzurichten, in denen sich die Mitarbeiter gegenseitig auf ihre Arbeit überprüfen (Cross-Testing, Peer-Reviews, Paarprogrammierung). Nicht jeder im Team muss ein Star sein - das Team zusammen kann normalerweise alle Schwächen eines Einzelnen überwinden.

Ich würde empfehlen, dass Sie sich dem Drang widersetzen, den Leuten so gut wie möglich mitzuteilen, welche Fehler Sie in ihrer Codierung sehen, und sie stattdessen dazu bringen, sie selbst zu sehen. Bleiben Sie ein Teil der kollaborativen Überprüfung der Entwicklungsarbeit, aber stellen Sie sicher, dass Sie nicht mehr als andere Mitglieder beitragen. Ermutigen Sie stattdessen die Menschen, zu sehen, was Sie sehen, und geben Sie viele Erklärungen, warum die Dinge, die Sie sehen, wichtig sind.

Sorgen Sie sich nicht zu sehr um Überschneidungen - Sie können die Teammitglieder über einen vernünftigen Arbeitsausfall hinaus bitten, sich untereinander einzuchecken und dann nur zu überprüfen, ob die Kommunikation stattgefunden hat. Das Team wird sich schnell darum bemühen, einen Konsens zu erzielen, und das macht Ihre Arbeit etwa 20-mal einfacher - dann müssen Sie nur den Gleichstand überwinden, wenn große Bereiche nicht übereinstimmen.

Dann ersparen Sie sich die Mühe, das Team gemeinsam zu betrachten. Jeder Mensch wird einige unglaubliche Stärken und einige faszinierende Schwächen haben. Im Idealfall beginnen Sie mit der Arbeit an Menschen, die zu ihren Stärken passen, und geben ihnen gleichzeitig die Möglichkeit, ihre Schwächen auf eine Weise zu beseitigen, die die Produktivität des Teams nicht beeinträchtigt.

Der ultimative goldene Stern in der Teamführung besteht darin, die Mitarbeiter auf ihre Schwächen aufmerksam zu machen, sodass sie motiviert und gut genug informiert sind, um sie zu beheben.


2

Setzen Sie sich und diskutieren Sie über die Technologien und Tools, über die sich alle im Team einig sind. Einige Leute haben mehr Erfahrung mit den vereinbarten Instrumenten als andere im Team, daher müssen diejenigen, die mehr Erfahrung haben, bereit und einverstanden sein, die Erfahrung und das Wissen mit den anderen zu teilen.

Diskutieren, vereinbaren, notieren, modellieren und kommunizieren Sie die Standards (z. B. Namenskonventionen, Codierungsempfehlungen und Ordnerstrukturen).

Führen Sie kontinuierliche und regelmäßige Tests und Qualitätskontrollen durch. Benachrichtigen Sie die Person so schnell wie möglich, wenn Inkonsistenzen auftreten.


2

Ich wollte sagen, dass die erfahrenste Person im Team die Organisation übernimmt, aber es hört sich so an, als ob Sie diese Person sind.

Wenn Sie können, teilen Sie das Projekt in zwei Ebenen. Anwendungsschicht / Treiberschicht ist eine gute Trennung. Bilden Sie zwei Untergruppen in Ihrem Team und machen Sie jeweils eine Person für diese Ebene verantwortlich. Das kann sehr gut funktionieren.

Gib dich damit ab. Sie müssen alles überprüfen, was sie zugesagt haben, besonders früh. Wenn alles glatt läuft, müssen Sie nur den Code aus dem Kopf schlagen. Das Überprüfen kostet Sie gar nicht so viel Zeit und gibt Ihnen viel Selbstvertrauen, dass die Dinge gut laufen. Es ist wahrscheinlicher, dass jemand Semaphore falsch verwendet oder eine eigene Version einer Bibliotheksfunktion oder einen solchen Wahnsinn schreibt. Meine Erfahrung ist, dass Sie den Code beobachten müssen, während er geschrieben wird, um Codeprobleme im Keim zu ersticken.


Stimmen Sie dem Code-Überprüfungsteil zu. Sie müssen sie so früh wie möglich führen.

2

Was wird normalerweise von einem technischen Vorsprung in Ihrem Unternehmen erwartet? Ich bin ein Manager und war einige Male an diesem Ort und werde es ab dieser Woche wieder tun (Einstellung von Neulingen und anderen, um einem Team von 20-jährigen und 4-jährigen erfahrenen Leuten beizutreten).

Ich bin ein Manager und kann ein technischer Leiter sein (in den letzten Jahren habe ich die letztere Rolle heruntergespielt, um die Führung im Team auszubauen. Auf jeden Fall einige Gedanken:

  • Bewerten Sie Fähigkeiten und Schwächen des gesamten Teams.
  • Erstellen Sie einen Wachstumsplan - Während Ihr Fokus auf die schwächsten Mitglieder gerichtet ist, sollten Sie sich wirklich darauf konzentrieren, alle als Einzelpersonen und als Team zu fördern.
  • Kommunizieren Sie diesen Plan und setzen Sie die Erwartungen aller.
  • Verteilen Sie das Lernen und die Validierung auf das Team. Während Sie als Hauptverantwortlicher der Lionshare der Arbeit sind, wird die Aufteilung der Arbeit Ihren erfahreneren Teammitgliedern in Führungspositionen helfen.
  • Erstellen Sie eine regelmäßige Rückkopplungsschleife. Treffen Sie sich mit Teammitgliedern, um die Fortschritte zu bewerten und Feedback zu geben.
  • Passen Sie den Plan nach Bedarf an, um den Erfolg sicherzustellen.
  • Wenn jemand nicht trainiert und auch mit angemessener Hilfe nicht bereit ist, ihn hinauszuschieben. Dies ist kompliziert, aber wenn Sie einen Plan und Erwartungen festgelegt haben und eine Rückkopplungsschleife bereitstellen, sind Sie in einer viel besseren Position, dies zu tun.
  • Behalte die Moral deines Teams im Auge. Diese Art von Situation kann großartige Dinge bewirken, um ein Team zu vergrößern oder auseinander zu reißen. Ihre Führungsqualitäten und Ihre Investition in das Team werden das Ergebnis entscheidend beeinflussen.

1

Schauen Sie sich an, was zur Definition einer "Software-Architektur" gehört. Das Erstellen von separat entwickelbaren Modulen ist einer der Hauptgründe für das Vorab-Design und die Analyse. Ich weiß, dass diese Art von Arbeit nicht im Stil ist, aber sie funktioniert in allen Fällen, im Gegensatz zu einigen Fällen, für die die neueren Entwicklungsmethoden plädieren.


1

Als der erfahrenste Entwickler im Team würde ich von Ihrem intensiven Coaching erwarten .

Lassen Sie das Team die Arbeit mit Kanban selbst zuweisen und verbringen Sie dann den ganzen Tag mit der Paarprogrammierung mit jedem von ihnen.

Wenn Sie eine schlechte Angewohnheit oder etwas sehen, von dem sie (alle) wissen sollten, stoppen Sie alles und malen Sie auf das Whiteboard.

Nach ein paar Wochen werden Sie in der Lage sein, Ihr starkes Coaching zu verlangsamen, da sich das gesamte Können des Teams Ihrem annähert.


1

Es gibt ein paar verschiedene Listen, die ich von Ihrer Position aus prüfen möchte:

  1. Wie gut kenne ich dieses Team? Kennen Sie die Stärken und Schwächen aller im Team? Wissen Sie, wie Sie das Beste aus jeder Person herausholen können? Wissen Sie, wie man die Arbeit für alle relativ gerecht aufteilt? Diese Art von Fragen sollten Sie sich stellen und verstehen, dass es im Laufe der Zeit zu Veränderungen in diesen Listen kommen kann, da manche Leute Fähigkeiten entwickeln, die ihre Sichtweise verändern können. Gab es bei Ihrer Ernennung Erwartungen, die einige im Team an Sie hatten? Es mag schwierig sein, die Leute dazu zu bringen, ehrlich zu antworten, aber es kann sehr hilfreich sein, wenn dies auf sinnvolle Weise offengelegt und diskutiert werden kann, ohne Beleidigungen oder Ressentiments hervorzurufen Menschen. Versuchen Sie nicht, persönliche Meinungen in einer Gruppensitzung zu bekommen,

  2. Wie gut kenne ich mich? Welche Elemente aus Ihrem Hintergrund verwenden Sie, um hier eine technische Berechtigung zu beanspruchen? Welche Stärken und Schwächen bringen Sie in das Team ein? Werden Sie voraussichtlich regelmäßig in die Gräben geraten? Gibt es Praktiken, die Sie gesehen haben und die Sie diesem Team vorstellen möchten, um sie zu steuern? Gibt es Warnzeichen, an die Sie sich aus früheren Erfahrungen erinnern, die hilfreich sein können, um festzustellen, ob eines dieser Zeichen in der Arbeit des Teams auftaucht?

In gewisser Weise läuft alles auf Kommunikation hinaus. Viel Glück!


0

Halten Sie regelmäßig (wöchentlich) eine Präsentation zu einem technischen Thema ab und lassen Sie es sich in der Gruppe drehen. So lernt jeder etwas. Und lassen Sie auch die jüngeren Mitglieder präsentieren, es gibt keinen besseren Weg, etwas wirklich zu verstehen, als es zu lehren. Möglicherweise müssen Sie ihnen bei der Themenauswahl helfen.

Einige Coachings zum Reden sind möglicherweise für alle angebracht. Ich hatte einen Prof am College, der das für mich tat, und es war sehr hilfreich.

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.