it-swarm.com.de

Wie man einen Junior-Entwickler betreut

Dieser Titel ist etwas weit gefasst, aber ich muss möglicherweise einen kleinen Hintergrund angeben, bevor ich meine Frage richtig stellen kann.

Ich weiß, dass ähnliche Fragen bereits gestellthier gestellt wurden. Aber in meinem Fall frage ich nicht, ob ich sollte jemanden betreue oder ob die Person gut passt als Softwareentwickler. Das ist nicht meine Aufgabe zu beurteilen. Ich wurde nicht direkt gefragt, aber es ist offensichtlich, dass ich und andere hochrangige Entwickler die neuen Entwickler, die hier beginnen, betreuen sollen. Ich habe überhaupt kein Problem damit und in vielen Fällen gibt 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 etwas Zeit nahm, um mir etwas beizubringen.

Wenn ich "neuer Entwickler" sage, können sie von frisch vom College bis zu ein oder zwei Jahren Erfahrung reichen.

Vor kurzem haben hier Leute angefangen, die eine Einstellung zur Entwicklung/Programmierung zu haben scheinen, die sich von meiner eigenen unterscheidet und für mich schwer zu vereinbaren ist. Sie extrahieren gerade genug Informationen, um die Aufgabe zu erledigen, lernen aber nicht wirklich daraus. Ich finde mich immer wieder die gleichen Probleme mit ihnen. 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 meinem Flügel 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 den Weg des geringsten Widerstands beschreiten und sie im Wesentlichen zum Lernen zwingen sollen, anstatt den einfachen Ausweg zu finden?

Diese Fragen sind wahrscheinlich allgemeinere Lehrfragen und haben nicht so viel speziell mit der Softwareentwicklung zu tun.

Hinweis: Ich kann nicht mitbestimmen, an welchen Aufgaben sie arbeiten. Das Management verteilt die Aufgabe und es kann alles sein, von einer sehr einfachen Fehlerbehebung bis zum Starten einer gesamten Anwendung. Dies ist zwar keineswegs ideal und stellt offensichtlich eine Reihe von Herausforderungen dar, aber ich denke, es ist ein Thema, 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 zu versuchen, es in einfachere Probleme zu zerlegen, ihre Festschreibungsprotokolle 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 benötigen, um selbständiger zu werden.
  • Lenken 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 Einzelgespräche und funktioniert nicht gut über IM oder E-Mail. Obwohl dies im Allgemeinen in Ordnung ist, kann ich nicht immer aufhören, was ich bin.) Ich arbeite daran, breche meinen Schritt und helfe ihnen, einen Fehler sofort zu beheben. Ich habe meine eigenen Projekte, die erledigt werden müssen.
98
Josh Johnson

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

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

Darüber hinaus gibt es hier noch einige 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 und sie nicht von Ihnen abhängig machen.
  • Stellen Sie sich zur Beantwortung von Fragen zur Verfügung. Wenn Sie jemals nicht verfügbar sind oder nicht unterbrochen werden möchten, machen Sie ihnen klar, dass sie ihre Fragen bis zu einem bestimmten Zeitpunkt aufbewahren sollten.
  • 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üh mit Best Practices. Es ist besser, sich mehr Zeit zu nehmen, um ihnen den richtigen Weg beizubringen, als später zu versuchen, ihre Methoden zu ändern.
  • Lassen Sie sie frühzeitig planen/dokumentieren, was sie tun werden, anstatt sie mit dem Schreiben von Code beginnen zu lassen.
  • Sei offen dafür, von ihnen zu lernen. Sie verbringen wahrscheinlich mehr Zeit als Sie mit dem Lernen, 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, also stellen Sie sicher, dass Sie ihnen zeigen, 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, ihre Fähigkeit zu verbessern, ein Problem logisch zu lösen, und ihre Lernfähigkeit zu verbessern

  • (Von RuneFS unten) Anstatt ihnen zu sagen, was sie falsch gemacht haben, erklären Sie ihnen, wie sie es verbessern können. Stellen Sie sicher, dass Sie angeben, warum Ihr Weg besser ist als der ihre. Dies wird ihr Vertrauen stärken, anstatt es zu schwächen. Natürlich, wenn sie dir nicht zuhören, dann habe keine Angst, ihnen zu sagen, dass sie es richtig machen sollen :)
