Wie kann ich Rookie-Entwickler in Ihr Projekt einbeziehen?


9

Wir erwägen, einige Mitarbeiter zu unterrichten, die entweder keine Programmiererfahrung auf Hobby- oder allgemeiner Hobby-Ebene haben, um mich zu entlasten.

Wir verwenden Python / Django, das einige der freundlichsten Dokumentationen enthält und ein Kinderspiel ist.

Ich bin derzeit eine Ein-Mann-IT-Abteilung für mein Unternehmen und habe nicht genügend Stunden, um alles zu entwickeln, was das Unternehmen benötigt. Wir sind kein Softwareunternehmen, aber es hilft, eine interne IT zu haben, um Aufgaben zu automatisieren, Kundendienstfunktionen zu entwickeln, Daten zu analysieren usw.

Wie integrieren Sie langsam Neulinge, die an Ihrer Codebasis arbeiten? Angenommen, Sie haben einen Praktikanten - was machen sie? Ich bin völlig zurückhaltend, sie Kerncode entwerfen oder entwickeln zu lassen, da wir uns jahrelang mit ihren Fehlern / seltsamen Entwurfsmustern befassen werden. Als Hauptentwickler bin ich derjenige, der seinen Code umgehen muss.

Mein Gedanke war, dass Neulinge nur vorhandenen Code modifizieren und niemals Kernfunktionen erstellen. Ich kann die Arbeit mit einfachen Aufgaben an sie auslagern, nachdem ich die Funktion selbst erstellt habe.

Wir möchten, dass unsere Mitarbeiter im Unternehmen lernen / Wert finden, und wir haben im Allgemeinen Mitarbeiter, die „aufsteigen“.

Ist es üblich, Menschen mit allgemeiner / Hobby-Programmierung zu unterrichten? Wie funktioniert das "Aufsteigen" in einem Softwareunternehmen für Programmierer auf Junior-Ebene? Wann beginnen sie mit der Arbeit an Kerncode?

Ich versuche zu entscheiden, ob es mehr Schaden als Hilfe verursachen wird oder ob es eine Möglichkeit gibt, ihre Hilfe zu nutzen, ohne das Risiko eines zentralen Site-Codes (isolierte Umgebungen?) Zu eingehen.


3
"General / Hobbyist Level Programming" unterscheidet sich in meinen Augen sehr von "Junior Level Programmierern". Ersteres klingt wie jemand, der am Wochenende mit Shell- / Batch-Skripten herumspielt, um sein System zu optimieren. Letzteres klingt wie jemand, der gerade einen CS-Abschluss gemacht hat. Der Umgang mit diesen beiden Typen wäre sehr unterschiedlich. Sag einfach ...
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner Vielen Dank! Ich bin mit der Terminologie nicht vertraut. Hobbyist, den ich so gemeint habe, hat ein paar Programmiersprachen selbst unterrichtet, ein oder zwei Programme erstellt, eine Website. Junior Level Ich dachte, jemand zu sein, der genug Programmierkenntnisse hat, um bei einem Softwareunternehmen eingestellt zu werden, aber jetzt fällt mir das ein diese beiden können ziemlich ähnlich sein (in meinen Definitionen)?
Yuji Tomita

3
Junge Leute mit formaler CS-Ausbildung und ohne Erfahrung - sind naiv, aber oft talentiert, lernen schnell neue Dinge und passen sich Ihren Arbeitspraktiken an. "Hobby-Tierärzte" sind viel gefährlicher, da sie oft Sklaven ihrer Gewohnheiten sind. Daher können sie Änderungen nur ungern ändern und Probleme haben, die in Ihr Ökosystem passen. Aber trotzdem - nur wenn Sie ihnen Freiheit geben, können Sie ihre Dummheit oder Schlauheit erkennen. Wenn Sie ihnen primitive weltliche Aufgaben geben, werden sie weder etwas über den Job lernen, noch werden Sie etwas über sie lernen.
c69

@ c69 Danke! Meine Frage ist, wie man den Anfänger in unsere Codebasis lockert. Das Ziel ist nicht, sie in eine Schublade zu stecken und nur weltliche Aufgaben zu erledigen. Es ist nur gefährlich, jemandem Zugriff auf unsere Codebasis zu gewähren und ihn sein erstes Django / Programmierprojekt als Teil unseres Systems erstellen zu lassen (oder ist es das, was Sie meinen? Lassen Sie es versuchen und sehen?). PS: Ordnungsgemäß über die Hobby-Tierärzte
Yuji Tomita

Antworten:


5

Wenn Sie den Rookie an eine ineffektive Rolle delegieren, wird er / sie nie etwas Wesentliches lernen, und sie werden Ihnen sicherlich nicht allzu schrecklich nützlich sein.

