Wie können Sie als Teamleiter Ihren Programmierern helfen, zu wachsen?
Der Grund, warum ich das frage, ist, dass einige Programmierer mit mir zusammenarbeiten, und ich möchte sie unbedingt "auf freiem Fuß" machen, ihr maximales Potenzial ausschöpfen und sie glücklich machen.
Aber ich weiß nicht so recht, wie ich das machen soll
- Häufig mit ihnen interagieren oder ihnen ruhige Zeit geben, sie ungestört lassen?
- Bitten Sie sie, Codierungsrichtlinien zu befolgen, z. B. Unit-Tests und Codierungsstile zu erzwingen, oder lassen Sie sie tun, was sie für richtig halten?
- Sei nachsichtig mit ihnen. Zum Beispiel ist es egal, ob sie wirklich 8 oder 4 Stunden im Amt sind oder ob sie am Arbeitsplatz einige "Disziplinen" durchsetzen müssen?
Ratet mal, jede Position hat ihre eigenen Punkte und verschiedene Leute würden für verschiedene Dinge argumentieren. Solche Verwirrungen erschweren den Umgang mit Menschen auf unbestimmte Zeit.
Was denkst du?
management
Graviton
quelle
quelle
Antworten:
Es ist eine sehr feine Linie, die man gehen muss.
Letztendlich sind alle technischen Entscheidungen, die Sie treffen, Entscheidungen, mit denen Sie nicht leben müssen. Machen Sie so wenig wie möglich davon, lassen Sie die Menschen, die mit ihnen leben müssen, ihre eigenen Entscheidungen treffen. Aber leite sie, wenn du denkst, dass sie einen schlechten Weg gehen.
Auf der anderen Seite liegt die Wahl des Prozesses bei Ihnen. Lassen Sie sich bei diesen Entscheidungen vom Team leiten, aber letztendlich müssen Sie sie treffen. Zumindest zuerst.
Lesen Sie Roy Osheroves Drei Reifegradstufen eines Software-Teams und sehen Sie, ob Sie herausfinden können, in welcher Phase sich Ihr Team gerade befindet. Dies sollte sich auf Ihr Verhalten auswirken. Je chaotischer, desto mehr müssen Sie Kontrollen einrichten. z.B. In einem extrem chaotischen Team müssen Sie zunächst den gesamten festgeschriebenen Code überprüfen. Aber nehmen Sie sich dabei die Zeit, um sie zu lehren, den Code des jeweils anderen zu überprüfen.
Und wenn Sie es schaffen, ein Team von Chaos nach Midlife zu ziehen, ändern Sie zu diesem Zeitpunkt Ihr Verhalten, da es sich sonst nicht weiterbewegt (dies letzte aus persönlicher Erfahrung).
quelle
Ja, die Verwaltung von Personen ist unendlich schwieriger als die Verwaltung von Computern oder Software, gerade weil jede Person anders ist und wir uns möglicherweise sogar von Tag zu Tag ändern. Es gibt also keine allgemeingültige Antwort. Ich glaube, Sie müssen nur viel mit Ihren Entwicklern kommunizieren, um sie kennenzulernen und ihre individuellen Stärken / Schwächen, ihre Einstellung zur Arbeit und zum Lernen usw. zu verstehen. Auf diese Weise können Sie über jeden von ihnen lernen, ob er es vorzieht viel Kommunikation und Workshops, oder alleine lernen in einer ruhigen Ecke.
IMHO-Entwickler haben unter normalen Umständen einen natürlichen Lerndrang (es sei denn, sie wurden durch eine frühere schlechte Berufserfahrung ausgebrannt oder abgestumpft). Alles, was Sie tun müssen, ist zu verstehen, was und wie sie lernen möchten, und ihnen die Werkzeuge und die Zeit zur Verfügung zu stellen, um dies zu tun (natürlich innerhalb angemessener Grenzen).
Beispielsweise können wir in unserem Team Lernaufgaben für uns selbst frei definieren, sofern diese in irgendeiner Weise (direkt oder indirekt) mit dem Projekt zusammenhängen. Diese Aufgaben dauern in der Regel einige Stunden bis einen Tag pro Sprint (allerdings nicht in jedem Sprint). (Ein aktuelles Beispiel: Ich habe eine Aufgabe zum Lernen und Experimentieren mit Scala angenommen, auf der Grundlage, dass dies - und ein funktionaler Ansatz im Allgemeinen - dazu beitragen kann, einen komplexen Teil unseres Java-Codes zu vereinfachen.) Sprint wie bei normalen Aufgaben. Es wird auch angeregt und erwartet, Demos / Vorträge über das, was wir gelernt haben, durchzuführen, um Wissen an andere Teammitglieder (und möglicherweise sogar an Entwickler in verschiedenen Teams) weiterzugeben.
Wenn Sie in einem Team arbeiten, ist es ein Muss, denselben Entwicklungsprozess zu verfolgen. Natürlich sollte dieser Vorgang der einfachste sein, der möglicherweise funktionieren könnte, und nicht etwas, das in einem 600-seitigen Handbuch beschrieben ist. Und der Prozess sollte vom Team selbst definiert und kontinuierlich an die Situation angepasst werden . Wenn das Team einem Kodierungsstandard und TDD zugestimmt hat, muss es sich daran halten.
Wenn Sie einen Entwickler nicht kennen, ist es normal, seine Aktivitäten, ihre Lieferungen, ihren Arbeitsrhythmus usw. genauer zu verfolgen. Es ist auch in Ordnung, ihren Code zu überprüfen (entweder Sie selbst oder ein erfahrenes und vertrauenswürdiges Team) Mitglied). Sobald sie Vertrauen erworben hat, kann sie nach und nach mehr Freiheit erlangen. Aber dieses Vertrauen muss zuerst verdient werden. In Bezug auf die Arbeitszeit sind meines Erachtens flexible Arbeitszeiten bis zu einem gewissen Grad großartig, dh es ist gut, ein gemeinsames, vereinbartes Minimum zu haben, beispielsweise täglich zwischen 11.00 und 14.00 Uhr, wenn Entwickler (normalerweise) an ihrem Arbeitsplatz zu finden sind, damit sie Sie können mit Fragen angesprochen oder zu Besprechungen eingeladen werden. Abgesehen davon macht es keinen Sinn, streng zu sein.
quelle
OK als Anhaltspunkt ist es Ihre Aufgabe, die Projekte aus der Tür zu bekommen. Sie müssen also derjenige sein, der Standards, Codeüberprüfungen, Fortschrittsberichte und all diese Dinge durchsetzt, wenn die Entwickler es vorziehen, sie in Ruhe zu lassen. Diese Dinge sind nur Anforderungen des Managements und mit Ausnahme der Code-Überprüfungen werden die Fähigkeiten der Mitarbeiter nicht wirklich erweitert.
Sie möchten ihnen jedoch dabei helfen, zu wachsen, was ein großartiges Attribut in einem Führer ist.
Code Reviews sind mit Sicherheit ein erster Schritt. Sie helfen Ihnen zu erkennen, wer weniger als herausragende Fähigkeiten hat und noch verbessert werden muss, um eine zufriedenstellende Leistung zu erzielen. Sie werden den Entwicklern helfen, andere Möglichkeiten zu erkennen und andere Teile der Codebasis zu verstehen, als die, an denen sie persönlich gearbeitet haben. Meiner Meinung nach werden Codeüberprüfungen am besten persönlich in einem Konferenzraum mit dem Entwickler und dem Überprüfer durchgeführt (der, wenn möglich, ein anderer Entwickler sein sollte, nicht immer der Hauptverantwortliche, das Überprüfen des Codes eines anderen ist auch eine Fähigkeit, die entwickelt werden muss) und Ihnen als ein Moderator. Sie sollten sich Notizen darüber machen, was geändert werden muss, um Trends zu erkennen. Was Sie wirklich suchen, sind keine Fehler oder Änderungen (jeder Code kann verbessert werden), sondern das beständige Versagen, aus Fehlern zu lernen. Teilen Sie dem oberen Management nicht mit, dass Sie diese Notizen aufbewahren, da Sie sonst gezwungen sind, sie als Maß für den Leistungsüberprüfungsprozess zu verwenden, der offen den Zweck verletzt. Wenn mehrere Entwickler die gleichen Fehler machen, ist möglicherweise eine Schulung oder ein Wiki-Eintrag zur Vorgehensweise für X angebracht.
Nun zum wachsenden Laster, das auf das minimale Niveau kommt. Zunächst müssen Sie wissen, über welche Fähigkeiten die Entwickler verfügen und welche Fähigkeiten sie möglicherweise benötigen. Sie müssen mit ihnen sprechen, ihre Lebensläufe überprüfen und verstehen, woran sie liegen und woran sie interessiert sind mag es nicht zu tun.
Geben Sie nicht alle interessanten Aufgaben nur den Fachleuten. Das hilft den anderen nicht, sich mit neuen Problemen und Technologien vertraut zu machen. Sie können nicht davon abweichen, der jüngere Typ zu sein, der nur die kleinsten und unwichtigsten Aufgaben für den älteren Mann erledigt, es sei denn, jemand nutzt eine Chance und weist Ihnen eine schwierigere Arbeit zu. Das heißt, die weniger erfahrenen müssen möglicherweise zuerst zugewiesen werden, um das Programm mit einem Senior zu paaren, um fortgeschrittenere Fähigkeiten zu erlangen. Wenn Sie die Junioren in Code-Reviews einbeziehen, werden sie auch fortgeschritteneren Techniken ausgesetzt.
Geben Sie ihnen zunächst die Möglichkeit, das Problem selbst herauszufinden. Aber manchmal stecken die Leute fest und wissen nicht, wo sie anfangen sollen (eine Fähigkeit, die Sie auch speziell für neue Programmierer entwickeln müssen) oder was zu tun ist, um ein Problem zu lösen.
Wenn Sie ihnen ein paar Tage Zeit geben, um etwas zu recherchieren, und sie immer noch nicht wissen, wie sie etwas tun sollen, müssen Sie möglicherweise mit einigen Vorschlägen eingreifen. Wenn Sie selbst technisch versiert sind, können Sie ihnen Anregungen zur Lösung des Problems geben. Andernfalls kann ein Treffen mit mehreren Personen, bei dem Sie Ideen für ein Brainstorming entwickeln, hilfreich sein, wenn die Person feststeckt. Oder eine erfahrenere Person bitten, einige Vorschläge zu machen. Was Sie nicht tun möchten, ist, das Problem von ihnen zu nehmen und es selbst zu lösen. Aber Sie müssen das Projekt mit dem Ego des Programmierers in Einklang bringen und manchmal müssen Sie sie in eine bestimmte Richtung schicken. Wenn er eine schlechte Lösung hat und diese behoben werden muss, können Sie sie am schlechtesten jemand anderem geben, es sei denn, Sie beabsichtigen, den Programmierer auszulösen.
Ich habe schlechte Programmierer gesehen, die verwöhnt wurden und bei denen jemand anderes fast alles reparieren muss, was sie tun. Die anderen Programmierer ärgern sich darüber und wollen nur, dass die Person aus ihrem Leben verschwindet. Das Verwöhnen eines schlechten Programmierers führt dazu, dass die guten Programmierer gehen. Sie müssen die Grenze zwischen Verwöhn- und Entwicklungsfähigkeiten finden. Wenn Sie jemandem mehrere Chancen geben und er oder sie nie besser wird, dann schneiden Sie ihn oder sie los.
Für die Senioren, die bereits in ihren derzeitigen Fähigkeiten kompetent sind, ist es einfacher. Normalerweise muss man ihnen nur die Gelegenheit geben, etwas Neues zu machen, und sie springen hinein und lernen es. Stellen Sie einfach sicher, dass sich die interessanten Möglichkeiten ausbreiten und gehen Sie nicht alle zu Joe, dem Wunderprogrammierer, der alles reparieren kann. Sie wollen zehn Joes haben, nicht nur einen.
Eine andere Möglichkeit, Fähigkeiten zu entwickeln, ist eine wöchentliche einstündige Trainingseinheit. Machen Sie jeden Entwickler für ein bestimmtes Thema verantwortlich. Dies wird ihnen helfen, besser zu kommunizieren, sie etwas gründlicher zu recherchieren und jedem den Vorteil ihrer Forschung zu geben. Einige Themen sollten Personen zugewiesen werden, die mit dem Thema nicht vertraut sind, um sie dazu zu zwingen, ein gewisses Maß an Wissen zu erwerben, und andere sollten Personen zugewiesen werden, von denen Sie wissen, dass sie die lokalen Experten für dieses Thema sind. Themen sollten eine Kombination von Dingen sein, die Menschen benötigen, um in naher Zukunft oder im Moment gut zu sein, und eine Berichterstattung über neue kommende Technologien, die Sie derzeit nicht verwenden, aber die Leute sind daran interessiert, herauszufinden, ob sie nützlich sein könnten. Jedem, einschließlich dem jüngsten, muss jedoch ein Thema zugewiesen werden.
Abhängig davon, wie die Zeit Ihrer Entwickler abgerechnet wird (dies ist in einer Kundenabrechnungssituation schwieriger), lohnt es sich normalerweise für Entwickler, 4-8 Stunden pro Woche Zeit zu haben, um an persönlichen Projekten zu arbeiten. Sie werden begeistert sein, dies zu tun. Die besten Leute werden dort arbeiten wollen und viel lernen, was für die Zukunft nützlich sein wird. Es ist schwer für die Bohnenzähler, die Notwendigkeit dafür zu verstehen, aber diese Zeit wird um ein Vielfaches an Mitarbeiterzufriedenheit, neuen Funktionen oder Software zurückgezahlt, die niemand benötigt (oder die dazu beitragen wird, einen Teil der Plackerei zu automatisieren) und aufgrund der schnelleren Entwicklung neue Techniken gelernt. Einige Entwickler werden diese Zeit ausschließlich für persönliche Projekte verwenden, die nicht mit Ihrer Arbeit zusammenhängen (und das ist gut so, sie werden immer noch Fähigkeiten erwerben und sich über die Gelegenheit freuen). Aber viele andere werden es nutzen, um hartnäckige Probleme zu lösen, die aufgrund der Art der Projektverwaltung nicht behoben werden konnten. So können Sie Refactorings erhalten, von denen jeder profitiert. Einige schreiben möglicherweise Tests, um die Testabdeckung zu verbessern und die Umgestaltung zu vereinfachen. Einige andere untersuchen möglicherweise einige neue Funktionen, die Ihre Software für die Kunden nützlicher machen. Wenn Sie die Bohnenzähler überzeugen können, gibt es im Allgemeinen keine Möglichkeit zu verlieren, indem Sie ihnen diese Freiheit gewähren.
Sie müssen lernen, wie man das Gleichgewicht hält, damit die Leute etwas Kraft für ihre Fähigkeiten haben und das Projekt auf Kurs halten. Je weniger Erfahrung der Entwickler hat, desto mehr muss jemand den Fortschritt überprüfen, insbesondere in den frühen Phasen, in denen ein Richtungswechsel einfacher ist. Die Unerfahrenen können kämpfen und haben Angst, sich zu äußern. Diese Leute neigen dazu, kurz vor dem Start abzureisen, und Sie stellen fest, dass ihr Teil des Projekts nicht annähernd abgeschlossen ist. Achten Sie besonders darauf, den Fortschritt bei Personen zu überprüfen, die häufig den Job gewechselt haben (es sei denn, sie waren Auftragnehmer, da dies die Art der Auftragsvergabe ist).
Den erfahreneren Mitarbeitern kann im Allgemeinen vertraut werden, dass sie Ihnen mitteilen, wenn sie Probleme haben, die Lösung zu finden, und Unterstützung von jemandem mit mehr Kenntnissen in diesem Bereich benötigen, oder sie werden diese Person aufsuchen und den Wissenstransfer erhalten. Daher müssen sie in den Anfangsphasen des Lernens neuer Fähigkeiten für ein Projekt nicht so genau überwacht werden. Sie werden einen Weg finden, das Projekt zu realisieren. Diejenigen, die eine Erfolgsbilanz in der Bereitstellung haben, können in der Regel allein gelassen werden, mit Ausnahme von Berichten über minimale Fortschritte (Sie müssen in der Regel auch Ihrem Management Bericht erstatten und benötigen daher einige Informationen).
quelle
Wenn ich sage, dass es Ihre Aufgabe ist, dies durchzusetzen, meine ich nicht, einen drakonischen Führungsstil anzunehmen. Wenn sich eine Gruppe fähiger Personen zu ihrem Verhalten äußert, müssen sie sich auch auf die Konsequenzen einigen, wenn sie die Regeln nicht einhalten. Jemand ist letztendlich verantwortlich und da Sie dieser Teamleiter sind, sind Sie es auch.
quelle
Interagiere häufig mit ihnen. Offensichtlich geht es nicht darum, sie zu nerven, aber als Manager sollten Sie sich regelmäßig mit ihnen darüber unterhalten, wie die Dinge laufen, und mehr über das allgemeine Geplauder. Etwa alle paar Stunden klingt die richtige Frequenz, aber spielen Sie sie nach Gehör.
Sie sollten damit rechnen, dass sie genau so arbeiten, wie Sie es tun. Wenn Sie Unit-Tests durchführen und Richtlinien befolgen, sollten Sie diese befolgen. Sie müssen lernen, wie man gut codiert, und es liegt in Ihrer Verantwortung, ihnen das beizubringen.
Zuerst wäre ich disziplinierter, aber beruhige mich, wenn sie beweisen, dass sie vertrauenswürdig sind. Menschen das Vertrauen zu geben, einen 4-Stunden-Tag von Anfang an zu arbeiten, bedeutet Ärger, aber es ist in Ordnung, einem geschätzten Mitarbeiter, der regelmäßig zu spät arbeitet, eine Pause zwischen den Projekten zu machen.
quelle
Bezogen auf Ihre drei Punkte:
Ich werde sagen, dass es wirklich von der Art der Person abhängt, mit der Sie arbeiten. Einige diskutieren lieber zur festen Kaffeezeit (etwa um 10 Uhr morgens) und arbeiten ansonsten ungestört allein. Mit ihnen (OK, ich gebe zu, ich bin genau so) sende ich im Allgemeinen E-Mails (auch wenn sie in meiner Nähe sind, etwa 2-3 Meter entfernt), damit Sie ihnen die Wahl lassen können, wenn sie Ihre Informationen lesen . Übrigens, frag sie nicht, ob sie "dein Memo" haben :-) Und natürlich "brauchen" manche mehr Anleitung, mehr Interaktion.
Was das Befolgen von Richtlinien angeht, ist mir das ziemlich klar. Wenn Sie Richtlinien in Bezug auf den Codierungsstil, die Regel für immer bereitgestellte Testfälle usw. festlegen, müssen Sie diese erzwingen, wenn Sie der Hauptentwickler sind. Für das von Ihnen verwaltete Projekt sollte jeder Entwickler Ihre Richtlinien befolgen, auch für " Superstars ".
Wenn Sie bereits wissen, wie Menschen arbeiten und zuversichtlich sind, können Sie die Disziplin lockern. Aber ich denke, dass für diesen Punkt die Regel (oder keine Regel), die Sie definieren, für alle gelten sollte. Wichtig ist, dass es keine Ausnahme gibt. Derzeit bin ich sehr glücklich, für einen Projektmanager zu arbeiten, der einfach sagt: "Solange Sie Ihre 40 Arbeiten pro Woche erledigen und die Arbeit erledigt ist, ist es in Ordnung." Auf diese Weise können Sie eines Morgens spät kommen, nur 6 Stunden arbeiten und an den nächsten zwei Tagen 9 Stunden arbeiten. Es spielt keine Rolle, "solange die Arbeit erledigt ist". Ich mag diese Regel.
quelle
Ich würde sagen, dass die Menge an Erfahrung (nicht nur beim Programmieren, sondern auch in Geschäftsumgebungen), die Ihre Entwickler mitbringen, ein entscheidender Faktor dafür ist, wie viel Zeit Sie mit ihnen verbringen. Ich arbeite derzeit mit einigen Entwicklern zusammen, die gerade nicht in der Schule sind, und ich stelle fest, dass sie mehr Anleitung benötigen, um mit anderen zusammenzuarbeiten, nicht nur in Bezug auf Dokumentieren / Testen / Standards, sondern auch in Bezug auf zwischenmenschliche Aspekte (wann) am Telefon anrufen oder sich persönlich treffen, anstatt nur E-Mails zu senden). Das Wissen über unser Geschäft ist auch eine wichtige Sache, da viele der gleichen Wörter in unserem Geschäftskontext sehr unterschiedlich verwendet werden als in einem Softwareentwicklungskontext. Und das ist, bevor wir zu den Akronymen kommen ...
quelle
Mein Vorschlag ist, ein paar Gespräche darüber zu führen, welcher Stil für diese Person am besten geeignet ist und welche Feinabstimmung sich im Laufe der Zeit ergibt. Einige Leute möchten sich vielleicht einmal am Tag treffen, um zu besprechen, wie es ihnen geht, während andere es einmal im Vierteljahr als übertrieben empfinden. Einige Leute möchten vielleicht jeden Monat eine formelle Leistungsüberprüfung, andere möchten vielleicht nur einen Chat über die Leistung. Der Schlüssel besteht darin, die Beziehung zu der Phase herzustellen, in der man ehrlich erkennen kann, was für jemanden funktioniert und was nicht.
Die Kehrseite wäre, die Philosophie der persönlichen Entwicklung zu studieren, obwohl dies ein schwieriger Weg sein kann, wenn jemand falsch analysiert wird. Wenn Sie ein paar Beispiele für solche Philosophien suchen, finden Sie einige Beispiele in Myers-Briggs, Enneagram und Strengths Finder 2.0.
quelle
Sie fragen sie, wie sie es vorziehen würden, zu arbeiten.
Was sie gerne ändern würden und so weiter.
Nicht auf einmal. Nur ... wie sich herausstellt.
Bleib natürlich. (oder sie werden Angst riechen)
Und dann ... lernst du vielleicht sogar etwas von ihnen . Wenn Sie nicht glauben, dass dies jemals der Fall sein würde (zu große Distanz in Bezug auf Ausbildung und Erfahrung), würden Sie sie nur verwirren, wenn Sie versuchen, sie erwachsen zu machen.
(In diesem speziellen Fall, gib es auf und herrsche mit eiserner Faust . Es ist ehrlicher als ein falsches Interesse, das du nicht an ihnen hast.)
Etablieren Sie einen demokratischen Prozess , stimmen Sie ab, diskutieren Sie Themen.
Wie jeder Präsident da draußen behältst du das letzte Wort: das Veto .
Der Rest liegt bei der Gruppe.
quelle
Eine Möglichkeit, Ihrem Volk beim Wachstum zu helfen, besteht darin, es das tun zu lassen, was es am besten kann.
Wenn Sie Glück haben, haben Sie einen oder zwei Programmierer, deren persönliche "Test" -Standards strenger sind als die der gesamten Abteilung. In diesem Fall können Sie sie in das "Ehrensystem" für diese Themen aufnehmen oder sogar ihre Methoden übernehmen.
Mit "flex time" können Sie Ihren produktiveren Mitarbeitern mehr Spielraum gewähren. Solange sie den Job erledigen, würde ich mich weniger um ihre Stunden kümmern. Einige Leute kommen herein, setzen 5-6 "nonstop" Stunden ein und erreichen mehr als andere, die 10 langsame Stunden einsetzen.
Aber eine Ihrer Aufgaben als Manager ist es, Schwächen zu korrigieren. Das heißt, Sie müssen sich auf schlampige Programmierer beschränken, deren Teststandards unzureichend sind, oder auf Leute, die nicht produktiv genug sind - weil sie nicht die Zeit dafür aufwenden.
quelle