Wann helfen Sie weniger erfahrenen Programmierern nicht? [geschlossen]

57

Denken Sie, dass es eine gute Idee ist, wenn ein Junior-Programmierer Hilfe braucht, um immer einzuspringen und zu versuchen, sie zu erziehen? Oder ignorieren sie alle "Fischunterricht" -Ratschläge, die Sie ihnen geben, und konzentrieren sich nur auf den "Fisch", den Sie ihnen gerade gebracht haben? Lassen Sie sie immer selbst herausfinden, dass Fehler der beste Weg sind, um zu lernen? Oder haben Sie Angst, dass sie sich so verbrennen und frustrieren, dass sie den Wunsch verlieren, auf dem Laufenden zu bleiben?

Wann wählst du, wann du jemandem helfen möchtest, der jünger ist als du, und wann du zurücktrittst und ihn durch seine Fehler lernen lässt?

Doug T.
quelle
5
+1. Sehr gute frage Das Füttern mit dem Löffel hilft niemandem, aber es ist auch ein großer Fehler, jemanden flundern zu lassen.
Steve
1
Vergessen Sie nicht, dass Sie Dinge nicht immer selbst erledigen können. Manchmal haben Sie ein Problem oder einen Fehler und Sie brauchen einen neuen Verstand, um es zu lösen. Übrigens, wenn sie den Wunsch verlieren, sich mehr Mühe zu geben, haben sie es vielleicht nicht wirklich verdient, erzogen zu werden. Man kann kein Gehirn mit einem Löffel füttern, das funktioniert nie. Ich stelle oft die Frage, die meine Lehrer aus vielen Gründen nicht beantworten können: Aus irgendeinem Grund habe ich eine Art immer hungrige Neugier, die mich dazu bringt, meine Arbeit erst dann zu erledigen, wenn ich viel weiß. hüte dich vor solchen Schülern, sie werden nicht nur deine Zeit verschwenden, sondern auch ihre. Auf der
positiven
1
Schreiben Sie nicht ihren Code. Zeig ihnen deins. Gib ihnen Ratschläge (wenn sie zuhören wollen).
Kamil Tomšík

Antworten:

51

Bei einem meiner Jobs habe ich sowohl gelernt als auch gelehrt (weil ich natürlich nicht alles weiß, aber ich weiß mehr als einige)

Nicht unter allen Umständen legen Sie Ihre Hände auf der Tastatur. Dies ist sowohl für Sie als auch für die Person, die Sie unterrichten, frustrierend. Selbst wenn Sie ihnen Schritt für Schritt Anweisungen geben, ist es gleichbedeutend damit, wenn Sie Ihre Hände auf die Tastatur legen, ihnen einen Code zu geben und "das behebt es" zu sagen.

In was ich gelernt habe:

  • Geben Sie den Code nicht ein
  • Versuchen Sie, auf ihrem Niveau zu unterrichten (wenn sie die Syntax verstehen, erklären Sie es ihnen nicht. Dies wird sie nur langweilen; lehren Sie stattdessen die verwendeten Klassen / Funktionen).
  • Ignoriere sie nicht und sag nicht "finde es selbst heraus". Am Ende werden sie später zu Ihnen kommen, mit Ausnahme der 3 Codezeilen, mit denen sie Probleme hatten. Jetzt sind 50 Zeilen auf 8 Dateien verteilt und versuchen, das Problem zu umgehen.
  • Bringen Sie ihnen bei, selbstständig zu lernen. Eine der besten Möglichkeiten besteht darin, den Stackoverflow zu verwenden. Ich wusste manchmal sogar die Antwort, wenn sie mich fragten. Ich würde sagen "nun, ich werde diese Frage auf Stackoverflow stellen". und ich würde ihnen einen Link zu der Frage geben. Machen Sie eine Kaffeepause und sehen Sie sich einen anderen Code an. Als sie zurückkamen und fragten "Wie kann ich das Problem beheben?", Sag ihnen einfach, dass sie ihre Frage auf SO nachschlagen sollen (unter Verwendung der URL, die sie angegeben haben). Ich habe festgestellt, dass die Massen normalerweise ein besserer Lehrer sind als ich.
  • Wenn sie Code aus dem Internet kopieren und einfügen und fragen, warum er nicht funktioniert, bitten Sie sie, zu erklären, was die einzelnen Zeilen bewirken. Wenn dies nicht möglich ist, fordern Sie sie auf, die verwendeten Funktionen / Klassen zu recherchieren. Erklären Sie bei Bedarf die Klasse und die Funktionen
  • Führen Sie Codeüberprüfungen durch, um sicherzustellen, dass das Problem behoben wird, und arbeiten Sie nicht nur daran, damit es später angezeigt wird.
  • Sei nett. Wenn jemand gerade ohne Dokumentation in Ihrer Codebasis anfängt, bitten Sie ihn nicht, den Quellcode zu lesen. Geben Sie einen zusammenfassenden Überblick über die betreffende Funktion. Oder, noch besser, fange an Dokumentation zu schreiben :)
  • Demütig sein. BS nicht über das Problem. Wenn Sie es nicht wissen, sagen Sie es nicht und helfen Sie ihnen, es nachzuschlagen. Oft reicht es aus, nur die Domain zu kennen, um zu wissen, nach welchen Schlüsselwörtern gesucht werden soll.