121
Rachel

Ich habe ungefähr 4 Jahre Erfahrung und kann Ihnen aus meiner Erfahrung als Junior-Entwickler sagen, was ich in Bezug auf Mentoring wünschte. Es scheint, dass Sie tatsächlich den Entwicklertyp beschreiben, der ich war, als ich anfing :)

Im Wesentlichen möchten Sie sie zum Lernen ermutigen. Einige Leute denken, dass sie nach dem College keine Bücher mehr lesen oder lernen müssen. Diese Art von Einstellung kann dazu führen, dass Sie nach Verknüpfungen suchen und diese einfach "erledigen".
Holen Sie sie "The Pragmatic Programmer" und lassen Sie sie es lesen. Dieses Buch wird ihnen helfen zu erkennen, dass Programmieren ein Handwerk/eine Karriere ist und nicht nur ein Job. Empfehlen Sie Bücher, die sie etwa vierteljährlich lesen können. Helfen Sie ihnen, ihr "Wissensportfolio" aufzubauen (wie in Pragmatic Programmer erwähnt). Ich kann Safari Books Online nur empfehlen, das viele CS/Programmierbücher enthält.

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 die Paarprogrammierung ist sehr hilfreich. Wenn Sie dies nicht tun können, führen Sie zumindest Codeüberprüfungen mit CodeCollaborator oder einem anderen ä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 einer kontinuierlichen Integration verbinden.

21
Atif

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 sagen, z. B. den Servernamen und die Datenbank, in der die Informationen gespeichert sind). Zeigen Sie ihm, wie er seine Antworten findet.

Und schreiben Sie seinen Code niemals neu, 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 von entscheidender Bedeutung. Und wenn Sie ein Programm koppeln, lassen Sie ihn häufig die Tastatur haben. Selbst wenn Sie ihm sagen, was er tippen soll, wird er durch das Tippen mehr lernen, als wenn er beim Programmieren neben Ihnen sitzt.

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 und weiß, wie der Code organisiert ist und warum Sie (als Unternehmen) die Dinge so tun, wie Sie es tun.

Wenn er einen anderen Vorschlag hat, hören Sie genau zu. Erstens kann er recht haben. Zweitens wird Ihnen das Zuhören sagen, wo seine Schwäche im Verständnis 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, dann zurück zu den wichtigsten Fragen, damit er selbst sieht, warum die Idee falsch ist. WENN er auch nur annähernd Recht hat, gehen Sie manchmal mit seinen Ideen um, nichts ist entmutigender, als immer zu erfahren, dass Ihre Ideen wertlos sind.

Stellen Sie Fragen zu seinem Hintergrund. Er weiß vielleicht einige Dinge, mit denen Sie noch nicht arbeiten konnten. Wenn dies der Fall ist und sich die Möglichkeit ergibt, 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, keine Möglichkeit hat, etwas zu wissen. Wenn er also anfängt, an einem Bereich zu arbeiten, in dem Sie einen oder mehrere dieser Fallstricke haben, können Sie ihm davon erzählen, wenn er vor dem Codieren auf dem neuesten Stand ist, und dann prüfen, ob er beim Codieren in den Fallstrick gefallen ist.

Schließlich erhalten Sie teilweise Respekt, indem Sie Respekt geben. Behandle jeden, den du betreust, respektvoll. Lassen Sie sie sich nicht herabgesetzt oder dumm fühlen. Sie werden Ihnen viel besser zuhören, wenn Sie sie mit Respekt behandeln.

10
HLGEM
  • Ich stelle immer sicher, dass der Entwickler meine Hilfe möchte, und ich achte sehr darauf, nicht tiefer in Erklärungen einzusteigen, als es ihre Geduld tolerieren kann. Wie jeder andere liebe ich den Klang meiner eigenen Stimme!
  • Ich behandle sie als gleichberechtigt und frage sie so oft nach ihrer Meinung, wie ich mich anhöre.
  • Fangen Sie sie, etwas richtig zu machen und lassen Sie 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.
8
Thomas McNamee

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 es geht. Dann saß ich da und probierte beide Möglichkeiten aus und entschied, welche die sauberste Lösung für das Problem war.

