Mentoring eines Junior-Entwicklers


99

Dieser Titel ist ein wenig weit gefasst, aber ich muss möglicherweise ein wenig Hintergrundwissen vermitteln, bevor ich meine Frage richtig stellen kann.

Ich weiß , dass ähnliche Fragen wurden gefragt , hier schon. Aber in meinem Fall frage ich nicht , ob ich soll jemand Mentoring werden oder wenn die Person ist ein guter Sitz für sein Software - Entwickler. Das kann ich nicht beurteilen. Ich wurde nicht direkt gefragt, aber es ist offensichtlich, dass ich und andere ältere Entwickler die neuen Entwickler betreuen sollen, die hier beginnen. Ich habe überhaupt kein Problem damit, und in vielen Fällen verleiht es mir eine neue Perspektive auf die Dinge, und ich lerne dabei. Ich erinnere mich auch, wie nützlich es zu Beginn meiner Karriere war, wenn sich jemand Zeit nahm, mir etwas beizubringen.

Wenn ich "neuer Entwickler" sage, kann es sein, dass sie ein oder zwei Jahre Berufserfahrung haben.

Vor kurzem haben hier Leute angefangen, die eine andere Einstellung zu Entwicklung / Programmierung zu haben scheinen als ich und die ich nur schwer in Einklang bringen kann. Sie extrahieren gerade genug Informationen, um die Aufgabe zu erledigen, lernen aber nicht wirklich daraus. Ich stelle fest, dass ich mit ihnen immer wieder dieselben Probleme habe. Ich verstehe, dass ein Teil davon eine Persönlichkeitssache sein könnte, aber ich denke, es ist meine Aufgabe, mein Bestes zu geben und sie sozusagen aus dem Nest zu schieben, während sie unter meiner Fittiche sind.

Wie kann ich gerade genug Informationen vermitteln, damit sie lernen, aber nicht so viel geben, um das Problem für sie zu lösen?

Oder vielleicht:

Was ist die richtige Antwort auf Fragen, die darauf ausgelegt sind, den Weg des geringsten Widerstands zu beschreiten und sie im Wesentlichen zum Lernen zu zwingen, anstatt den einfachen Ausweg zu finden?

Diese Fragen sind wahrscheinlich allgemeinere Unterrichtsfragen und haben nicht so viel mit Softwareentwicklung zu tun.

Hinweis: Ich kann nicht mitbestimmen, an welchen Aufgaben sie arbeiten. Das Management überträgt die Aufgabe, und es kann alles Mögliche sein, von einer sehr einfachen Fehlerbehebung bis zum Starten einer gesamten Anwendung für sich. Obwohl dies keineswegs ideal ist und offensichtlich seine eigenen Herausforderungen birgt, denke ich, dass es ein Thema ist, das am besten für eine andere Frage übrig bleibt. Das Beste, was ich tun kann, ist ihnen bei dem vorliegenden Problem zu helfen und ihnen zu helfen, es in einfachere Probleme zu zerlegen und auch ihre Commit-Protokolle zu überprüfen und auf Fehler hinzuweisen, die sie gemacht haben.

Meine Hauptziele sind:

  • Helfen Sie ihnen und geben Sie ihnen die Werkzeuge, die sie brauchen, um unabhängiger zu werden.
  • Steuern Sie sie in die richtige Richtung und brechen Sie frühzeitig schlechte Entwicklungsgewohnheiten.
  • Verringern Sie die Zeit, die ich mit ihnen verbringe (der oben beschriebene Persönlichkeitstyp benötigt in der Regel viel mehr Zeit im persönlichen Kontakt und kommt bei Sofortnachrichten oder E-Mails nicht gut zurecht. Auch wenn das im Allgemeinen in Ordnung ist, kann ich nicht immer aufhören, was ich tue). Ich arbeite daran, unterbreche meine Schritte und helfe ihnen, einen Fehler augenblicklich zu beheben (ich habe meine eigenen Projekte, die erledigt werden müssen).

1
Sie können nur jemandem helfen, das zu werden, was er selbst werden möchte. Führen Sie diejenigen, die geführt werden wollen.
Darknight

14
Sie haben Recht damit, dass es eine Menge gibt, die nicht spezifisch für die Softwareentwicklung ist, aber es geht darum, ein guter Lehrer zu sein (auch wenn dies nicht Ihre Hauptaufgabe ist). Im Rahmen des Unterrichts habe ich in der Chronik der höheren Bildung ein kleines Stück geschrieben , das besagt, dass Erfolg eintreten kann, wenn Sie drei Rollen spielen: ein gutes Vorbild sein, als technischer Support fungieren (bis sie herausfinden, wie man gute Fragen stellt und wo ) und Cheerleader sein (geduldig und unterstützend).
Jcmeloni

1
Es gibt eine Menge großartiger Rückmeldungen zu diesem Thema hier: programmers.stackexchange.com/questions/137708/…
KodeKreachor