Earlz
quelle
9
+1 für "Gib den Code nicht für sie ein", zu dem ich hinzufügen würde: Manipuliere ihre Tastatur, sodass das Drücken von Strg-V einen elektrischen Schlag verursacht, dessen Kraft proportional zur Anzahl der Zeilen in der Zwischenablage ist. :)
Ingo
Beeindruckend. Ich hatte nicht erwartet, dass ich so viele positive
Stimmen
2
Ich denke, dies ist das Wichtigste: "Oft reicht es aus, die Domain zu kennen, um zu wissen, nach welchen Schlüsselwörtern Sie suchen müssen." - war dort (als Junior)
JCasso
"Bringe ihnen bei, alleine zu lernen.", Stimme ich definitiv zu.
Steven Mou
+1 Für die Verwendung von SO. Zusätzlich zu den unterschiedlichen Meinungen wird die Antwort auch zur späteren Überprüfung aufgezeichnet. Ich finde, dass nicht jeder auch das Wissen über eine Lösung behält.
Chris
27

Sokratische Methode, dh stellen Sie ihnen Fragen, die sie dazu bringen, in eine positive Richtung zu denken

[Dies ist nützlich, auch wenn Sie nicht wissen, was das Problem ist, geschweige denn die Lösung]

Steven A. Lowe
quelle
3
+1 für Fragen. Dies ist überraschenderweise eine erstaunliche Art zu lehren. Ich kann mich nicht erinnern, wo sich der Artikel befindet, aber irgendwo unterrichtete ein Lehrer eine Reihe von Erstklässlern in binärer Addition und Subtraktion, indem er nur Fragen stellte.
Earlz
-1 für die nicht direkte Beantwortung der Frage ... +100 für die Bereitstellung einer hervorragenden Antwort auf das zugrunde liegende Thema des Mentorings: -) ...
Newtopian
@Earlz, wenn Sie es finden, fügen Sie bitte den Link hinzu.
2
@Earlz @Thor garlikov.com/Soc_Meth.html
Steven A. Lowe
22

Ich habe gelernt, ihnen beim Architekten zu helfen und dort anzuhalten. Wählen Sie die richtigen Werkzeuge aus, entwerfen Sie einen allgemeinen Entwurf für ein oder zwei komplexe Probleme und lassen Sie sie los. Wenn sie zurückkommen und um Rat fragen, geben Sie ihn ihnen in kleinen Stücken. Wenn nicht, lass sie sein.

Sie haben vollkommen recht mit dem "Verbrannten und Frustrierten". Sie werden genau das sein, wenn Sie mit dem Mikromanagement arbeiten oder sich nichts aussuchen. Schließlich hilft es sehr, eine freundschaftliche Beziehung zu Ihren Mitarbeitern aufzubauen. Die Zeit, die Sie damit verbringen, Vertrauen und gegenseitigen Respekt zu gewinnen, wird sich 10x amortisieren.

P. Brian Mackey
quelle
1
Andererseits habe ich einmal mit jemandem gearbeitet, der so faul war, dass er mich jedes Mal, wenn er sich die Parameter für eine API merken musste, fragte, anstatt sie selbst nachzuschlagen. Das hat mich verrückt gemacht: Sie konnten memcpy genauso gut nachschlagen wie alle anderen - wenn sie wollten. Damals hatten wir Kopien von Manpages gedruckt. Am Ende gab ich das Buch und sagte: "Um Himmels willen, schau selbst nach!".
quick_now
1
@schnell, oder "Ich helfe dir bei dieser einfachen Sache, wenn ich Zeit habe" und komme dann darauf zurück ... später ...!
10