Wenn er jemals etwas tat, das für mich nützlich sein könnte, rief er mich an, um einen Überblick darüber zu geben, was er tat und warum.

Dies führte dazu, dass wenig Zeit mit mir verbracht wurde und ich im Wesentlichen selbst die richtigen Antworten und die Umsetzung der Dinge lernen musste. Wenn ich jemals stecken bleiben würde, wäre er natürlich da, um zu helfen, aber das war ein paar Mal. Nach nur 5 Monaten Arbeit mit ihm habe ich wahrscheinlich mehr Wissen über die Dinge gewonnen als während meines gesamten Universitätskurses.

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

7
ediblecode

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

  • 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 zu "Nun, ich würde es versuchen, aber ..." sie eine eigene Idee haben, die für einen Ausgangspunkt nützlich sein kann .

  • Werfen Sie einen kurzen Blick auf das, was sie tun möchten, und geben Sie Hinweise, damit sie das Problem herausfinden. Dies ist nicht die Antwort von "Nehmen Sie einfach diese Codezeile heraus", sondern schlagen vor, dass sie sich ansehen, was da ist und ob alles notwendig ist.

  • Wenn das erste Paar nicht arbeiten wird, würde ich versuchen, sie dazu zu bringen, meinen Anweisungen zu folgen, was zu tun ist, um das Problem zu beheben. Dies ist der nächste Schritt in der Entwicklung. 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 vorhanden ist, erstellt werden, wenn jemand die Arbeit auslagert auf mich für dieses System, das ich so gut zu kennen scheine.

7
JB King

Eine Sache, die ich hier in meiner Arbeit getan habe und die ich als sehr nützlich empfand, war, ein Forum (dh PHPbb) für interne Fragen und Antworten einzurichten und die Regel zu befolgen, dass die Frage und/oder die Antwort länger als 5 Minuten dauern sollte gefragt und beantwortet über das Forum. 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 mehr darüber nachdenkt
  • Doppelte Fragen werden 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 nützlich ist und viele kleine Dinge dokumentiert, die mit der Zeit verloren gehen könnten.
5
Fabio Ceconello

Ich werde mich hier dem Trend widersetzen und vorschlagen, dass Sie nicht versuchen, Nachwuchsentwickler zu ermutigen, zu lernen, wie man die Antworten selbst findet. Das sieht aus wie ein Spiel von "Ich habe es, aber ich werde es dir nicht geben."

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

Wenn Sie eng mit ihnen zusammenarbeiten, lernen sie, wie Sie die IDE richtig verwenden; wie man eine Datenbank normalisiert; wie Sie DRY Ihren Code ausgeben). .. was auch immer Sie wissen, das ist wissenswert.

Die Schlüssel sind: Eins - um sich ihnen zur Verfügung zu stellen, damit sie sehen können, wie Sie arbeiten. Und zwei - zu laut sagen warum du tust was du tust. "Dieser Code wiederholt sich, also werde ich ihn umgestalten", nicht "Extraktionsmethode für diese drei Zeilen verwenden".

4
Sean McMillan

Ich musste bisher 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 ihn dann allgemein beraten, wo er als nächstes suchen soll. (Welche App, vielleicht welches Modul usw.). Ich würde ihn niemals zappeln lassen, aber ich würde auch niemals irgendetwas von der Arbeit machen. Geben Sie nur die Richtung an. Wenn er immer noch Probleme hätte, würde ich nur mit den Schultern zucken und sagen "Fang an, den Code zu verfolgen". Und jedes Mal, wenn ich das sagte, erschauderte er - wissend, dass er vor einer mühsamen Übung stand. Es machte ihn verrückt, weil wir beide wussten, dass ich das Problem wahrscheinlich in 10 Minuten finden könnte, wenn ich einfach von meinem Hintern steigen und helfen würde.

Jahre später hat er sich größeren Dingen zugewandt und trainiert jetzt seine eigenen Junioren. Und seine Lieblingsgeschichte ist, wie ich ihm immer sagen würde, er solle "den Code verfolgen", und wie diese Code-Verfolgungsübungen entscheidend waren, um ihn zum Programmierer zu machen, der er heute ist.

4
Brett

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

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

