Fünf neue Nachwuchsentwickler und viele komplexe Aufgaben. Was nun?


10

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?


1
Alle 5 Jr. Leute wurden in Ihr Projekt aufgenommen? Sind Sie der einzige Sr. Dev, der sie überwacht?
Tyanna

@ Tyanna: Ja, ich bin der einzige Senior in diesem Projekt. Die anderen Senioren wurden vor einiger Zeit zu anderen Projekten versetzt.
Mxe

2
Das erste, was Sie tun müssen, ist dem Management zu erklären, dass Sie etwas weniger produktiv sind, wenn Sie die Neulinge hochfahren
jk.

Als Absolvent vor kurzem bin ich sehr überrascht, dass es ein Programm gibt, das weder Parallelität noch Leistung abdeckt.
Daniel Joseph

+1. Ich bedaure nur, dass ich Sie nicht mehr unterstützen kann.
Shivan Dragon

Antworten:


2

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.


20

Paarprogrammierung klingt hier nach einer großartigen Möglichkeit.

  • Geben Sie vier von ihnen zwei der einfacheren dieser Fehler, lassen Sie sie sich paaren und lassen Sie jedes Paar einen von ihnen angehen.
    • Formulieren Sie diese Anfrage wie folgt: "Können Sie herausfinden, was dies verursacht?". Lassen Sie sie noch nicht darüber nachdenken, wie sie das Problem beheben können.
    • Sobald sie ein gewisses Maß einer Erklärung tun haben, dann fragen sie , wie es behoben werden könnten. Auf diese Weise werden sie nicht auf einmal mit einer großen Aufgabe überfordert. Lassen Sie sie los und experimentieren Sie mit dem Code, wenn sie es noch nicht getan haben. Sobald sie einen Plan haben - auch einen vagen -, können Sie sie zu einer guten Lösung führen.
  • Mit dem anderen kannst du dich paaren und mit ihm an einem der härteren arbeiten. Dies mag aufgrund seiner Unerfahrenheit mit dem Code schwieriger sein, aber er wird auch den Vorteil haben, dass jemand mit Erfahrung mit ihm durchgeht.
    • Ich denke, eine neue Funktion könnte aufgrund Ihrer Erfahrung ein guter Weg sein, dies zu tun. Sie können ihm die vorhandene API zeigen, wenn die neue Funktion entwickelt wird.

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:

  • Wir bekamen einen Fehler und nach ungefähr 10 Minuten Einführung wurde uns gesagt, wir sollten versuchen herauszufinden, was los war.
  • Ungefähr eine Stunde später teilten wir uns auf und gruben uns in zwei verschiedene Gedankengänge.
  • Ungefähr zwei Stunden später fand ich im Allgemeinen heraus, wie der Code funktionierte, wusste aber nicht genau, wo die fehlerhafte Ausgabe generiert wurde. Er fand heraus, wie es erzeugt wurde, indem er in die Rohdaten und die denormalisierten Daten grub, konnte aber den Code nicht herausfinden.
  • Wir haben uns wieder zusammengetan und sind den Codepfaden gefolgt und haben eine genaue Antwort erhalten. Daraus erarbeiteten wir mit unserem Manager einige mögliche Lösungen und implementierten sie später.

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).


+1. Das einzige Problem kann sein, 5 Personen in 2er-Paare aufzuteilen ;-)
Doc Brown

@DocBrown Nun, 5 unerfahrene Entwickler + 1 erfahrener Entwickler bedeuten, dass Sie 3 Zweiergruppen bilden können (siehe zweiter Hauptpunkt). Es wird vielleicht eher zu einem Tutorial darüber, welche Art von Code (Benutzeroberfläche, Geschäftslogik usw.) wohin geht, aber er lernt andere Dinge als die anderen 4. Drehen Sie dann bei den nächsten Aufgaben.
Izkata

7

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.


3

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 .


2

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.


Dies scheint Zeitverschwendung zu sein, wenn die Sandbox-Umgebung noch nicht vorhanden ist.
Ramhound
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.