Ich helfe ihnen, wenn ich wirklich brauche, dass Dinge schnell erledigt werden, wenn klar ist, dass sie eine Mauer getroffen haben, und wenn es eindeutig unvernünftig ist, von ihnen zu erwarten, dass sie es ohne Hilfe herausfinden. Wenn sie jedoch keine Zeit für etwas haben, ist es für sie besser, es zuerst zu versuchen.

Was den "Fisch" anstelle des "Fischunterrichts" betrifft, so ist der beste Weg, dies zu tun, die Probleme der Menschen für sie nicht zu lösen . Gib ihnen Ideen und lass sie damit rennen. Wenn sie damit laufen und versagen, dann helfen sie ihnen mehr. Wenn sie Erfolg haben, noch besser.

Jprete
quelle
6

Wenn sie ein guter Programmierer sind, sollten sie einen Weg finden, dies selbst zu erledigen. In einer Situation, in der es nahezu unmöglich ist, Informationen zu finden oder eine Lösung für ein bestimmtes Problem zu finden, ist das Helfen anscheinend in Ordnung, solange Sie es in Ordnung halten. Füttere sie nicht mit einem Löffel.

Vielleicht als Beispiel: Ich bin 18 Jahre alt, lerne seit Jahren alleine und habe einige verrückte Dinge geschrieben, einschließlich meines eigenen Compilers, und ich bin Autodidakt. Ich suche nur Hilfe bei Dingen, an denen ich wirklich festhalte (so wie ich mindestens einen Tag lang gesucht und experimentiert habe, aber ohne Erfolg). Ich möchte auch ein Gegenbeispiel geben: In einer Programmierstunde ließ ich mich einmal von einem Studenten bitten, Code zu debuggen, den er noch nicht einmal kompiliert hatte!

Grundsätzlich sollte ein guter Programmierer, auch ein junger, in der Lage sein, Lösungen für die meisten Probleme zu experimentieren und zu suchen.


quelle
9
Den Menschen zu Beginn ihrer Arbeit Ideen zu geben, ist oft ein schwerwiegender Produktivitätsschub, auch wenn sie ältere Menschen sind. Nach meiner Erfahrung ist es in einem Geschäftsumfeld besser, nach ein oder zwei Stunden um Hilfe zu bitten, als nach einem oder zwei Tagen, da acht Stunden Zeit zu viel Geld für eine Frage sind, auf die jemand anderes möglicherweise bereits die Antwort weiß.
Jprete
5
Aber denken Sie daran, es ist Ihr Kunde, der für Ihre Zeit zahlt! Würden sie sich freuen, wenn Sie einen Tag lang nach einer Lösung suchen, die in 15 Minuten von einem erfahrenen Entwickler gelöst werden könnte?
Adam Harte
3
In einem Geschäftsumfeld müssten Sie Ihre Zeit wohl entsprechend einteilen. Ein Tag würde es einfach nicht schaffen. Ich denke jedoch immer noch, dass Sie davon profitieren werden, wenn Sie Probleme selbst lösen, da Ihre Fähigkeiten zur Problemlösung zunehmen sollten. Am Ende können Sie jetzt oder später dafür bezahlen.
1
@Adam, die Frage ist, ob der Senior-Entwickler gefragt werden sollte oder sich selbst fragen. Dies ist immerhin ein Lernprozess.
3

Ich werde Mentor sein, aber ich gehe weg, wenn sie wollen, dass ich ihre Arbeit für sie erledige. In der Regel können einige Ratschläge zur Lösung eines Problems oder die Neuformulierung der Aufgabenbeschreibung einen langen Weg gehen. Selbst wenn Sie ihnen nur sagen, welche Wörter sie in Google verwenden sollten, kann dies eine ausreichende Hilfe sein. Maximal 2 Minuten.

jqa
quelle
3

Ich habe vor kurzem angefangen, die Pomodoro-Technik anzuwenden . Wenn ich eine Frage nicht beantworten kann, ohne meinen Gedankengang zu meiner aktuellen Aufgabe zu unterbrechen, habe ich angefangen zu fragen, ob ich eine Antwort auf das Ende des Pomodoro verschieben kann, was einer durchschnittlichen Verspätung von etwa 15 Minuten entspricht. Ein interessanter Nebeneffekt, den ich entdeckt habe, ist, dass ich an ihrem Schreibtisch vorbeikomme, um die Frage zu beantworten. Oft haben sie sie bereits alleine gelöst. Wenn nicht, bin ich jetzt viel eher bereit, ihnen meine volle Aufmerksamkeit zu schenken.