Lassen Sie mich einen Rat geben. Mein erster außerschulischer IT-Job war bei einer relativ kleinen Produktionsfirma, in der ich an Software arbeiten wollte, um Vertriebsingenieure beim Verfassen von Angeboten für verschiedene Projekte zu unterstützen. Ich sollte auch dem IT-Mitarbeiter helfen, der die IT für das gesamte Unternehmen im Alleingang verwaltet.

Der Typ war ein gestresstes, überarbeitetes Durcheinander und der schlechteste Perfektionist, unter dem ich je gearbeitet habe. Ich sollte seine Arbeit erleichtern, aber er verbrachte fast genauso viel Zeit damit, mich und meine Arbeit zu überprüfen, wie ich arbeitete (er verließ fast nie das Büro, ich glaube, er verachtete seine Familie). Wenn ich nur einen einzigen Fehler gemacht hätte, hätte er völlig den Verstand verloren und einen Wutanfall ausgelöst: "Ich wusste, ich hätte dir das nicht anvertrauen sollen, es war zu wichtig!" und andere Beschimpfungen.

Der Punkt, den ich versuche, ist, NICHT so zu sein. Dies wird nicht nur die Neulinge unglücklich machen und ihre Moral zerstören, Sie werden auch die Kerze an beiden Enden verbrennen und sich um ihre Arbeit sorgen.

Geben Sie ihnen die Möglichkeit, sich zu beweisen, aber über formale technische Spezifikationen, Entwurfsprüfungen und Codeprüfungen zu verfügen. Sie können auch testen, was sie produzieren, um sicherzustellen, dass es den Anforderungen entspricht.

Ich denke, Sie werden überrascht sein, wie fähig einige von ihnen sein können.


1
Es sollte auch gesagt werden, dass wenn Sie den Neuling an eine Rolle delegieren, in der er sich nicht nützlich fühlt, er die wenig Erfahrung, die er sammelt, nutzt, um einen besseren Job zu finden. Selbst ein Anfänger sollte in der Lage sein, Anweisungen zu befolgen. Wartungsaufgaben sind in Ordnung, aber wenn Sie nicht bereit sind, ihnen beim Wachstum zu helfen, erwarten Sie, dass Sie immer einen Anfänger haben.
Ramhound

Vielen Dank für Ihre Eingabe - es wird sehr geschätzt. Wir müssen irgendwo anfangen, da wir Menschen in Betracht ziehen, die buchstäblich keine Erfahrung haben. Einführung in Python 101, Django-Tutorial, Bash-Skripte, Verwendung der Versionskontrolle usw. Ich werde Ihre Warnung beachten, dass keine Mikroverwaltung erforderlich ist. Und ja! Ich glaube, unsere Leute sind ziemlich fähig.
Yuji Tomita

5

Ich habe in einem Software-Shop gearbeitet, in dem wir ein großes Projekt programmiert haben (erhebliche Anlaufzeit).

Anfänger wurden wie Tierärzte behandelt. Sie erhielten einen technischen Leiter und starteten Features "auf eigene Faust". Der Architekturstil war diktiert, aber es stand ihnen frei, ihr eigenes klares Design zu entwickeln. Die "seltsamen Designmuster" wurden bei (täglichen) Peer-Code-Überprüfungen ausgesondert.

Ein Fehler, den ich in einem anderen Geschäft gesehen habe: Angenommen, "core" ist hart und "ui" ist einfach. Rookies hatten es im Kern leichter und haben den UI-Front-End-Code durcheinander gebracht.

Viel Glück!


1
Häufige Codeüberprüfungen waren genau das, was ich vorschlagen wollte. Es wird eine Stunde dauern und sich schnell auszahlen, wenn Sie ihnen beibringen, was falsch ist. Sie müssen es beheben und ihre Fähigkeiten verbessern. Nach einiger Zeit müssen Sie nicht mehr so ​​viel Zeit mit Codeüberprüfungen verbringen wie in den ersten Wochen. Stellen Sie außerdem sicher, dass sie wissen, wie sie die Quellcodeverwaltung verwenden (und verwenden). Dann können Fehler ziemlich einfach zurückgesetzt werden.
HLGEM

1
@isgab - Ein effektives User Interface Design ist selbst mit 30 Jahren Erfahrung schwer zu erreichen. Ich meine, schauen Sie sich Microsoft und Apple an. Beide haben unterschiedliche Vorstellungen darüber, wie eine Benutzeroberfläche funktionieren sollte.
Ramhound

Ich liebe, was du über Core vs UI sagst. Ich dachte, es gibt Vor- und Nachteile für beide (Rookie im Backend, Rookie im Frontend). Einerseits geht es bei HTML oft um Erfahrung - zu wissen, was nicht funktioniert. Es ist auch "sicher", dass Projekte isoliert sind. Das Backend funktioniert genau so, wie es sollte, aber der jetzt erstellte Code muss in Zukunft gepflegt und bearbeitet werden.
Yuji Tomita

2