Warum kaufen Sie in die "Mentoring" -Rhetorik ein? Verwenden Sie das Wort "Training": Sie beschreiben "Training für den Job" , das ist kein philosophisches Zeug, Ihre Sichtweise auf das Universum und alles, so sollen die Dinge in Ihrem Unternehmen gemacht werden. (und Ihre Firma sollte sich
überlegen, ob

3
Und ... stellen Sie sicher, dass sich ihr Würfel auf dem Weg von Ihrem Würfel zur Toilette befindet ...
vrdhn

Antworten:


121

Es gab einmal eine Frage, die diese Art von Informationen enthielt, und das Stück, das mir am meisten zusagte, war, die Tastatur nicht zu berühren

Kurz gesagt, sagen Sie Ihrem Junior, wie er das erreichen soll, was er versucht, aber tun Sie es nicht für ihn.

Aber dazu noch ein paar andere Tipps:

  • Ermutigen Sie Google (oder ein anderes Suchwerkzeug). Wenn Sie wissen, dass die Antwort leicht online gefunden werden kann, bitten Sie sie, sie nachzuschlagen, anstatt ihnen die Antwort zu sagen. Letztendlich möchten Sie ihnen beibringen, wie sie sich selbst beibringen sollen , ohne dass sie von Ihnen abhängig werden.
  • Stellen Sie sich für Fragen zur Verfügung. Wenn Sie jemals nicht erreichbar sind oder nicht unterbrochen werden möchten, machen Sie ihnen klar, dass sie ihre Fragen bis zu einem bestimmten Zeitpunkt aufbewahren sollen.
  • Führen Sie regelmäßig Code-Überprüfungen durch, um festzustellen, was sie richtig / falsch machen. Nutzen Sie dies als Gelegenheit, um auf Best Practices hinzuweisen
  • Beginnen Sie frühzeitig mit Best Practices. Es ist besser, sich mehr Zeit zu nehmen, um sie richtig zu unterrichten, als später zu versuchen, ihre Methoden zu ändern.
  • Beginnen Sie frühzeitig mit der Planung / Dokumentation der geplanten Aktionen, anstatt sie mit dem Schreiben von Code beginnen zu lassen.
  • Seien Sie offen dafür, von ihnen zu lernen. Sie verbringen wahrscheinlich mehr Zeit als Sie, und es ist möglich, dass sie etwas lernen, das Sie nicht wussten.
  • Helfen Sie ihnen, aus ihren Fehlern zu lernen. Es wird Fehler geben. Zeigen Sie ihnen also, dass Fehler Teil des Lernens sind und dass sie sie als Gelegenheit zum Lernen nutzen sollten.

  • (Aus RuneFS unten) Anstatt ihnen zu sagen, wie sie etwas tun sollen, versuchen Sie ihnen zu helfen, es selbst herauszufinden. Dies wird dazu beitragen, die Fähigkeit zur logischen Lösung eines Problems zu verbessern und die Lernfähigkeit zu verbessern

  • (Aus RuneFS weiter unten) Erzählen Sie ihnen nicht, was sie falsch gemacht haben, sondern wie sie es verbessern können. Stellen Sie sicher, dass Sie angeben, warum Ihr Weg besser ist als der Ihre. Dies wird ihr Selbstvertrauen stärken, anstatt es zu schwächen. Natürlich, wenn sie nicht auf dich hören, dann fürchte dich nicht, ihnen zu sagen, dass sie es richtig machen sollen :)

68
+1 für die Tastatur nicht berühren. Zum Teil, weil es wichtiger ist, ihnen beizubringen, wie man etwas macht, als es in einer Mentorensituation zu tun, aber wirklich, weil ich es absolut hasse, wenn Leute meine Tastatur stehlen.
fire.eagle

3
Ich weiß, dass es bereits gesagt wurde, aber "berühre nicht die Tastatur". Ist ein sehr guter Punkt
Tom Squires

3
Es fällt mir auf, dass vieles davon den Nachwuchsentwickler nur lehrt, klügere Fragen zu stellen. Eine großartige Ressource dafür: catb.org/esr/faqs/smart-questions.html
TALlama

4
Obwohl ich mit den meisten Ihrer Punkte einverstanden bin, gibt es zwei Bereiche, in denen ich mich sehr bemühe, Coaches und andere Personen, die für die Entwicklung anderer Völker verantwortlich sind, zu unterrichten. Sag ihnen niemals, wie sie etwas tun sollen. Helfen Sie ihnen, es selbst herauszufinden, und sagen Sie ihnen niemals, was sie falsch gemacht haben, sondern wie sie sich verbessern können. Die ersteren, weil das ihr Lernen steigert, die letzteren, weil es, anstatt das Vertrauen zu schwächen, es stärken kann
Rune FS

1
@Jae: Es wird empfohlen, dass der Mentor die Tastatur des Junior nicht berührt.
6.

21

Ich habe ungefähr 4 Jahre Erfahrung und kann Ihnen aus meiner Erfahrung als Junior-Entwickler sagen, was ich mir für Mentoring gewünscht habe. Es scheint, dass Sie tatsächlich die Art von Entwickler beschreiben, die ich war, als ich anfing :)

Im Wesentlichen möchten Sie sie zum Lernen ermutigen. Einige Leute denken, dass sie nach Abschluss des Studiums keine Bücher mehr lesen oder lernen müssen. Diese Art der Einstellung kann dazu führen, dass Sie nach Verknüpfungen suchen und diese einfach "erledigen".
Hol sie dir "The Pragmatic Programmer" und lass sie es lesen. Dieses Buch wird ihnen helfen zu erkennen, dass das Programmieren ein Handwerk / eine Karriere ist und nicht nur ein Beruf. Empfehlen Sie ihnen Bücher, die sie etwa vierteljährlich lesen sollten. Helfen Sie ihnen beim Aufbau ihres "Wissensportfolios" (wie in Pragmatic Programmer erwähnt). Ich empfehle Safari Books Online mit vielen CS / Programming-Büchern.

Mit ihrem Wissensportfolio wissen sie, wo sie suchen müssen, wenn sie Probleme haben. Bringe ihnen bei, wo sie suchen sollen. Ich selbst habe kürzlich die Nützlichkeit von StackOverflow entdeckt (und wie Sie wissen, sieht es hier besser aus als nur bei Google).

