Wie können Junior-Programmierer für die heutige (komplizierte) Webumgebung geschult werden?


39

Derzeit entwickelt unser Unternehmen Anwendungen, die zum größten Teil aus Ruby on Rails-Webservern und einer Reihe verschiedener REST-Clients bestehen, von Kiosksystemen in Java bis zu eingebetteten Geräten in C / C ++ (neben den Schnittstellen für Standard-Webbrowser). Wir müssen unser Team erweitern und da wir es nicht geschafft haben, gute Senior-Programmierer zu finden, haben wir beschlossen, einige Anstrengungen zu unternehmen, um Junior-Programmierer auszubilden, die mit dem Unternehmen zusammenwachsen.

Wir haben ihnen bereits einige Ruby and Rails-Bücher gegeben und sie gebeten, ein paar Spielzeugprogramme zu erstellen, aber jetzt stelle ich fest, wie steil die Lernkurve für den aktuellen Stand der Webprogrammierung ist.

Als ich vor 15 Jahren mit dem Programmieren anfing, verwendete ich nur Delphi und Source Safe und war von Anfang an in der Lage, brauchbare Software zu produzieren. Sie waren beide einfache Werkzeuge und es war einfach, sich mit dem Innenleben der Umgebung auseinanderzusetzen. Langsam habe ich angefangen, Frameworks von Drittanbietern zu verwenden, bin zu CVS, SVN und schließlich zu Git gewechselt, habe die Teile gelernt, die das heutige Web ausmachen, wie HTTP, JavaScript, CSS, REST usw. Selbst nach Jahren der Erfahrung weiß ich es heute nicht mehr Genauso wie Ruby on Rails funktioniert auch Ruby on Rails in Delphi in der Vergangenheit. Für mich war das wichtig, damit ich die grundlegenden Lernblöcke mit den von mir verwendeten Tools verbinden konnte.

Es scheint mir, dass die Programmierer, die ich anheuere, viel Zeit brauchen werden, um sich in das Team zu integrieren und etwas Nutzbares zu produzieren, da es so viele Dinge zu lernen gibt, wie man ein einzelnes Framework (Rails) verwendet: Ruby, HTML, CSS, JavaScript, REST, Testfälle, Datenbankzugriff (mit SQL, das magisch in das Framework eingebaut wurde!), MVC, drei verschiedene Paketmanager (passend für Ubuntu, Gem und Bundler für Ruby), ssh, git, Apache und Phusion Passenger für die Bereitstellung usw.

Ich fühle mich verloren, da es das erste Mal ist, dass ich mich direkt mit Junior-Programmierern beschäftige. Was ist der beste Weg, um Junior-Programmierer in den heutigen Best Practices für die Webentwicklung zu schulen, wenn es so viele Möglichkeiten gibt?


8
Der vorletzte Absatz hört sich so an, als hätten Sie eine wichtige Änderung in den letzten 15 Jahren nicht bemerkt: Generalistische Programmierer sind praktisch verschwunden . Wer alle Details, auf die Sie sich beziehen, kennen möchte, muss seit 15 Jahren in der Industrie tätig sein. Möglicherweise erzielen Sie bessere Ergebnisse, wenn Sie Spezialisten finden / ausbilden, die eines oder zwei der von Ihnen aufgelisteten Dinge genau kennen und aus den verschiedenen Spezialisten, die Sie benötigen, ein Team zusammenstellen ( dann Crosstrain). Finden Sie alternativ leitende Ingenieure mit 15 Jahren Erfahrung wie Sie selbst, aber das ist keine leichte Aufgabe.
Jimmy Hoffa

Nur zu Ihrer Information, eine steile Lernkurve bedeutet, dass Sie sehr schnell etwas lernen. Es verwirrt einige Menschen bei falscher Verwendung :)
Alternatex

Ich habe den Ausdruck immer als "schwierig" bezeichnet (Englisch ist nicht meine Muttersprache), aber Wikipedia sagt, dass er nicht eindeutig ist. Daher kenne ich hier nicht die beste Wahl: en.wikipedia.org/wiki/Learning_curve :)
Rômulo Ceccon

Antworten:


39

Viele Leute werden diese Idee nicht mögen, aber ich befürworte dies, wo immer ich kann: unabhängig von der Programmiersprache und Umgebung, wenn sie keine Erfahrung haben und wenn es Wartungsaufgaben gibt, die sich aus echten Fehlerberichten von Kunden ergeben Stellen Sie sicher, dass sie mindestens 30-40% (+) ihrer Zeit dieser Aufgabe zugewiesen werden. "Hier ist der Fehlerbericht, schauen Sie ihn sich an, lösen Sie ihn. Wenn Sie nicht wissen, worum es geht, kommunizieren Sie mit erfahrenen Kollegen, googeln Sie, was auch immer." Echte Arbeit an echten Problemen, neinZumindest Spielzeug: nicht nur Spielzeug. Stellen Sie auch sicher, dass jemand mit viel Erfahrung einen Blick auf das hat, was er gemacht hat, bevor es veröffentlicht und an den Kunden versendet wird. Stellen Sie sicher, dass der neue Kollege ehrliches Feedback von Kollegen und Kunden erhält. Wählen Sie diese Aufgaben sorgfältig aus, um sie nicht zu überlasten, aber denken Sie daran, dass Sie möchten, dass sie eines Tages ihre Arbeit unabhängig erledigen.

Das Beheben von Fehlern bedeutet, im Job zu lernen, dass sie an Code arbeiten können, der tatsächlich ausgeführt wird und eine gewisse Relevanz hat (andernfalls würde es keine Fehlerberichte geben), und sie werden in vielen Beispielen zeigen, wie man das nicht macht.