Sobald sie in der Hand sind, werden sie durch Artikel und Dokumentationen gezwungen, über die Lösung zu lesen, anstatt andere Entwickler nach einer schnellen Antwort zu fragen.

Dadurch wird Folgendes erreicht:

  • Erfahrene Entwickler entlasten.
  • 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, aber stellen Sie sicher, dass Sie sie in die richtige Richtung weisen.

3
BrandonV

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

Auf diese Weise verpflichten Sie sich, Zeit für die Arbeit mit Junior zu verwenden, und er wird in der Lage sein, das "wirkliche Leben" zu sehen. Indem er an realen Aufgaben arbeitet und lebhaftes Feedback hört, kann er p ziemlich schnell auf Touren bringen.

3
vang

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 Einstellung zur Entwicklung/Programmierung zu haben scheinen, die sich von meiner unterscheidet und für mich schwer zu vereinbaren ist. Sie scheinen gerade genug Informationen zu extrahieren, um die Aufgabe zu erledigen, lernen aber nicht wirklich daraus.

Die meisten Leute wollen wissen wie um etwas zu tun. Diese Einstellung ist am Anfang in Ordnung, wenn Sie mit dem Lernen neuer Dinge und dem Erlernen Ihrer Arbeit überfordert sind.

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

Einige Leute codieren, 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 Codierung 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, für diejenigen, die sich über die Aussicht freuen, all dieses Mentoring für Nachwuchsentwickler durchzuführen: Stellen Sie sicher, dass Ihr Management versteht, was los ist.

Anderen Menschen beizubringen ist im Allgemeinen harte Arbeit. Es erfordert Konzentration 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 belasten.

  • Wenn Ihr Management weniger erfahrene Entwickler mit der Erwartung anstellt, dass leitende Entwickler Schulungsaufgaben übernehmen, stellen Sie sicher, dass dies explizit ist. Finden Sie heraus, wie der Zeitrahmen aussehen wird, 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 einem vereinbarten Zeitpunkt zu bewerten. (Wenn sie Entwickler einstellen, die Unterricht und Mentoring benötigen, das Management dies jedoch nicht plant, ist dies offensichtlich ein ernstes Problem.)

  • Nicht jeder ist ein guter Lehrer oder Mentor, und nicht jeder will es sein. Ich will nicht knusprig oder bitter klingen; Ich unterrichte sehr gerne. Aber es ist albern zu erwarten, dass jeder (trotz seiner eigenen Talente) gut darin sein wird, 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 nicht gerne Mentoring betreibt, 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, an dem Sie beteiligt sind Diese Pflichten sind ein Plan mit einem schwerwiegenden Fehler. Auf der anderen Seite ist es auch etwas zu kommunizieren, wenn Sie gut unterrichten oder betreuen möchten.

  • Wenn Lehre und Mentoring ungleichmäßig auf die Bevölkerung der leitenden Entwickler verteilt sind, stellen Sie sicher, dass diese Aufgaben für das Unternehmen genauso wertvoll sind wie die Erfolge bei der Produktentwicklung.

1
Pointy

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

Aber nur sehr wenige Lebenssituationen 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, benötigen Sie einige Elemente:

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

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

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

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

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

Hoffentlich haben Sie keine davon. Wenn Sie dies tun, stellen Sie fest, 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 ähnelt dem Wohlfahrtsproblem und wird durch die Wirtschaftstheorie erklärt.

Erleuchtetes Eigeninteresse besagt, dass die Menschen das, was sie als die vorteilhafteste Option in einer bestimmten Situation ansehen. Beachten Sie, dass es das ist, was sie sehen. Ich sehe das Wichtigste als autark und lernend an. Also mache ich die Dinge selbst. Andere sehen jedoch möglicherweise, dass sie nur innerhalb der Frist Arbeitscode bereitstellen müssen. Deshalb suchen sie nach der kostengünstigsten Methode, um dies zu tun. 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, wachsen sie nicht.

1
Spencer Rathbun

Ihre Organisation, wie Sie sie beschreiben, unterscheidet sich sehr von meiner. Ich habe die Kontrolle über meine Juniorenarbeit und sehe es als meine Aufgabe an, zu beurteilen. So ist vieles anders.