Es sieht so aus, als ob Sie nicht viel Zeit mit ihnen verbringen können, aber Pair Programming ist sehr hilfreich. Wenn dies nicht möglich ist, führen Sie mindestens Codeüberprüfungen mit CodeCollaborator oder einem ähnlichen Tool durch. Sie brauchen nicht so viel Zeit, wie Sie denken.

Unit-Tests sind ebenfalls sehr wichtig. Sie können schnell schlechte Entwicklungspraktiken aufdecken, insbesondere wenn Sie dies mit kontinuierlicher Integration verbinden.


10

Stellen Sie wichtige Fragen zurück, um ihn zu Antworten zu führen, anstatt ihn nur zu informieren (Sie können ihm einige grundlegende Dinge mitteilen, z. B. den Servernamen und die Datenbank, in der die Informationen gespeichert sind). Zeigen Sie ihm, wie er seine Antworten findet.

Und schreiben Sie niemals seinen Code um, wenn er falsch ist, sagen Sie ihm, was falsch ist, und erwarten Sie, dass er ihn repariert. Sie bekommen, was Sie erwarten. Sie helfen niemandem, indem Sie ihn von Ihnen abhängig machen.

Codeüberprüfungen sind ebenfalls kritisch. Und wenn Sie ein Programm koppeln, geben Sie ihm die Tastatur häufig. Selbst wenn Sie ihm sagen, was er tippen soll, lernt er durch das Tippen mehr, als wenn er nur neben Ihnen sitzt, während Sie programmieren.

Nehmen Sie einige Beispiele aus der Software, die typisch für die Struktur der Anwendung sind, und gehen Sie sie Zeile für Zeile durch, um sicherzustellen, dass er versteht, warum jede Zeile benötigt wird und was sie tut. Es ist Ihre Aufgabe, sicherzustellen, dass er die Codierungsstandards kennt, wie der Code organisiert ist und warum Sie (als Unternehmen) die Dinge so tun, wie Sie es tun.

Wenn er eine andere Art vorzuschlagen hat, hören Sie genau zu. Erstens mag er recht haben. Zweitens wird Ihnen das Zuhören zeigen, wo seine Verständnisschwäche liegt, wenn das, was er vorschlägt, nicht praktikabel ist. Außerdem neigen die Leute dazu, dich mehr zu respektieren, wenn du ihnen zuhörst. Wenn er sich irrt, kehren Sie zu den Leitfragen zurück, um sich selbst davon zu überzeugen, warum die Idee falsch ist. WENN er sogar kurz davor steht, Recht zu haben, kann nichts entmutigender sein, als immer zu erfahren, dass Ihre Ideen wertlos sind.

Stellen Sie Fragen zu seinem Hintergrund. Möglicherweise weiß er einige Dinge, mit denen Sie nicht arbeiten konnten. Wenn dies der Fall ist und sich die Gelegenheit bietet, sie zu nutzen, stellen Sie ihm Fragen zu seinem Wissen.

Wenn Ihre Anwendung überhaupt alt ist, hat sie wahrscheinlich einige hinterhältige "Fallstricke", von denen jemand, der neu ist, nichts wissen kann. Wenn er also anfängt, an Bereichen zu arbeiten, in denen Sie einen oder mehrere dieser Fallstricke haben, können Sie ihm davon erzählen, wenn er vor dem Codieren auf Touren kommt, und dann nachsehen, ob er beim Codieren in die Fallstriche gefallen ist.

Schließlich bekommt man zum Teil Respekt, indem man Respekt gibt. Behandeln Sie jeden, den Sie betreuen, respektvoll. Fühlen Sie sich nicht herabgesetzt oder dumm. Sie werden Ihnen viel besser zuhören, wenn Sie sie mit Respekt behandeln.


1
Fast identisch mit der Antwort, die ich mir selbst gegeben hätte, aber ich werde auch hinzufügen: Lassen Sie Ihre Junioren Fehler machen (bieten Sie Möglichkeiten, diese auszugleichen), weil Fehler die beste Gelegenheit zum Lernen bieten. Ein Misserfolg löst einen emotionalen Reiz aus, der mit größerer Wahrscheinlichkeit zu einer lernfördernden Erinnerungsassoziation führt. Hoffentlich werden Ihre Junioren dadurch ermutigt, dass sie nicht mehr Fragen stellen. Ich sage meinen Junioren oft, dass es in Ordnung ist, am Anfang zu versuchen, dennoch zu scheitern, wenn sie auch versuchen, aus ihren Fehlern zu lernen, und ich benutze Tests und Codeüberprüfungen, um ihre Lernbemühungen zu leiten.
S.Robins

Leitfragen zu stellen ist eine der besten Techniken, die ich gefunden habe, um jemanden zu einem anderen Reifegrad zu bringen. Ihr primäres Ziel ist es, sich nicht auf die richtige Antwort zu erhalten, ist es sie an einen Ort zu gelangen , wo sie die richtige Antwort erkennen können , wenn sie es finden (und als solche Lage sein, die falschen Antworten auf dem Weg zu verwerfen.)
Hanf

1
@ S.Robins, ich habe festgestellt, dass es auch hilfreich ist, darauf hinzuweisen, dass Sie dieses Zeug wegen der Fehler kennen, in die Sie geraten sind.
HLGEM