Das ist keine Schule. Es ist kein Betrug, wenn Sie schnell eine Tatsache angeben, die sie schließlich selbst herausfinden könnten. Im Gegenteil, es ist wirtschaftlich sinnvoll, ihnen Zeit zu sparen, und meiner Erfahrung nach werden die Fähigkeiten durch Versuch und Irrtum kaum geschärft, verglichen mit einem Mentor, der Sie häufig mit kleinen Schritten in die richtige Richtung bringt. Ich möchte lieber, dass sie 10 richtige Wege lernen, Dinge mit meiner Hilfe zu tun, als 9 falsche Wege und einen richtigen für sich.

Wenn etwas leicht nachgeschlagen werden kann, bringen Sie ihm dies bei. Wenn Sie jedoch nur aus Erfahrung wissen, welche Dateien auf bestimmte Fehlersymptome hin untersucht werden müssen, kann ich nichts falsch machen, wenn Sie nur eine unerklärliche Antwort geben.

Umgekehrt sollten subjektivere Dinge wie die Architekturführung immer von der Begründung dahinter begleitet werden. Zum einen hat sich der Nachwuchsentwickler viel eingehender mit seiner spezifischen Aufgabe befasst als Sie. Sprechen Sie es durch, um sicherzustellen, dass Sie nicht zu Schlussfolgerungen springen. Zum anderen hindert es sie daran, Regeln blind auf zukünftige Situationen anzuwenden, in denen sie möglicherweise nicht zutreffen.

Ich kann mir nur einen Fall vorstellen, in dem ich mich völlig geweigert habe, einem Kollegen weiterzuhelfen. Nachdem ich einige Stunden damit verbracht hatte, etwas mehrmals zu erklären und mehrere Beispiele durchzugehen, wusste sie buchstäblich immer noch nicht, mit welcher Aussage ich schreiben sollte einige sehr wichtige Hinweise. Zu diesem Zeitpunkt hatte sie wenig Hoffnung, ihren Job zu behalten, ohne ernsthaft die Grundlagen neu zu lernen, und sie hielt sicher nur ein paar Monate durch.

Karl Bielefeldt
quelle
1

Ich höre auf, ihnen zu helfen, wenn sie zum dritten Mal mit der gleichen Frage zurückkommen.

Ich sage ihnen, ich würde ihnen gerne helfen, aber nur, wenn sie sich zuerst selbst helfen. Von dort gehen sie entweder zu einem anderen Teich, um dort umsonst zu fischen. In diesem Fall werden sie normalerweise kurze Zeit später gefeuert. Oder sie arbeiten dran und knacken den Jackpot, wenn sie mehr wollen ... das ist mehr zu lernen, als mehr davon!

Newtopian
quelle
1

Ich denke, Kontext ist wichtig.

Wenn es sich um ein kritisches Problem mit dem Produktionssupport handelt, bei dem die Reaktionszeit wichtig ist, würde ich eine Menge Hilfe zusammen mit vielen Erklärungen geben, damit sie das Problem kennenlernen können.

Wenn die Frist weniger kritisch ist, wird die Komplexität zum Treiber. Natürlich können Sie Neulingen viel helfen, indem Sie Aufgaben mit entsprechendem Können zuweisen. Wenn dies jedoch durch Nachforschungen gelöst werden kann, stimme ich den anderen Postern zu, dass es ein großartiger Ansatz ist, sie zu leiten, ohne die genaue Antwort zu geben .

Wenn sie Fragen stellen, die leicht durch einen anderen Blick beantwortet werden können, dann lenke ich sie zu ihrer eigenen Arbeit. In diesem Sinne, wenn es einen Prozess oder eine Lösung gibt, die ziemlich rot ist und es wenig Wert hat, sie zum Sklaven zu machen, dann schämen Sie sich, wenn Sie kein Wiki zur Hand haben, das sie überprüfen können.