Der Fokus wird automatisch auf Schmerzpunkte gelegt. Sie werden anfangen, die Details zu lernen, die tatsächlich Probleme verursachen. Von Anfang an trägt sie auch echte Verantwortung auf ihre Schultern, was (obwohl die Wartung als solche nicht wirklich attraktiv ist) eher motivierend sein kann, wenn sie zur Zufriedenheit des Kunden / Endbenutzers durchgeführt wird. Wenn Ihre Senioren das durchgehen, was sie getan haben, werden sie es ernst nehmen, da sie die Auswirkungen von Fehlern kennen. Auf diese Weise wird auch die Integration in das Team vereinfacht, da sie automatisch miteinander sprechen.

Es geht nicht darum, sie vom ersten Moment an produktiv zu machen (wie es vielleicht aussieht). Der Punkt ist, sicherzustellen, dass sie vom ersten Moment an wissen, dass sie etwas Wertvolles tun sollen, und sich auf das Wesentliche zu konzentrieren, ohne eine Liste erstellen zu müssen.

Ich habe einige Jahre Erfahrung in der Arbeit mit Leuten, die direkt vom College zu ihrem neuen Entwicklerjob gekommen sind, und die schlechtesten Ergebnisse, die ich zu sehen bekam, waren normalerweise, wenn jemand ohne zumindest einige Erfahrung in der Wartung gebeten wurde, neue Anwendungen zu entwickeln . Stellen Sie nur sicher, dass sie immer jemanden haben, den sie um Unterstützung bitten können, wenn sie sich verloren fühlen.


Ich mache dasselbe. Gute Antwort.
Rocklan

Ich habe meine Karriere mit der Behebung von Fehlern im ersten Jahr begonnen. Als ich zu anderen Projekten wechselte, fühlte ich mich durch die Fehlerbehebung viel besser, weil ich wusste, was ich nicht tun sollte.
Brandon

8

Nehmen wir zunächst an, Sie haben Junior-Programmierer eingestellt, die tatsächlich kompetent sind. Dies ist nicht unbedingt eine sichere Annahme, zumal ältere Programmierer, die "jemanden interviewen, der weniger Erfahrung als ich" hat, wahrscheinlich grundlegende Inkompetenzen übersehen.

Vorausgesetzt, sie sind kompetent, besteht der erste Schritt darin, sie in eine Klasse zu schicken. Ein einwöchiger Kurs kostet zwischen 2.000 und 3.000 US-Dollar. Es wird ihnen jedoch praktische Erfahrung mit einem Lehrer geben, der (hoffentlich) das Material versteht, und einen Stundenplan, um sie auf den neuesten Stand zu bringen. Es ist nicht annähernd so wertvoll, jemanden mit einem Buch und der Anweisung, "das zu lernen", wegzuschicken, und es wird wahrscheinlich mehr kosten (die Kosten für die Klasse betragen ungefähr eine verschwendete Programmiererwoche).

Arbeiten Sie mit ihnen, nachdem sie das Grundwissen erworben haben. Setzen Sie sich an einen angrenzenden Schreibtisch und geben Sie mindestens die Hälfte Ihrer Zeit auf, um sicherzustellen, dass sie Ihr Geschäft und Ihre Arbeitsweise verstehen. Ja, es wird Ihre Produktivität mindern, zumindest anfangs, aber auf lange Sicht macht es Ihr Team insgesamt produktiver. Und wenn Sie noch einmal über die Kosten nachdenken, wenn ein Junior einen Monat damit verschwendet, etwas Falsches zu tun, dann entspricht das wahrscheinlich einem halben Monat Ihres Gehalts.


4

Die Spielzeuganwendungen, um die Sie sie bitten, sollten einige grundlegende CRUD-Funktionen implementieren, und jeder Entwickler sollte seinen eigenen Code schreiben. Sie können die Anwendung jedoch in Codeüberprüfungen diskutieren und Tipps anbieten. Sie müssen zunächst die Gesamtarchitektur einer MVC-Anwendung verstehen, wenn eine angemessene Erwartung an die Produktivität möglich ist.

Von dort sollte jeder Entwickler in der Lage sein, auf eigene Faust auf die zugehörigen Themen wie Javascript, CSS, DALs, Vorlagengeneratoren, Routing usw. zuzugreifen. Sie können ihnen Anleitungen geben, zu welchen Themen sie sich befassen sollen (dies kann auf den dringendsten Anforderungen Ihres Unternehmens beruhen), sie betreuen und ihre Fortschritte überwachen. Bewegen Sie die Entwickler nacheinander in einfache Projekte, die Funktionen bereitstellen, mit denen Sie Ihre eigentlichen Entwicklungsanstrengungen vorantreiben können, sobald sie die erforderlichen Fähigkeiten unter Beweis stellen.

Sie können einige Ihrer erfahrenen Entwickler mit einem Lehrling als eine Art Mentoring-Programm verbinden. Den Nachwuchsentwicklern sollten Richtlinien zur Verfügung stehen, damit sie wissen, wann und wie lange sie ihren Mentor unterbrechen können. Ihr Mentor kann ihre Arbeit überwachen, wenn sie anfangen, echten Code zu schreiben.

Sie werden eine bessere Zeit davon haben, wenn Sie junge Leute finden, die sehr klug, intellektuell neugierig und Selbststarter sind. Ich habe gesehen, wie dieser Prozess funktioniert. Es war der Ansatz meines früheren Arbeitgebers, da er nicht das große Geld für Experten bezahlen wollte, obwohl es eher eine Art "sinken oder schwimmen" war (es gab kein offizielles Schulungsprogramm als solches). Seine größte Herausforderung bestand darin, sie dazu zu bringen, lange genug zu bleiben, um seine Investition wieder hereinzuholen. Es gab immer die Verlockung, woanders besser zu bezahlen.

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.