8
  • Ich stelle immer sicher, dass der Entwickler meine Hilfe möchte, und ich achte sehr darauf, nicht tiefer in Erklärungen einzusteigen, als ihre Geduld tolerieren kann. Wie alle liebe ich den Klang meiner eigenen Stimme!
  • Ich behandle sie als gleichberechtigt und stelle sicher, dass ich sie so oft nach ihrer Meinung frage, wie ich abhöre.
  • Fange sie an, etwas richtig zu machen und lass es sie wissen.
  • Ich lerne immer etwas, wenn ich das richtig mache - über mein Handwerk, über meinen Beruf, über den Entwickler und über das Unterrichten.
  • Die erste Lektion lautet immer: Wann wissen Sie, dass Sie es zu lange alleine versucht haben? Viele Menschen sind stolz darauf, ihre eigenen Antworten zu finden und verbrennen wertvolle Zeit im Kreis.

Betreff: "Fange an, dass sie etwas richtig machen": Ich bin mir nicht sicher, ob ich dem zustimme, da dies impliziert, dass du ihnen immer über die Schulter schaust oder zumindest regelmäßig nach ihnen schaust. Es mag einige Beziehungen geben, in denen dies notwendig ist, aber ich denke nicht, dass die Mentor / Schützling-Beziehung eine davon ist. und es widerspricht Ihrem hervorragenden Rat, "sie als gleich zu behandeln".
Ruakh

Ruak, du machst einen ausgezeichneten Punkt. Das hat mir mein Manager beigebracht, als ich selbst Manager wurde (er war mein Mentor, aber er stammte aus Brooklyn ...), und ich habe den Wortlaut bis jetzt nie in Frage gestellt. Passender: "Beachten Sie etwas Richtiges an dem, was sie tun." Damit fange ich an. Wenn bei C-Programmierern das unvermeidliche Problem „Aus um 1“ auftritt, kann ich bemerken, dass ihre Loop-Konstruktion kompakt und gut kommentiert war, und sie dann bitten, mich durch die Logik zu führen. Vielen Dank.
Thomas McNamee

OK, ja, damit bin ich einverstanden. +1. :-)
ruakh

7

Ich bin ein Junior-Entwickler und ich denke, dass mein Mentor mit diesen Dingen sehr gut umgeht. Im Allgemeinen wird er mir ein paar Möglichkeiten nennen, etwas zu tun, aber nicht, wie ich es tun soll. Dann saß ich da und probierte beide Wege aus und entschied, welche die sauberste Lösung für das Problem war.

Auch wenn er jemals etwas tat, das für mich nützlich sein könnte, rief er mich an, nur um zu erklären, was er tat und warum.

Dies führte dazu, dass ein kleiner Teil meiner Zeit mit mir verbracht wurde und im Wesentlichen bedeutete, dass ich selbst die richtigen Antworten lernen und wissen musste, wie man Dinge umsetzt. Wenn ich jemals stecken bleiben sollte, wäre er natürlich da, um mir zu helfen, aber dies war eine Handvoll Male. Nach nur 5 Monaten bei ihm habe ich wahrscheinlich mehr Wissen gesammelt als während meines gesamten Universitätslehrgangs.

Das Wichtigste, woran man sich erinnert, ist, dass ich nur ein Individuum bin und das hat für mich gut funktioniert, weil ich bin und wie er ist. Es geht darum, eine geeignete Struktur zu finden, die Ihnen beiden hilft.


5
+1 Ich habe mehr im Beruf gelernt, als ich jemals an der Universität haben könnte, nur weil sich die Leute die Zeit genommen haben, mich zu unterrichten.
James Khoury

7

Abhängig von der gestellten Aufgabe wäre ich versucht, ein paar verschiedene Ansätze zu wählen:

  • Fragen Sie sie, was sie als nächstes versuchen würden, um die Aufgabe abzuschließen. Dies kann eine Vorstellung davon geben, wo von der Kategorie "Ich weiß nicht, was ich tun soll" bis zur Kategorie "Nun, ich würde es versuchen, aber ..." sie eine eigene Idee haben, die als Ausgangspunkt nützlich sein kann .

  • Sehen Sie sich kurz an, was sie tun möchten, und geben Sie Hinweise, um das Problem zu ermitteln. Dies ist eher als die Antwort zu geben: "Nehmen Sie einfach diese Codezeile heraus." Schlagen Sie vor, sie schauen sich an, was da ist und ist alles notwendig.

  • Wenn das erste Paar nicht zur Arbeit geht, würde ich versuchen, es dazu zu bringen, meinen Anweisungen zu folgen, was zu tun ist, um das Problem zu lösen. Dies ist der nächste Schritt im Verlauf. Wenn sie keine Ahnung haben, wo sie anfangen sollen und die Hinweise nicht funktionieren, ist dies der nächste Punkt.

  • Wenn nichts anderes funktioniert, würde ich die Arbeit für sie erledigen, aber ich würde versuchen, dies so weit wie möglich zu vermeiden, da auf diese Weise Probleme wie eine Person, die genau weiß, dass ein System erstellt wird, entstehen, wenn jemand die Aufgabe verlagert auf mich für dieses System, das ich so gut zu kennen scheint.


+1 Ich wollte etwas schreiben, aber das fasst es in meiner Herangehensweise zusammen.
Jason Sebring

5

Eine Sache, die ich hier in meinem Job gemacht habe und die ich wirklich nützlich fand, war, ein Forum (zB PHPbb) für interne Fragen und Antworten einzurichten und der Regel zu folgen, dass, wenn die Frage und / oder die Antwort länger als 5 Minuten dauert, es sein sollte über das Forum gefragt und beantwortet. Die Vorteile:

  • Es zwingt den Junior-Entwickler, die Frage klar zu formulieren, was die Beantwortung erleichtert, ganz zu schweigen von den Zeiten, in denen er die Antwort selbst findet, indem er nur ein wenig darüber nachdenkt
  • Es werden doppelte Fragen vermieden, da der Junior-Entwickler zunächst nach ähnlichen Fragen suchen sollte, die bereits gestellt wurden
  • Es hilft beim Aufbau einer Wissensbasis, die für zukünftige Einstellungen und zur Dokumentation vieler kleiner Dinge, die mit der Zeit verloren gehen könnten, nützlich sein wird.

