Unser Unternehmen hat fünf neue Nachwuchsentwickler eingestellt, die mir bei der Entwicklung unseres Produkts helfen sollen. Leider erfordern die neuen Funktionen und eingehenden Fehlerkorrekturen in der Regel tiefere Kenntnisse als ein kürzlich abgeschlossener Entwickler (Threading / Parallelität, Debuggen von Leistungsengpässen in einem komplexen System usw.).
Das Delegieren (und Planen) von Aufgaben, die sie (wahrscheinlich) lösen können, das Beantworten ihrer Fragen, das Mentoring / Verwalten, das Überprüfen ihres Codes verbrauchen meine ganze Zeit und ich habe oft das Gefühl, dass ich die Probleme weniger Zeit lösen kann als der gesamte Delegierungsprozess (Ich zähle nur meine Zeit). Außerdem habe ich keine Zeit, um die Aufgaben zu lösen, die tiefere Systemkenntnisse / fortgeschrittenere Fähigkeiten erfordern, und es scheint nicht, dass sich dies in naher Zukunft ändern wird.
Also, was ist jetzt? Was soll ich tun, um ihre und meine Zeit effektiv zu nutzen?
Antworten:
Ja, Sie können Dinge schneller lösen als sie können. Deshalb sind Sie älter und sie sind es nicht. Ein guter Senior möchte jedoch auch seine Junioren auf die Seniorenebene bringen. Der einzige Weg, dies zu tun, besteht darin, sie lernen zu lassen, wie man Dinge macht.
Mentoring ist derzeit die effektivste Nutzung Ihrer Zeit, nicht das Codieren.
Betrachten Sie es so: Wenn Sie die nächsten sechs Monate effektiv mit Mentoring verbringen und die Junioren genug lernen, um fortgeschrittene Entwickler zu werden, dann haben Sie 5 Zwischenentwickler und einen Senior. Wenn Sie die ganze harte Arbeit selbst erledigen, weil sie schneller ist, werden Sie in sechs Monaten noch 5 Junioren haben, die mit den Daumen drehen (nun, die besten von ihnen werden bis dahin zu anderen Jobs übergegangen sein, wenn Sie ihnen keine herausfordernde Arbeit geben, also Sie kann weniger oder neuere Junior Devlopers haben) und einen überarbeiteten und launischen Senior.
Sie wissen, welche komplexen Interaktionen normalerweise in den Fehlern zu finden sind. Entwickeln Sie daher einige Schulungen speziell zu diesen Typen, wenn es darum geht, Fehler zu beheben und das eigentliche Problem zu finden, und dann zu den Methoden, die normalerweise zur Behebung dieser Probleme erforderlich sind. Dann geben Sie ihnen diese Probleme, wenn sie auftauchen. Ja, die Behebung dauert länger, und Sie sollten dies in Ihren Zeitschätzungen berücksichtigen.
Die Idee der Paarprogrammierung ist großartig. Koppeln Sie für jedes wirklich fortgeschrittene Problem mit einem anderen. Selbst wenn sie noch nicht genug wissen, um das Problem zu lösen, hilft es ihnen, den Junior an der Tastatur zu haben, während Sie ihm sagen, was er bei der Suche nach der Ursache versuchen soll, um den Prozess der Fehlerbehebung zu lernen. Erwarten Sie natürlich nicht nur, dass sie Diktate machen. Erklären Sie, wonach sie suchen sollen und warum. Fragen Sie nach ihren Ideen und hören Sie ihnen zu. Erklären Sie, warum ihre Idee keine gute Wahl ist, wenn dies nicht der Fall ist. Verwenden Sie die sokratische Unterrichtsmethode, indem Sie Leitfragen stellen. Sie werden sich besser an die Lösung erinnern, die sie durch Ihre Leitfragen gefunden haben, als an die, die Sie ihnen ohne Erklärung diktiert haben. Sie werden sich auch besser daran erinnern, wenn sie die Lösung tatsächlich eingegeben haben, anstatt nur zuzusehen, wie Sie sie eingegeben haben.
Sobald der Junior Ihnen geholfen hat, eine bestimmte Klasse von Problemen als Teil eines Paares mit Ihnen zu lösen, können Sie ihn beim nächsten Auftreten dieser Problemklasse mit jemand anderem koppeln und nur für Beratungen zur Verfügung stehen, ohne dabei über den Schultern zu stehen Sie probieren verschiedene Dinge aus.
Sie haben fünf neue Leute, was wirklich schwer ist. Sie müssen allen gegenüber fair sein und wechseln, mit wem Sie sich paaren oder denen Sie die Anleitung geben. Spiele keine Favoriten. Aber Sie müssen auch eine Person sein, die "harte Liebe" bietet, wenn jemand nicht erfolgreich ist und Fortschritte macht. Möglicherweise müssen Sie einen oder mehrere von ihnen beiseite rufen und ihnen sagen, dass sie sich verbessern müssen und warum Sie das Gefühl haben, dass sie keinen Erfolg haben. Some Leute lassen Sie die ganze Arbeit erledigen, wenn Sie koppeln und Sie können; lassen Sie dies nicht zu, nur weil es einfacher ist. Wenn die Person die Arbeit nicht erledigen kann, ist es freundlicher für sie und viel besser für Ihr Team, wenn Sie sie nicht tragen, wenn es offensichtlich ist, dass sie nicht lernen kann oder will, unabhängiger zu sein.
Denken Sie daran, Sie bekommen, was Sie erwarten. Wenn Sie nicht viel erwarten, werden Sie nicht viel bekommen. Erwarten Sie, dass sie glänzen und die meisten von ihnen werden Ihrem Standard entsprechen.
quelle
Paarprogrammierung klingt hier nach einer großartigen Möglichkeit.
Für eine Anekdote / ein Beispiel für diesen Vorschlag: So wurde ich in den haarigsten Teil der Codebasis eingeführt, an der ich arbeite - mit dem anderen relativ neuen Entwickler, mit dem ich gepaart wurde, haben wir am Ende so etwas gemacht:
Ich habe seitdem die Wartung dieses gesamten Teils der Codebasis geerbt, da ich wirklich der einzige bin, der versteht, wie es funktioniert (die ursprünglichen Entwickler, die es noch gibt, erinnern sich nicht einmal vollständig daran).
quelle
Lehre sie. Weisen Sie ihnen Aufgaben zu, die sie leicht lösen können.
Einfach ausgedrückt, das Problem ist, dass die besagte Belegschaft nicht qualifiziert genug ist, um mit der Aufgabe, die sie hat, sehr produktiv zu sein. Als solches können Sie entweder 1) die Aufgabe erleichtern 2) versuchen, die Fähigkeiten der Belegschaft zu verbessern.
Ein ähnliches Problem tritt fast immer (bis zu einem gewissen Grad) auf, wenn eine neue Person einem Team beitritt und anfängt, an einer Codebasis zu arbeiten, mit der sie keine Erfahrung hat. Dies wird zu einem größeren Problem, wenn die Tools und Methoden unbekannt sind. Durch Schulung der Person, um sich mit den Werkzeugen und Methoden vertraut zu machen, kann das Problem schneller behoben werden.
Die Lösung eines solchen Problems braucht jedoch Zeit - man kann nicht einfach erwarten, dass andere alles wissen oder alles in einem einzigen Moment lernen. Vielleicht wäre die Einführung einiger Bücher über Parallelität, Softwareoptimierung und allgemeine Methoden ein guter Anfang.
quelle
Es hört sich so an, als wären Sie nicht Teil der Einstellungsentscheidung gewesen. Machen Sie eine faire Einschätzung ihrer Fähigkeiten, aktuelle Aufgaben zu bewältigen. Schreiben Sie einen Bericht mit einer Empfehlung auf (externes Training und solche Aufgaben, solange dies keine Auswirkungen auf Ihre Lieferzeit hat), und senden Sie den Bericht an Ihren Manager, der möglicherweise mit demjenigen spricht, der diese Mitarbeiter eingestellt hat. Eine neue Person kann in ein Team aufgenommen werden, aber 5 neue Personen gleichzeitig klingen nicht gut, es sei denn, Sie haben einen entspannten Laden. Was auch immer Sie tun, versuchen Sie nicht, sie in Ihrer Projektzeit zu unterrichten, es sei denn, dies wird im Plan berücksichtigt.
Bearbeiten: In dieser Situation kann es angebracht sein, das Brooksche Gesetz zu erwähnen .
quelle
Vielleicht können Sie einige Zeit damit verbringen, eine Sandbox-Umgebung zu erstellen, in der Sie sie einsetzen können, um einige der schwierigen Probleme zu lösen, ohne Schaden zuzufügen. Lassen Sie sie ihre Lösungen so gründlich wie möglich testen. Setzen Sie mehr als 1 auf das gleiche Problem.
All diese Dinge geben ihnen die Möglichkeit, sich so gut zu qualifizieren, dass sie nützlich sind, und sie benötigen weniger Zeit. Natürlich, wenn Sie sie (meistens) sinken oder schwimmen lassen und sie so ziemlich sinken, müssen Sie die Dinge überdenken.
Im Programmierberuf sind Leute, die meistens nicht alleine lernen können, wahrscheinlich nicht wirklich die Mühe wert, die nötig wäre, um sie zu unterrichten. Aber ich denke, sie werden Sie wahrscheinlich am meisten überraschen, wie gut sie miteinander auskommen, wenn Sie die Hilfe einschränken.
quelle