Ich leite ein Team von 3-4 Nachwuchsentwicklern. Meine Aufgabe - neben dem Schreiben von Code - ist es, die Junioren zu beaufsichtigen und zu begleiten.
Aber ich verstehe vollkommen, wie sehr Entwickler Autonomie in ihrer Arbeit schätzen, und ich möchte ihre intrinsische Motivation nicht zerstören, indem ich sie mit meinen Gedanken und meinen Algorithmen füttere. Ich möchte, dass sie das Problem auf ihre eigene Weise untersuchen, selbst darüber nachdenken und nur dann zu mir kommen, wenn sie wirklich mit unüberwindlichen Problemen konfrontiert sind.
Wenn sie zu mir kommen, müsste ich manchmal einen völlig anderen Algorithmus vorschlagen, um das Problem zu lösen, weil ihr Algorithmus nicht robust genug ist (denken Sie daran, ich bin der Ältere und ich habe mehr als sie gesehen). Natürlich würde ich dies auf eine nette Art und Weise erklären, um ihre Gefühle nicht zu verletzen, und ich würde sanft skizzieren, wie weit überlegen meine Lösung ist, ohne herablassenden Ton oder verurteilende Worte.
Dennoch zögern sie manchmal, meinen Vorschlag anzunehmen, zum Teil, weil sie so viel in ihren eigenen Algorithmus investiert haben, oder weil sie befürchten, dass die Verwendung einer neuen Methode mehr Lernzeit mit sich bringt und sie dem Management so erscheinen lässt, als ob sie es wären gehen nirgendwo hin. Aber tief in meinem Herzen weiß ich sehr gut, dass mein Algorithmus viel besser ist als der ihre und sie sollten ihn einfach übernehmen.
Was soll ich tun, wenn sie meinen Vorschlag nicht angenommen haben? Soll ich sie einfach bitten, meinem Weg zu folgen, oder soll ich sie einfach noch viele Male mit dem Kopf gegen die Wand schlagen lassen und warten, bis sie zu mir zurückkehren? Ersteres zu tun, macht mich zu einem Diktator, aber letzteres würde uns wertvolle Entwicklungszeit kosten und Fehlerbehebungskosten verursachen. Ich bin hier wirklich in einem Dilemma.
quelle
Antworten:
Helfen Sie ihnen zu verstehen, warum sie die von Ihnen vorgeschlagene Änderung vornehmen sollten. Und hören Sie ihnen zu, wenn sie einen guten Grund haben, die Änderung nicht vorzunehmen. Besprechen Sie sich und einigen Sie sich auf das Beste, was zu tun ist.
Dieser Ansatz ist aus folgenden Gründen wichtig:
Wenn Sie schlau sind, können Sie sie auch dazu bringen, die Antwort zu finden, indem Sie einfach Fragen stellen . Richtig gemacht, kommt Ihr Junior selbst zum richtigen Ergebnis (und ist daher viel eher bereit, es umzusetzen). Beispielfragen:
BEARBEITEN : Wenn es Ihnen gelingt, Ihren Junior davon zu überzeugen, dass das Richtige darin besteht, Ihrem Vorschlag zu folgen, der jedoch weiterhin zögert, finden Sie hier einige zusätzliche Ratschläge:
quelle
Ich hasste die überhebliche Haltung meines letzten Teamleiters, aber respektiere ihn für die Tatsache, dass er überlegenes technisches Wissen verfügt und mir viel beigebracht hat, ohne mich zu belehren. Am wichtigsten ist, dass er mich nie gezwungen hat, seinen Plan umzusetzen. Er würde Devil's Advocate mit meinem Plan spielen und mich zwingen zu beweisen, dass mein Plan fehlerfrei war. Er würde nach Schlupflöchern suchen und auf meine Erklärung warten, warum es keine Lücke oder eine weniger teure Lösung ist. Er würde mich fragen, ob es alternative Lösungen gäbe und einige Ideen vorschlagen, wenn ich keine hätte. Ich musste seine Ideen bewerten und feststellen, dass sein Plan nicht optimal war. Wenn er davon überzeugt war, dass mein Plan richtig war oder zumindest das gleiche Risiko-Ertrags-Verhältnis wie sein hatte, gab er die Erlaubnis. Wenn ich mit meiner Idee gescheitert wäre, müsste ich seine Lösung ausprobieren.
Es muss einen Kompromiss zwischen Freiheit und Fristen geben. Sie haben nicht den Luxus, die Frist zu verlängern, und Sie können nicht zulassen, dass Ihre Junioren gegen diese Frist verstoßen. Sie müssen höflich, aber fest mit ihnen sein, dass sie die Pflicht haben, Ihnen zuzuhören, wenn sie ihren Algorithmus einmal ausprobiert und nicht zum Laufen gebracht haben. Zeigen Sie mit gutem Beispiel, dass Sie sich auskennen. Aber, ebenso wichtig, lass sie lernen, unterrichte sie nicht.
quelle
Wenn es eine Anforderung ist, notieren Sie es als das. Wenn es sich, wie Sie bemerken, nur um einen Vorschlag handelt, sollte es ihnen freigestellt sein, dies ansonsten zu tun. Einige Fragen, die ich stellen würde:
Ich bin sicher, Sie könnten mehr fragen, aber die ersten beiden konzentrieren sich auf Ihre Autorität und die letzte darauf, ob es sich wirklich lohnt, das Problem anzugehen.
Die folgende Antwort enthält einige wichtige zusätzliche Punkte, und ich möchte hier hinzufügen, dass Sie sie eher als einen kollaborativen Prozess behandeln müssen, bei dem Sie zumindest einige davon mit Ihrem "Team" durcharbeiten, anstatt ihnen nur Diktate zu erteilen. Sie werden lernen, während sie mit Ihnen die Probleme durcharbeiten, und nicht nur erfahren, "wie Sie es tun sollten".
quelle
Lernen findet wirklich nur dort statt, wo es zu Fehlern kommt, denn Misserfolg ist ein Motivator und liefert Erinnerungshinweise für zukünftige Erinnerungen. Dies ist im Wesentlichen das, was wir als Erfahrung bezeichnen, und gute Erfahrungen am Arbeitsplatz werden daraus resultieren, dass wir gescheitert sind und aus den Fehlern gelernt haben. Wenn Ihre Junioren in der Lage wären, beim ersten Mal alles richtig zu machen, würden sie entweder nichts lernen oder sie wären keine Junioren.
Wenn zu viele Nachwuchskräfte Probleme haben, hat Ihr Unternehmen möglicherweise zu viele Nachwuchsentwickler, bei denen aufgrund zeitlicher Beschränkungen erfahrene Mitarbeiter erforderlich sind, um Ihre Risiken zu minimieren. Dennoch kann es zu Problemen und Verzögerungen kommen, da Nachwuchsentwickler Fehler machen auch davon lernen.
Ihre Junioren müssen lernen und Erfahrungen sammeln, um in einem Umfeld mit engen Fristen zurechtzukommen. Als Teamleiter ist es Ihre Aufgabe, ein Beispiel zu geben und Ihre Junioren zu einer effizienten Arbeit zu inspirieren. In der Realität müssen Sie jedoch Bedenken hinsichtlich des persönlichen Stolzes und Ihrer engen Zeitpläne ausräumen, wenn Ihre Junioren tatsächlich etwas lernen möchten , und deshalb müssen Sie zulassen, dass sie fehlschlagen. Daher ist es Ihre Aufgabe, einen Anruf zu tätigen. Manchmal müssen Sie dem Junior den Raum zum Scheitern geben und ihn dann geduldig durch einen Überprüfungsprozess führen, um ihm zu zeigen, wo er seine Ideen verbessern kann. In anderen Fällen müssen Sie Ihren Fuß nach unten setzen, aber dies auf eine Weise, die es Ihnen ermöglicht zu zeigen, dass dies aus einem echten Bedürfnis heraus geschieht, das die Fähigkeiten Ihres Nachwuchses an sich nicht schlecht widerspiegelt.
In Bezug auf knappe Fristen müssen Sie hier Ihre Arbeit nach den relativen Stärken und Schwächen Ihres Teams planen und zuordnen. Letztendlich hört das Geld bei dir auf. Wenn Sie für andere verantwortlich sind, sind Sie nicht da, um die Freunde aller zu sein, sondern um unter schwierigen Umständen einen schwierigen Job zu erledigen. Wie Sie alle auf Ihrer Seite halten, hängt davon ab, wie Sie die Menschen über Ihre Anliegen und Probleme informieren und begründen, warum Ihre Teammitglieder etwas auf eine bestimmte Art und Weise tun müssen.
Nach meinen persönlichen Erfahrungen müssen Sie Ihrem Nachwuchs eine bestimmte Zeit reservieren, um die Stärken und Schwächen beider Ideen zu besprechen, und dann gemeinsam nach der besten Lösung suchen, die das vorliegende Problem löst - auch unter dem Risiko, es sich selbst zu erlauben sich als falsch erweisen - und dann vorwärts gehen. Wenn Sie beide bis zum Ende Ihrer zugewiesenen Zeit keinen Konsens erzielen können, müssen Sie zu diesem Zeitpunkt die Besprechung mit einer Zusammenfassung abschließen, die die besprochenen Bedenken berücksichtigt und feststellt, dass kein Konsens erzielt wurde. Unabhängig vom Ergebnis Ihres Meetings danken Sie Ihrem Junior für die aufgewendete Zeit und geben an, dass Sie mit Ihrer Entscheidung zurückkehren werdenkurz. Nach sorgfältiger Prüfung Ihrer Diskussion haben Sie die Möglichkeit, entweder zusätzliche Zeit für die weitere Diskussion bereitzustellen oder den Junior zu beauftragen, mit dem Plan fortzufahren, den Sie je nach dem Ergebnis Ihrer Besprechung festgelegt haben.
Ja, Zeit ist manchmal kostbar. Wenn Sie sich jedoch dafür entscheiden, Junioren einzustellen, müssen Sie akzeptieren, dass Sie die Verantwortung übernehmen, in deren berufliche Entwicklung zu investieren und diese zu fördern, und Sie müssen akzeptieren, dass dies für eine Weile der Fall sein wird Zumindest kostet dich das Zeit.
quelle
Ich würde fragen, ob Sie Ihren Vorschlag tatsächlich auf eine Weise präsentieren, die nicht herablassend ist. Wenn Sie Ausdrücke verwenden wie:
und
es lässt mich denken, dass Sie mit einer Haltung "mein Weg ist überlegen" rüberkommen könnten. Niemand mag es, diese Einstellung zu bekommen. Als ich es in der Vergangenheit erhalten habe, habe ich mich aktiv bemüht, einen anderen Algorithmus zu verwenden, um die Person als falsch zu beweisen. Es könnte sein, dass Ihre Junioren dasselbe tun.
Ein besserer Weg sollte sein, sich mit der Person zusammenzusetzen und ihren Algorithmus zu besprechen. Zeigen Sie auf, warum Sie nicht glauben, dass es funktionieren wird, und hören Sie die Antworten, die sie Ihnen geben, mit offenem Geist. Überprüfen Sie, ob der Algorithmus so geändert werden kann, dass er ordnungsgemäß funktioniert.
Wenn das, was Sie als Junior haben, definitiv nicht funktioniert, erklären Sie ihnen, warum es nicht funktioniert. Welche Teile sind falsch oder werden später neu geschrieben oder passen nicht zum Geschäftsmodell. Stellen Sie sicher, dass sie Ihre Gründe gut verstehen. Erklären Sie ihnen dann Ihren Algorithmus und weisen Sie sie auf die Stellen hin, an denen er funktionieren und deren Code fehlschlagen würde.
quelle
Kennen Sie zuallererst den wahren Grund, warum Ihr Junior Ihren Vorschlag nicht angenommen hat?
Manchmal weißt du, dass ein Junior aufgrund neuerer Perspektiven und einer aktuelleren CS-Ausbildung tatsächlich etwas Besseres als sein Senior schreibt. Obwohl Sie als Senior vielleicht mehr Beispiele aus der Praxis gesehen haben. Aber eine schlechte Falle, in die meine Senioren manchmal geraten, ist das Vergessen, dass sich bewährte Methoden im Laufe der Zeit ändern können. Ich bin mir sicher, dass dies nicht auf Sie zutrifft, da Sie sich auf Websites wie diesen selbst aktualisiert haben. ;)
Ich würde vorschlagen, dass Sie versuchen, sich an Ihre Junioren zu wenden, ohne die geringste Aura eines Senioren zu haben. Versuchen Sie, mit ihnen auf Augenhöhe zu sprechen, und zeigen Sie Neugier in dem Code, den sie geschrieben haben. Fragen stellen, Antworten hören. Fragen Sie nicht anklagend wie:
"Ihr Code ist ziemlich unflexibel, Sie müssen ihn in diesen ändern ..."
stattdessen fragen
"Ich frage mich nur, was wäre, wenn jemand ... schafft es Ihr Code, damit umzugehen? ... Ich denke, ein Strategiemuster könnte hier Abhilfe schaffen. Was denken Sie?"
Ich glaube, dies wird Ihnen dabei helfen, gesündere Gespräche mit ihnen zu führen, als wenn Sie als Professor / Dozent auf sie herabblicken und alles wissen. Es wird Ihnen auch helfen, ihre Argumentation und Perspektiven besser zu verstehen.
quelle
Steuern Sie den Push-Zugriff auf das Repository?
Bei Open Source wird der Push-Zugriff immer von einem Gatekeeper gesteuert, der für die Durchsetzung der Qualität verantwortlich ist. Wenn Sie die Commits, die sie vorantreiben, aktiv überwachen, sollten Sie genau wissen, wo sie sich verbessern können.
Können sie Ihren Code hacken oder verbessern? Wenn sie die Möglichkeit haben, die Interna zu sehen, wie Ihr Code funktioniert, lernen sie möglicherweise, wie sie sich besser an Ihren Stil anpassen können. Wenn Sie Ihre Vorschläge vorantreiben, ohne sie offen anzunehmen, sind sie weniger geneigt, Ihrer Meinung zuzuhören.
Unter bestimmten Umständen gibt es keine richtige Antwort (z. B. Einstellungen für den Codierungsstil). Versuchen Sie in diesem Fall, eine unternehmensweite Richtlinie zu erstellen (oder durchzusetzen), damit sie verstehen, dass der Stil des Codes auf die Hauptcodebasis abgestimmt sein sollte. Die Verwendung einer bereits etablierten Stilrichtlinie (wie Microsofts Stilrichtlinie für C #) ist der beste Weg, insbesondere für neue Entwickler im Team.
Wenn Sie pauschale Aussagen über ihre Codierungstechniken machen, besteht die Möglichkeit, dass Sie die Gründe für ihre Auswahl nicht vollständig verstehen. Schon der Ton Ihrer Frage lässt Sie arrogant klingen. Was gewinnen / opfern Sie, wenn Sie Ihre Herangehensweise an die jüngeren Entwickler forcieren?
Die Schlüsselfrage, die Sie sich stellen müssen, ist, ob Ihre Vorschläge darauf abzielen, die Qualität der Codebasis aufrechtzuerhalten / zu verbessern oder Ihre Dominanz / Überlegenheit gegenüber Ihren Kollegen zu behaupten. Ersteres ist eine einfache Qualitätskontrolle und kann als solche gerechtfertigt werden. Die Leiter ist nachteilig für die Teamdynamik, unabhängig davon, ob Sie das Recht haben oder nicht.
In jedem Fall sollten Sie einen konkreten Beweis dafür haben, dass Ihre Lösung tatsächlich überlegen ist, wenn Sie sie auf Ihre Kollegen übertragen möchten. Eine Leistungssteigerung sollte leicht zu verbessern sein, und alles andere ist den Aufwand nicht wert (mit Ausnahme von leistungskritischen Anwendungen). Wenn Sie Ihre Arbeit anderen zur Rechtfertigung Ihres persönlichen Überlegenheitsgefühls aufzwingen, werden Sie schließlich als der "altbackene Kerl" herausgegriffen.
Anmerkung: Die besten und talentiertesten Programmierer, denen ich im Laufe der Jahre begegnet bin, schienen immer diejenigen zu sein, die bereit waren, die Hintergrundgeschichte zu erklären, aus der ihr Ansatz hervorging.
quelle
Nun, das scheint interessant und sehr natürlich zu sein, da junge Programmierer sehr an den Code gebunden sind, den sie geschrieben haben. Vielleicht haben sie einige Zeit damit verbracht, den gleichen Code zu finden, oder sie haben ihn von einer guten Site ausgewählt (also tatsächlich, Hey Jon skeet hat das geschrieben Mann ! !).
Die hier angehängte grundlegende Zeichenfolge enthält jedoch den Code, auf den Sie sich konzentrieren müssen, und ich denke, Sie müssen erhebliche Anstrengungen unternehmen, um zu verstehen, dass die Ausführung und das erwartete Ergebnis von größerer Bedeutung sind als der Name in die Quell-Repositorys geätzt, um diesen Code einzuschieben. Sie müssen Linien zeichnen , wie , warum Ihr Code besser und ist auch gut in Bezug auf die Aufrechterhaltung es für weitere Werke.
Bedenken Sie, dass einige Misserfolge bedeutend sind (einige Herzbrüche für jeden Eigensinn erforderlich sind), aber ich denke, dass sie mit allmählicher Anstrengung auftreten und Ihre Bemühungen besser einschätzen können. Ein bisschen Zeit und ein paar Ausfälle, denke ich, würden Sie brauchen. Sie dazu zu zwingen, würde umgekehrt zu einigen Erfolgsgeschichten und dann zu Weltuntergang und Revolte führen.
quelle
Jeder hat einen anderen Stil. Wenn Sie 10 verschiedene Personen finden und diese mit einem nicht trivialen Problem konfrontieren, bieten sie Ihnen 10 verschiedene Ansätze mit 10 verschiedenen "Codierungsstandards".
Der Punkt ist: Wählen Sie das Zeug, das zählt. Wenn Ihnen von einem Junior etwas präsentiert wird, das nicht die richtige Lösung liefert, das grob ineffizient ist (+1 Größenordnung, keine Anweisung hier oder da) oder eine Sicherheitslücke schafft, dann erklären Sie Ihr Problem und warum. Wenn es ein "Ich hätte das getan" -Kommentar ist, nun, das ist großartig, Sie hätten das getan und sie hat "etwas anderes" getan, aber das Problem ist immer noch ausreichend gelöst (siehe die obigen Punkte). Fahren Sie mit dem nächsten Feature oder Fix fort.
Ein Teil des Lernens, ein guter Führer zu sein, besteht darin, zu erkennen, was wirklich wichtig ist und was nicht. Außerdem entfernen Sie sich selbst als potenziellen Engpass für die Leistung Ihrer Gruppe, wenn diese alles durch Sie überprüfen muss.
BEARBEITEN: Stellen Sie sicher, dass Ihre Vorschläge echte und nicht verschleierte Anforderungen sind. Ein Vorschlag ist genau das - ein Vorschlag, dem man folgen kann oder nicht. Wenn es eine Anforderung ist, geben Sie es als solche an.
quelle
Wie einige der anderen betonten, haben Sie nicht viel Grund, sich über sie zu ärgern, wenn Sie den Junior-Entwicklern wirklich nur Vorschläge unterbreiten und sie als solche formulieren, wenn sie dem nicht folgen, weil sie es könnten sehe nicht viel Grund dafür. Ebenso kann man sie wirklich nicht dafür beschimpfen, dass sie Ihrem Vorschlag nicht folgen, weil sie keine wirkliche Anweisung sind, Dinge auf eine bestimmte Art und Weise zu tun.
In Bezug auf den Versuch, die Junior-Entwickler dazu zu bringen, Dinge zu tun, die Sie lieber tun würden:
quelle
Dies ist eine perfekte Einführung in Unit-Tests. Wenn Ihre Junior-Entwickler eine Lösung haben, sollte diese testbar sein. Lassen Sie sie einen Komponententest erstellen, um ihren Code hervorzuheben. Überprüfen Sie dann den Einheitentest . Wenn Sie Löcher im Test zeigen können, ist es einfach, sie den Test wiederholen zu lassen und zu sehen, wie ihre Lösung unter dem Druck bricht.
So können Sie ihnen zeigen, warum Ihre Lösung besser ist, einen Komponententest erstellen, den Sie wiederverwenden können, wenn sich der Code ändert, und den Junior-Entwicklern wertvolle Lernerfahrungen ermöglichen. Und wer weiß, vielleicht finden Sie heraus, dass ihre Lösung in Ordnung ist.
quelle
Irgendwann musst du das Sagen haben. Du hörst dich an, als ob du dir Mühe gibst, sie ihre Meinung sagen zu lassen. Ihre Vorschläge sind möglicherweise nicht perfekt. Die anderen Entwickler verstehen / stimmen Ihnen möglicherweise nicht zu. Sie stimmen wahrscheinlich nicht überein. Wenn Sie das Sagen haben, ist es keine Demokratie. Das wussten sie, als sie den Job annahmen.
Wenn es keine Situationen gibt, in denen sie Ihnen folgen müssen, haben Sie es nicht verdient und erfüllen keinen Zweck als ihr Chef. Ändern Sie Ihre Rolle im Team, um eine Ressource und keine Autorität zu sein, wenn Sie nicht vorhaben, sie zu verwenden. Irgendwann müssen Sie den bestmöglichen Code unter den verfügbaren zeitlichen Einschränkungen bereitstellen und können erst nach Ablauf der Zeit jede Codezeile erneut debattieren, recherchieren und debattieren.
Gib die Befehle. Lebe mit den Konsequenzen. Aus Erfahrungen lernen. Respekt ist eine Einbahnstraße. Du demonstrierst es und sie sind es nicht.
quelle