4

Ich werde mich hier gegen den Trend wenden und vorschlagen, dass Sie nicht versuchen, Nachwuchsentwickler zu ermutigen, zu lernen, wie sie die Antworten selbst finden. Das sieht aus wie ein Spiel "Ich habe es, aber ich werde es dir nicht geben."

Schließen Sie sich stattdessen mit ihnen zusammen, um die Antwort zu finden. Sie werden es trotzdem googeln, also tun Sie es, während Sie mit ihnen sitzen. Sie werden feststellen, dass dies der Weg ist, um Antworten zu finden.

Wenn Sie eng mit ihnen zusammenarbeiten, lernen sie, wie man die IDE richtig einsetzt. Wie man eine Datenbank normalisiert; wie Sie Ihren Code austrocknen ... was auch immer Sie wissen, das ist es wert zu wissen.

Die Schlüssel sind: Einer - um sich für sie verfügbar zu machen, damit sie sehen können, wie Sie arbeiten. Und zwei - laut zu sagen, warum du tust, was du tust. "Dieser Code wiederholt sich, daher werde ich ihn überarbeiten und nicht" die Extraktionsmethode für diese drei Zeilen verwenden ".


Ich glaube nicht, dass Sie sich dem Trend widersetzen. Dies ist ein guter Tipp. um mit ihnen zu arbeiten und ihnen zu zeigen, wie Sie das Problem lösen würden (man muss jedoch so tun, als ob sie die Antwort bereits nicht kennen [nicht verbergen], um den Prozess des Findens zu veranschaulichen).
Josh Johnson

Und um klar zu sein, ich habe nicht die Absicht, Wissen zu verbergen. Aber es ist klar geworden, dass das, was ich weiß, ausgenutzt wird (bewusst oder unbewusst). Und ich spreche nicht von einer tief verborgenen Höhle der Technologie, die wir verwenden. Ich spreche über den Unterschied zwischen einem Grundelement und einem Objekt oder einer Instanzvariablen und einem lokalen Element oder einer Fehlermeldung, die genau angibt, was der Fehler ist und wo man nach ihm suchen soll. (Als Referenz: Mein aktueller Schüler verfügt über 5 Jahre Berufserfahrung. Ich glaube nicht, dass ich unvernünftig bin.)
Josh Johnson

4

Ich musste nur einmal einen Junior-Programmierer ausbilden. Es sollte helfen, ein System zu warten, das ich gebaut hatte. Das Ziel war es, ihm schließlich das gesamte System zu übergeben.

Nach einer kurzen Zeit, in der er mich beschattete, warf ich ihn ins Feuer. Ich würde ihm Fälle zuweisen und erwarten, dass sie abgeschlossen sind. Wenn er Probleme hätte, würde ich ihn erklären lassen, was das Problem war und wo er gesucht hatte. Ich würde ihm dann allgemein raten, wo er als nächstes suchen soll. (Welche App, vielleicht welches Modul zum Anschauen etc). Ich würde ihn niemals zappeln lassen, aber ich würde auch niemals irgendwelche Arbeiten machen. Nur Richtung geben. Wenn er immer noch Probleme hätte, würde ich nur mit den Schultern zucken und sagen "Beginnen Sie, den Code zu verfolgen". Und jedes Mal, wenn ich das sagte, zuckte er zusammen - weil er wusste, dass er mühsam trainieren musste. Es machte ihn wahnsinnig, weil wir beide wussten, dass ich das Problem wahrscheinlich in 10 Minuten finden könnte, wenn ich einfach von meinem Hintern abspringen und helfen würde.

Jahre später hat er sich größeren Dingen zugewandt und bildet nun seine eigenen Junioren aus. Und seine Lieblingsgeschichte ist, wie ich ihm immer sagen würde, er solle "den Code nachzeichnen", und wie diese Übungen zum Nachzeichnen des Codes entscheidend waren, um ihn zum Programmierer zu machen, der er heute ist.


3

Wann immer mir eine Frage gestellt wird, von der ich weiß, dass sie durch eine schnelle Google-Suche gelöst werden kann, finde ich Dokumentation oder einen entsprechenden Artikel und leite diese an die Person weiter, die die Frage stellt.

Zu wissen, wo Sie nachschlagen müssen, ist eine wichtige Fähigkeit, und es ist manchmal schwieriger, als Sie es sich für einen neuen Entwickler vorstellen. Sie wissen möglicherweise nicht einmal, wonach sie suchen, und hier müssen Sie ihnen helfen.

Sobald sie in der Hand sind, werden sie aufgrund von Artikeln und Dokumentationen gezwungen, Informationen über die Lösung zu lesen, anstatt sich an andere Entwickler zu wenden, um eine schnelle Antwort zu erhalten.

Dadurch wird Folgendes erreicht:

  • Entlasten Sie erfahrene Entwickler.
  • Den neuen Entwickler zum Lernen zwingen.
  • Glück für alle.

Manchmal muss man ihnen nur eine harte Liebe geben, besonders wenn sie nicht so scheinen, als wollten sie lernen. Geben Sie ihnen keine Antwort, sondern weisen Sie sie in die richtige Richtung.


3

Ich würde empfehlen, Teile Ihrer tatsächlichen Aufgaben anzugeben und alles zu tun, um seinen Code verwenden zu können. Mit anderen Worten, trainiere ihn als Ersatz für dich.