Sie möchten ihnen zunächst kleine, diskrete Funktionen zur Implementierung geben. Definieren Sie die versprochene Eingabe und die erwartete Ausgabe und lassen Sie sie die Punkte verbinden. Verwenden Sie dann die Code-Überprüfung durch Teamleiter, um die Qualität sicherzustellen, und Peer-Review, um sie darin zu schulen, voneinander zu lernen und sich selbst beizubringen.

Dies setzt voraus, dass Sie über eine allgemeine Anwendungsarchitektur verfügen, mit der atomare Logikeinheiten entkoppelt erstellt werden können. Wenn nicht, werden Sie in eine Welt der Trauer versetzt, in der mehrere Entwickler arbeiten - das wäre sogar bei alten Profis der Fall.

Es ist unvermeidlich, dass Sie bestimmte Leute haben, die sich darum kümmern, schnell lernen und sich erheben. Stellen Sie sicher, dass Sie ihnen weiterhin Aufgaben zuführen, die nur einen kleinen Schritt über ihre aktuellen Fähigkeiten hinausgehen. Nichts bildet jemanden so aus wie eine Aufgabe, die unmöglich beginnt. Es ist unvermeidlich, dass Sie einige Leute haben, die versuchen, es nie wirklich zu erreichen. Diesen Menschen sollte für ihre Bemühungen gedankt und anmutig zu etwas anderem übergegangen werden.


1
"Stellen Sie sicher, dass Sie ihnen weiterhin Aufgaben zuführen, die nur einen kleinen Schritt über ihre derzeitige Leistungsfähigkeit hinausgehen." - Wenn dies nicht getan wird, stellen Sie möglicherweise fest, dass diese Personen ihr Wissen an ein anderes Unternehmen weitergeben. Wenn Sie den Rookie nicht füttern, trainieren und laufen, rennen sie wie Ihr Hund davon.
Ramhound

Andere Optionen wären: Geben Sie ihnen eine bereits (gut) implementierte Funktion, damit sie die Ausgaben vergleichen können
Etsitpab Nioliv

1

Wie kann es sich Ihr Unternehmen leisten, anderen Mitarbeitern Zeit zu nehmen, aber niemanden mit Programmiererfahrung einzustellen? Der Zeitaufwand für Training, Fehlersuche und Händchenhalten ist kostspielig.

Das einzige, was ich jemals in diesem Bereich getan habe, ist, den Leuten beizubringen, wie man einen Report Writer oder vielleicht einen VBA / Macro-Code für Excel verwendet. Normalerweise gebe ich die Datensätze zur Wiederverwendung. Es ist eine Strecke, sie SQL lernen zu lassen, aber ich habe es gesehen (bezahlt, damit sie außerhalb des Trainings geschult werden). Die meisten dieser Leute waren Finanzanalysten, die das Codieren lernen konnten, sich aber möglicherweise nicht die Zeit genommen haben. Dies mit einigen operierenden Personen zu versuchen, ist ein langer Weg.

Stellen Sie sicher, dass Sie die richtige Person finden und diese wirklich lernen möchte, wie man programmiert. Sie werden keine Zeit haben, ihnen alles beizubringen. Sie werden viel alleine machen müssen.


Ich erwähnte, dass wir über Leute sprechen, die keine Vorkenntnisse (oder einen sehr geringen Betrag) haben, also nicht über die Gehaltsstufen, die erforderlich sind, um einen professionellen Programmierer einzustellen.
Yuji Tomita

Ah, und unser Unternehmen ist ein bisschen wie eine Familie: Wir machen gerne alles selbst und lassen die Leute aufsteigen. Ich war hauptsächlich neugierig, wie ich den Workflow eines Anfängers in meinen strukturieren kann.
Yuji Tomita

0

@ Louisgab hatte Recht mit der Codeüberprüfung. Das wäre auch mein erster Schritt. Eine wichtige Sache, die Ihnen dabei helfen wird, ist sicherzustellen, dass sie ihre eigenen Fehler beheben müssen, unabhängig davon, ob Sie sie in der Codeüberprüfung oder später finden. Sie werden nicht einmal bemerken, dass sie Fehler machen, es sei denn, sie müssen sie beheben. Stellen Sie sicher, dass Sie auch erklären, warum die von ihnen verwendete Lösung ein Fehler ist und warum das, was Sie vorschlagen, besser ist. In den ersten Wochen wird es sich so anfühlen, als hätten Sie mehr Arbeit, weil Sie diese anderen Leute haben, aber wenn Sie Ihre Codeüberprüfungen durchführen und Dinge erklären und erwarten, dass sie lernen, werden sie in ein paar Wochen viel mehr Hilfe sein, als wenn Sie es nur tun Mach alles selbst. Es ist jedoch eine anfängliche Verpflichtung Ihrer Zeit, sie auf den neuesten Stand zu bringen, die Ihr Management berücksichtigen muss.

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.