Eine Sache, zu der ich Ihnen trotzdem raten möchte, ist, in den ersten zwei Wochen häufig ihren Schreibtisch zu besuchen, insbesondere. 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 stecken bleiben. Ich stelle sicher, dass sie den Regeln folgen und das Rad nicht neu erfinden. Ich bringe ihnen bei, so oft wie möglich zu verpflichten. Lernen Sie sie, sich schrittweise zu entwickeln, und denken Sie schrittweise über Design nach.

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

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

1
jdv-Jan de Vaan

Ich werde dir meinen Blick darauf geben.

Grundsätzlich lerne ich gut, wenn ich:

  1. Ich bekomme eine formelle Einführung in das Thema. Ich kann nie etwas Neues lernen, ohne dass jemand (ja, eine Person) alle Fragen beantwortet, die ich zu diesem Thema habe neue Konzepte. Sobald ich das getan habe, habe ich ...
  2. Holen Sie sich ein Buch. Als mein Mentor sollten Sie genau das gleiche Buch haben, damit ich immer etwas sagen kann wie: "Hey, was bedeutet das in Kapitel vier, Seite 72, Absatz 6 ... "und Sie werden genau wissen, wovon ich spreche. Sobald ich ein Buch habe, bin ich unabhängiger und stelle wirklich nur Fragen. Dann habe ich ...
  3. Starten Sie gemeinsam ein Projekt. Dies ist der wichtigste Teil des Prozesses. Hier können Sie mich über Best Practices, Algorithmen, schwierige (aber nützliche) Sprachfunktionen usw. 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.

Wenn dies gesagt ist, müssen Sie immer noch regelmäßig mit ihm arbeiten. Eine allgemeine "Zeitleiste" sollte sein ::

  • 1 Monat. Sollte die grundlegende Syntax kennen. Immer noch nicht unabhängig beim Codieren.
  • 3 Monate. Zu diesem Zeitpunkt sollte er die Syntax wie seine Westentasche kennen und in der Lage sein, einfache Probleme mit Leichtigkeit zu lösen. Er ist viel unabhängiger, nur noch nicht ganz da.
  • 6 Monate. Sie sollten neben allem anderen wissen: Best Practices, gängige Algorithmen usw. Er sollte in der Lage sein, selbst ein Projekt zu machen, vielleicht mit ein bisschen Hilfe von SO.

Abgesehen davon ist der einfachste Weg, jemanden unabhängig zu machen, ihm ein schwieriges Thema zu geben und ihm nichts zu geben, um ihm zu helfen, außer dem Internet. Er wird gezwungen sein, selbst zu lernen und er wird seine Sachen kennen.

Nachdem er weiß, was er wissen soll, lassen Sie ihn frei. Lassen Sie ihn los und lernen, was er lernen möchte (Sie könnten Sie immer sagen möchte, dass er weiter in dieser Sprache arbeitet).

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

1
Dynamic

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

Ich denke, es kann für jeden von Vorteil sein, der tatsächlich Programmieren macht, lehrt oder betreut (oder sogar für jeden, der ein sinnvolles Leben führen möchte). Sie und/oder Ihre Kollegen finden es möglicherweise die Zeit wert, diese Vorträge zu sehen, wie ich es getan habe

0
Lorand Kedves

Unterscheiden Sie zwischen niedrigeren und höheren Lernniveaus. Wenn es um Wissen, Verständnis oder Anwendung geht, habe ich keine Probleme damit, ihnen direkt die Antwort zu geben und kurz zu erklären, wie sie es 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 Sie sich nicht ärgern, wenn Sie es nicht tun.

Wenn Sie nach den ersten Wochen zu oft mit solchen Fragen unterbrochen werden, verwenden Sie 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 sagen 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, verbringe ich mehr Zeit mit dem Thema. Hier liefern Sie Ihre Gründe für Ihre Entscheidungen und helfen ihnen, die gleichen Schlussfolgerungen zu ziehen. Dies kommt am häufigsten in Sachen Design und Stil vor. Sagen Sie ihnen nicht einfach, sie sollen ein bestimmtes Design verwenden, zeigen ihnen, warum es ihrer ersten Wahl überlegen ist. Lassen Sie sie Fehler machen und ihre eigenen Fehler beheben.

0
Karl Bielefeldt