Auf diese Weise werden Sie sich dazu verpflichten, Zeit für die Arbeit mit dem Nachwuchs bereitzustellen, und er wird in der Lage sein, das "wirkliche Leben" zu sehen. Indem er an echten Aufgaben arbeitet und lebhaftes Feedback hört, wird er in der Lage sein, ziemlich schnell p auf Geschwindigkeit zu bringen.


1

Ich habe Menschen in der Vergangenheit verschiedene Fächer beigebracht, und das, was mich am meisten beeindruckt hat, ist, dass die meisten Menschen keine Fähigkeiten zum Lösen von Problemen haben . Das heißt, wenn Sie ihnen eine genaue Lösung zeigen, können sie diese später wiederverwenden, wenn sie sie erkennen oder erfahren, dass sie sie benötigen.

Aber nur sehr wenige Situationen im Leben sind so. Sofern es sich bei Ihrem Job nicht um eine "mentale Fabrik" handelt, bei der Widget A mit Tool C an Widget B geklebt wird, müssen Sie über ein paar Elemente verfügen:

  • Ein Werkzeugkasten mit Fähigkeiten und Werkzeugen
  • Eine Methode zur Problemlösung

Schauen Sie sich zum Beispiel diese Antwort an, die ich gepostet habe . Das deckt die Problemlösungsmethode ab, die viele Menschen nicht haben . Das College hat dies niemandem im CompSci-Programm beigebracht, Sie haben es entweder bereits gewusst oder es selbst herausgefunden.

Sobald die Junior-Entwickler verstehen, wie man Probleme löst, benötigen sie eine Reihe von Tools, mit denen sie diese lösen können.

  • Debugger (College hat das nie erwähnt)
  • Profiler
  • Texteditor
  • Shell (und zugehörige Utils)
  • Ressourcen (Bücher, Google, SO, Hilfeseiten)

Bestimmen Sie, was dem Junior-Entwickler fehlt, und Sie können ihm helfen, sich zu verbessern. Seien Sie sich nur bewusst, dass einige Leute wirklich nicht daran interessiert sind, wie sie ihre eigenen Probleme lösen können, und wollen nur eine "offensichtliche Schritt für Schritt" -Lösung, die ihnen übergeben wird. Das sind keine guten Entwickler.

Hoffentlich haben Sie keine davon. Wenn Sie dies tun, werden Sie feststellen, dass sich nicht alle selbst helfen, egal wie viel Zeit Sie verbringen. Es würde Mühe erfordern, und es ist einfacher, Sie zu bitten, es für sie zu tun. Es ist ähnlich wie das Wohlfahrtsproblem und wird durch die Wirtschaftstheorie erklärt.

Aufgeklärten Eigennutz sagt , die Menschen nehmen , was sie als die vorteilhafteste Option in einer bestimmten Situation anzuzeigen. Beachten Sie, dass es das ist, was sie sehen. Ich sehe das Wichtigste darin, sich selbst zu versorgen und zu lernen. Also mache ich die Dinge selbst. Andere sehen jedoch möglicherweise, dass sie nur den Arbeitscode bis zum Stichtag bereitstellen müssen. Daher suchen sie nach der kostengünstigsten Methode. Indem sie ihnen "Werbegeschenke" zur Verfügung stellen, müssen sie den geringsten Aufwand betreiben, um ihr Ziel zu erreichen. Bis Sie diese Krücke entfernen, werden sie nicht wachsen.


1

Ihre Organisation, wie Sie sie beschreiben, unterscheidet sich sehr von meiner. Ich kontrolliere die Arbeit meiner Junioren und sehe es als meine Aufgabe an, darüber zu urteilen. So viel ist anders.

Eine Sache, zu der ich Ihnen auf jeden Fall raten möchte, ist, dass Sie in den ersten zwei Wochen besonders häufig ihren Schreibtisch aufsuchen. Etwa dreimal am Tag in der ersten Woche, allmählich abnehmend.

Die Botschaft, die ich auf diese Weise zu senden versuche, ist, dass mir ihre Produktivität am Herzen liegt. Ich stelle sicher, dass sie nicht hängen bleiben. Ich stelle sicher, dass sie die Regeln einhalten und das Rad nicht neu erfinden. Ich bringe ihnen bei, so oft wie möglich zu verpflichten. Lernen Sie, sich schrittweise zu entwickeln, und denken Sie schrittweise über Design nach.

Mein schlimmster Albtraum sind Entwickler, die Ihnen jeden Tag mitteilen, dass sie nur noch einen Tag benötigen, um ihre Funktion fertigzustellen. Nach wochenlanger Verzögerung erhalten Sie ein überkompliziertes Design, das von Anfang an vom Autor gehackt wird. Zusätzliche, nicht angeforderte Fehlermerkmale werden in die Mischung geworfen, um die Verzögerung zu kompensieren, und weil sie ein freier Nebeneffekt des Designs waren.

Ich glaube, dass viele Entwickler zu diesem Ansatz geneigt sind. Wenn Sie mit einer Compex-Aufgabe alleine sind, ist es eine natürliche Reaktion, zu beweisen, dass Sie dies alleine können. Aber es ist die falsche Antwort. Qualität ist Teamwork, und je früher sie lernen, desto besser.


1

Die anderen Antworten sind sehr gut, aber ich wollte diesen einen Satz kommentieren.

Vor kurzem und in der Vergangenheit haben hier Leute angefangen, die eine andere Einstellung zu Entwicklung / Programmierung zu haben scheinen als ich und die für mich schwer zu vereinbaren ist. Sie scheinen gerade genug Informationen zu extrahieren, um die Aufgabe zu erledigen, aber nicht wirklich daraus zu lernen.