Wenn es darum geht, Domain-Wissen zu übertragen, das auf das Unternehmen zugeschnitten ist, dann zerkleinere ich keine Worte. Vortrag so schnell wie möglich. Neulinge brauchen das, um bei allem, was später kommt, zu helfen. Es gibt keine Möglichkeit, sich zu schnell oder zu einfach über das Geschäft zu informieren. Ich hatte einmal einen Chef, der eine Stunde lang alle möglichen Streiche spielte, um mich zu einer Antwort zu führen. Ich war brandneu, wusste noch nichts über die App oder das Geschäft und beschäftigte mich mit einem Problem mit dem Produktionssupport. Ich wollte schreien: "Warum spielst du & # @ $! # @ & (* $%!)? Benutzer, die versuchen, Rechnungen herauszubekommen, warten auf eine Antwort!"

Bernard Dy
quelle
1

Ich denke, das erste, was Sie fragen müssen, bevor Sie ihnen helfen können, ist, dass Sie diesbezüglich Nachforschungen angestellt haben. Wenn ja, fragen Sie sie, was sie herausgefunden haben, und weisen Sie sie in die richtige Richtung. Es ist oft unterbewertet, aber es ist eine der besten Methoden, die ich gelernt habe. Wenn Sie Informationen darüber finden, was Sie brauchen, können Sie selbst lernen. Außerdem wird klar, dass sie es zuerst versuchen müssen.

Wenn das Problem komplexer ist, versuchen Sie, nicht zu sagen, was zu tun ist, sondern einige Ideen mitzuteilen, und fragen Sie sie, wie sie denken, dass sie das Problem angehen könnten.

Wenn sie keine Ahnung haben, versuchen Sie es auf eine sehr einfache Ebene herunterzubrechen, wo Sie nicht alle Details preisgeben, sondern die Lösung ausreichend beschreiben, damit sie es versuchen können. Dafür gibt es sehr hilfreiche Tools wie Algorithmen oder Flussdiagramme .

Versuchen Sie abschließend, sie anzuleiten, ohne den Lernprozess zu beeinträchtigen, und helfen Sie ihnen dabei, sie für jede Aufgabe, die ihnen dann zugewiesen wird, von Ihnen abhängig zu machen , was Ihre Zeit in Anspruch nimmt und kontraproduktiv ist.

amosrivera
quelle
1

Ich vermeide es, bei einfachen Dingen wie der Syntax zu helfen, die sie kennen sollten, oder wenn sie nicht wissen, dass sie in der Lage sein sollten, selbstständig zu verstehen. Wenn es etwas komplexer ist, habe ich nichts dagegen, es einmal zu erklären.

Wenn es darum geht, den Prozess zu erklären, oder die Kodierungsstandards unserer Organisation / Projekte usw., verwende ich die Drei-Treffer-Regel. Ich denke wirklich, dass eine Person lahm ist, wenn es darum geht, Dinge dreimal zu erklären. Tatsächlich ist dies auch eines der Kriterien bei unserer Bewertung.

Viel hängt vom Lernenden ab. Ich erwarte von ihnen, dass sie ein paar Dinge selbst in die Hand nehmen. Wenn sich herausstellt, dass ich mit diesem Problem konfrontiert war, habe ich die Methoden A, B und C ausprobiert, aber das Problem konnte nicht gelöst werden, werde ich ihnen helfen. Wenn sie einfach auf "Ich stehe vor diesem Problem" kommen und nichts getan haben, werde ich sie bitten, zurück zu den Büchern zu gehen und nach einer Lösung zu suchen.

DPD
quelle
1

Als Programmieranfänger (ungefähr 9 Monate in meinem aktuellen Job, der hauptsächlich Perl und SQL verwendet, und mit a) keinen Kenntnissen von Perl und b) ein paar Monaten, in denen ich vor diesem Job mit SQL herumgebastelt habe) versuche ich, beim Stellen von Programmierfragen zu zeigen Was ich bisher getan habe, oder im Fall von etwas, das nicht funktioniert (und schwer zu debuggen ist), wo ich denke, dass der Fehler liegen könnte. Wenn möglich, habe ich versucht zu lernen, wie man fischt.


quelle
1

Ich höre unter folgenden Umständen auf zu helfen:

  • Wenn ich zum Channeln von Google / Stack verwendet werde
  • Wenn ich ausreichende Unterlagen und Kommentare zur Verfügung gestellt habe und diese die RTFM-Phase verkürzen
  • Wenn sie schmutzig sind, keine Kommentare, "Ich werde dies jetzt hacken und später darauf zurückkommen" & & £>! $

Wenn ich keine geeigneten Dokumente zur Verfügung gestellt habe oder sie mit einem von mir erstellten Tool / einer Klasse arbeiten, liegt es in meiner Verantwortung, ihnen zu helfen

sunwukung
quelle