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?
quelle
Antworten:
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.
quelle
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:
Es ist schwer, mit einem fehlgeschlagenen Testfall oder einem automatisierten Inspektionstool zu streiten, vorausgesetzt, sie sind gut eingerichtet.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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:
quelle
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.
quelle
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.
quelle
Es gibt ein paar verschiedene Listen, die ich von Ihrer Position aus prüfen möchte:
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,
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!
quelle
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.
quelle