Die meisten Leute wollen wissen, wie man etwas macht. Diese Einstellung ist am Anfang in Ordnung, wenn Sie überfordert sind, neue Dinge zu lernen und zu lernen, wie Sie Ihren Job machen.

Selten sind die Leute, die wissen wollen, warum etwas getan wird. Das sind die Leute, die intelligente Manager wollen, auch wenn sie manchmal schwer zu managen sind.

Manche Leute kodieren, um gut bezahlt zu werden. Andere akzeptieren gerne Geld für die Codierung. Es ist viel schöner, mit Menschen zu arbeiten, die eine Leidenschaft für Design und Programmierung haben. Leider war es für mich auch ziemlich selten. Zumindest bis ich Stack Overflow gefunden habe.


1

Eine Sache, auf die Sie achten sollten, wenn Sie sich auf die Aussicht freuen, all dieses Mentoring für Nachwuchsentwickler durchzuführen: Stellen Sie sicher, dass Ihr Management versteht, was vor sich geht.

Anderen Menschen beizubringen ist im Allgemeinen harte Arbeit. Es erfordert Fokussierung und Konzentration, Planung und Anstrengung und vor allem Zeit. Welchen Ansatz Sie auch wählen, wenn Sie ernsthaft unterrichten und betreuen, wird dies Ihre Zeit in Mitleidenschaft ziehen.

  • Wenn Ihr Management weniger erfahrene Entwickler mit der Erwartung anstellt, dass erfahrene Entwickler Schulungsaufgaben übernehmen, stellen Sie sicher, dass dies ausdrücklich angegeben ist. Informieren Sie sich über den Zeitrahmen und stellen Sie sicher, dass Ihre Entwicklungspläne den Zeit- und Arbeitsaufwand für das Training widerspiegeln. Stellen Sie sicher, dass das Management Pläne hat, um den Erfolg der Mentoring-Bemühungen zu vereinbarten Zeitpunkten zu bewerten. (Wenn sie Entwickler einstellen, die unterrichtet und betreut werden müssen, das Management aber nicht plant, dann ist das natürlich ein ernstes Problem.)

  • Nicht jeder ist ein guter Lehrer oder Mentor, und nicht jeder möchte es sein. Ich will nicht krustig oder bitter klingen. Ich unterrichte sehr gerne . Aber es ist albern zu erwarten, dass jeder gut darin ist (trotz seiner eigenen Talente), und wir können auch nicht erwarten, dass jeder den Prozess genießt (denken Sie daran, es ist nicht einfach). Wenn Sie ein leitender Entwickler sind, der keine Freude am Mentoring hat, oder wenn Sie wirklich das Gefühl haben, eine schlechte Wahl für einen Lehrer oder Mentor zu sein, stellen Sie sicher, dass Ihr Management versteht, dass ein Plan, bei dem Sie diese Aufgaben übernehmen, ein Plan mit einem ist schwerer Fehler. Wenn Sie andererseits gut unterrichten oder betreuen möchten , können Sie dies auch kommunizieren.

  • Stellen Sie sicher, dass diese Aufgaben für das Unternehmen genauso wertvoll sind, wie Produktentwicklungsleistungen anerkannt werden, wenn Lehr- und Betreuungsaufwand auf die Gesamtheit der leitenden Entwickler ungleich verteilt sind.


1

Ich werde dir meinen Blick darauf geben.

Grundsätzlich lerne ich gut, wenn ich:

  1. Bin eine formelle Einführung in das Thema gegeben. Ich kann nie etwas Neues lernen, ohne dass jemand (ja, eine Person) alle Fragen beantwortet, die ich zu den neuen Konzepten habe. Sobald ich das getan habe ...
  2. Holen Sie sich ein Buch. Als mein Mentor sollten Sie genau das gleiche Buch haben, damit ich immer sagen kann: "Hey, was bedeutet das in Kapitel 4, Seite 72, Absatz 6 ...", und Sie wissen genau, wovon ich spreche Über. Sobald ich ein Buch habe, bin ich unabhängiger und stelle wirklich nur noch Fragen. Dann habe ich ...
  3. Starten Sie gemeinsam ein Projekt. Dies ist der wichtigste Teil des Prozesses. Hier können Sie anfangen, mich über Best Practices, Algorithmen, schwierige (aber nützliche) Sprachfunktionen usw. zu unterrichten.

Jetzt hatten Sie gesagt, dass Sie Ihre eigenen Projekte erledigen müssen und dass Sie nicht immer die Zeit haben. Deshalb wurden wir mit StackOverflow gesegnet . Ich bin sicher, sie würden ihm gerne beim Debuggen seines Codes helfen. Fragen, die dort nicht zum Thema gehören, kann er hier stellen.

Trotzdem müssen Sie immer noch regelmäßig mit ihm zusammenarbeiten. Eine allgemeine "Zeitleiste" sollte sein:

  • 1 Monat. Sollte grundlegende Syntax kennen. Immer noch nicht unabhängig bei der Codierung.
  • 3 Monate. Zu diesem Zeitpunkt sollte er die Syntax genau wie seine Westentasche kennen und in der Lage sein, einfache Probleme mühelos zu lösen. Er ist viel unabhängiger, nur noch nicht ganz da.
  • 6 Monate. Sie sollten über alles andere Bescheid wissen: Best Practices, allgemeine Algorithmen usw. Er sollte in der Lage sein, selbst ein Projekt zu erstellen, möglicherweise mit ein wenig Hilfe von SO.

Abgesehen von dem oben Gesagten ist der einfachste Weg, jemanden unabhängig zu machen, ihm ein schwieriges Thema zu vermitteln und ihm nichts anderes zu geben, als ihm im Internet zu helfen. Er wird gezwungen sein, selbst zu lernen und er wird seine Sachen kennen.

Nachdem er weiß, was Sie wollen, dass er weiß, lassen Sie ihn frei. Lassen Sie ihn losgehen und lernen, was er lernen möchte (Sie können jederzeit sagen, dass er weiterhin in dieser Sprache arbeiten soll).

Ich hoffe das hilft! Übrigens, lassen Sie ihn das lesen: Programmieren lernen in zehn Jahren .


0

Unterscheiden Sie zwischen niedrigeren und höheren Lernniveaus. Wenn es um Wissen, Verständnis oder Anwendung geht, habe ich keine Probleme damit, ihnen die Antwort mit einer kurzen Erklärung zu geben, wie sie sie beim nächsten Mal nachschlagen können. Dies ist keine Schule, es ist kein Betrug, und sie werden sich nicht für immer auf dich verlassen. Planen Sie nur nicht, in den ersten ein oder zwei Wochen etwas anderes zu erledigen, damit es Sie nicht ärgert, wenn Sie es nicht tun.

Verwenden Sie nach den ersten Wochen, wenn Sie zu oft mit solchen Fragen unterbrochen werden, einen Pomodoro-Timer und beantworten Sie keine Fragen bis zum Ende eines Pomodoro. Google ist jetzt einfach für Sie, da Sie wissen, wonach Sie suchen müssen. Sie tun dies häufig nicht. Wenn Sie ihnen also mitteilen müssen, dass sie etwas googeln sollen, teilen Sie ihnen mit, welche Suchbegriffe verwendet werden sollen, um die besten Ergebnisse zu erzielen.

Wenn ein Problem mit Analyse, Synthese oder Bewertung zusammenhängt, widme ich mich mehr dem Thema. Hier liefern Sie Ihre Gründe für Ihre Entscheidungen und helfen ihnen, zu denselben Schlussfolgerungen zu gelangen. Dies kommt am häufigsten in Fragen des Designs und des Stils vor. Sagen Sie ihnen nicht nur, dass sie ein bestimmtes Design verwenden sollen, sondern zeigen Sie ihnen, warum es ihrer ersten Wahl überlegen ist. Lassen Sie sie Fehler machen und ihre eigenen Fehler beheben.


0

Ich habe hier niemanden gesehen, der meinen persönlichen Helden Randy Pausch erwähnte .

Ich denke, es kann für jeden von Vorteil sein, der tatsächlich programmiert, lehrt oder als Mentor fungiert (oder sogar für jeden, der ein sinnvolles Leben führen möchte). Sie und / oder Ihre Kollegen finden es vielleicht lohnenswert, diese Vorträge zu sehen, wie ich es getan habe


-4

Als Junior-Entwickler habe ich das Gefühl, dass es besser ist, wenn ich auf ein Problem stoße, die Antwort sofort zu bekommen und Zeit zu investieren, um zu verstehen, wie es gelöst wurde.

Ich werde bezahlt. Mein Arbeitgeber erwartet nicht, dass ich für das Lernen bezahlt werde. Ich erwarte, dass ich am Ende des Tages einen Job mache. Es macht keinen Sinn, Zeit in einem Arbeitsumfeld zu verschwenden, um eine Lösung zu finden. Das ist etwas, was ich rechtzeitig abholen werde, hoffentlich schnell, wenn ich in dem, was ich tue, gut bin.


9
So oder so bezahlt Sie Ihr Arbeitgeber, um zu lernen
smp7d

13
Sie sind für Ihren Arbeitgeber von geringerem Wert, wenn Sie niemals besser werden als an dem Tag, an dem Sie als Junior-Programmierer eingestellt wurden.

10
Max, du liegst falsch, es sei denn, du hast einen beschissenen Arbeitgeber. Gute Arbeitgeber werden Sie dafür bezahlen, am Arbeitsplatz zu lernen oder Sie sogar zu Konferenzen oder Kursen zu schicken. Wenn Sie sich an Ihre derzeitige Einstellung halten, sollten Sie nicht damit rechnen, jemals aus dem Berufsleben als Junior-Entwickler auszusteigen. Titel wie Junior / Senior werden nicht nur nach der Zeit ausgegeben, in der Sie etwas getan haben. Wenn Sie lange das Gleiche getan, aber nicht gelernt haben, werden Sie immer noch als Junior angesehen.
Andy

5
@MaxSan Das Problem ist, dass erfahrene Entwickler Sie nur selten mit einem Löffel füttern möchten. Wir haben keine Vollzeitpraktikanten eingestellt, weil sie die Lösung nicht selbst herausfinden konnten. Wir gehen davon aus, dass Sie einige Zeit damit verbringen, es herauszufinden, und nur dann, wenn Sie ausreichend Zeit haben, um nach Hilfe zu fragen. Als Senior wird von Ihnen erwartet, dass Sie die Probleme lösen, die niemand anders kann, und Sie werden das nicht können, wenn Sie mit dem Löffel füttern.
Andy

6
Wenn Sie eine Lösung "auf einem Teller" wollen, werden Sie nie aus Ihrem Status als Junior-Entwickler herauswachsen. Aus den Ihnen gegebenen Komplettlösungen zu lernen, mag möglich sein, ist aber mit Sicherheit nicht effektiv . So funktioniert das Gehirn: Wenn Sie den Weg zur Lösung erfahren , nicht nur die Lösung selbst, lernen Sie viel mehr, als nur die Lösung zu studieren, die Ihnen jemand anderes vorgestellt hat.
perdian
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.