Wie kann man Junior-Entwickler am besten in das Entwerfen einer Anwendung von Grund auf einbeziehen? [geschlossen]

9

Wir sind ein Team von 3 Entwicklern (2 erfahrene Entwickler und ein Junior).

Wir haben gerade ein brandneues Projekt gestartet. Wir haben die Anwendung entworfen, uns auf die Auswahl der richtigen Architektur konzentriert und legen jetzt die ersten Codezeilen fest. Wir schreiben den Kern davon, was die Grundlage der gesamten Anwendung sein wird.

Dies ist auch keine einfache Anwendung. Harte Leistungsanforderungen, massiv verteiltes, komplexes Entitätsmodell usw.

Wir sind alle außerhalb unserer Komfortzone, besonders der Junior. Er hat nicht die Erfahrung, ein gutes Design im Voraus zu kreieren. Das ist zwar kein Problem, weil ich und der andere Entwickler da sind, um zu helfen, und wir beide an Mentoring und den Aufbau von Teams glauben, aber ... wir wissen nicht genau, was der beste Weg wäre, damit er es bekommt eine angenehme Erfahrung und lernt die maximale Menge an Fähigkeiten.

Wir stellten beide fest, dass wir keinen Junior für neue Projekte hatten, nur für bestehende, bei denen es für den Junior einfacher war, weil er eine ganze Codebasis hatte, von der er lernen und inspirieren konnte. Aber für diese App haben wir fast keinen Code. Wir haben gerade angefangen.

Wir haben über einige Ansätze nachgedacht:

  • Lassen Sie ihn ein paar Tage lang alleine versuchen, dann eingreifen und den Code zusammen mit ihm umgestalten, ihn in die richtige Richtung lenken und dann wiederholen => Könnte für ihn keine lustige Erfahrung sein, da wir bei jedem Refactor auf seine Fehler hinweisen werden ;;
  • Lassen Sie ihn mit einem von uns programmieren => er könnte nur ein "Zuschauer" werden und mit allem, was wir tun, einverstanden sein, ohne tatsächlich viel zu lernen oder viele Informationen zu verdauen;
  • Lassen Sie uns das Skelett jedes Moduls mit einem soliden Design bauen und ihm dann das Modul geben, um die fehlenden Teile hinzuzufügen => Es macht möglicherweise keinen Spaß, nach uns zu greifen, und es besteht die Gefahr, dass er nur darauf achtet, die Lücken zu füllen und nicht auf das gesamte Design.

Wie können wir ihn in das Design einbeziehen, damit er sich nicht irgendwie außerhalb davon fühlt und so viel aus der Erfahrung lernt und genug Selbstvertrauen gewinnt, um es selbst auszuprobieren?

Meme
quelle
5
Meine Erfahrung mit (sehr) Junior-Teammitgliedern ist, dass ein paar Tage zwischen den Bewertungen zu lang sind. Sie schlagen mit guten Absichten davon, ohne einen Weg nach vorne zu finden. Kurze Vormittags- und Nachmittagsstunden im ersten Monat oder so funktionierten besser. Sobald sie ihre Füße gefunden hatten - und vor allem wussten, wann sie um Hilfe bitten sollten - reduzierten wir die Frequenz.
Michael Green

Antworten:

12

Ich empfehle folgende Richtlinien:

  • Binden Sie den Nachwuchsentwickler in Ihre Designmeetings ein und bitten Sie ihn um seine Beiträge. Dies wird ihn dazu bringen, über das Gesamtbild nachzudenken, auch wenn er nicht bereit ist, das High-Level-Design selbst zu machen.
  • Versuchen Sie, ein Modul der Anwendung zu isolieren und klar zu definieren, das dem Junior-Entwickler zugewiesen werden soll. Beschreiben Sie schriftlich die Ein- / Ausgänge und andere Anforderungen des Moduls. Vermeiden Sie es, ihm ein Modul zuzuweisen, das nicht einfach zu testen ist oder das nur getestet werden kann, wenn es in andere noch zu schreibende Module integriert ist.
  • Vielleicht könnte der Junior-Entwickler auf andere Weise helfen, als die Kernanwendung zu codieren. Zum Beispiel könnte er Testcode schreiben. Das Schreiben guter Testskripte ist keine einfache Arbeit, sondern ein wertvoller Beitrag zum Projekt und vermittelt dem Nachwuchsentwickler ein solides Verständnis des Projekts.
Chris Merck
quelle
2
Stellen Sie auf jeden Fall sicher, dass sie im Design sitzen. Dann wird er verstehen, wo sein Beitrag insgesamt passt und welchen Wert er hinzufügt. Er mag in der Komplexität ertrinken, aber zumindest wird er wissen, in welchem ​​Ozean er sich befindet!
Michael Green
1

Ich denke, es hängt davon ab, in welchem ​​Bereich sich der Junior-Entwickler verbessern soll. Als ich (sehr) jünger war, gaben sie mir APIs, die ich brauche, um eine bestimmte begrenzte Sache zu erstellen, wie zum Beispiel:

  • Diese Funktion gibt N Anzahl der Mitarbeiter aus der Personaltabelle an
  • Diese Funktion liefert Personalstatistiken unter Angabe der Personal-ID

->

Aufgabe: Erstellen Sie eine Seite mit einer Liste von Mitarbeitern, auf der die Statistiken angezeigt werden, wenn auf eine Personalakte geklickt wird. Hier ist eine einfache Beispielseite, die zuvor im Projekt erstellt wurde.

Der wichtigste Aspekt der gegebenen Aufgabe besteht darin, nur durch diese gegebenen Ressourcen lösbar zu sein und keine Änderungen an ihnen zu erfordern.

uylmz
quelle
0

Alle 3 Wege sehen für mich gut aus. Wenn Sie 10 verschiedene agile Methoden gleichzeitig ausprobieren, sollten Sie bald gute Ergebnisse erzielen. Zumindest wissen Sie, welche Methode funktioniert und welche nicht (welche am besten funktioniert, hängt stark von der Persönlichkeit der Spieler ab).

Das Problem der Paarprogrammierung tritt nicht auf, wenn Sie sich an den Prozess halten und die Schreib- / Denkhüte alle 10 Minuten (oder so) wechseln, keine Ausnahme, nach dem ursprünglich von Kent Beck beschriebenen Prozess (ich weiß nicht mehr, wo)

Was die Einbeziehung anderer Personen in das Design betrifft, haben wir festgestellt, dass es hilfreich ist, wenn während der Designphase einige Designdokumente (mit einigen UML-Modellen) erstellt werden. Die anderen Leute (Ihr Junior) können sie dann Korrektur lesen, überprüfen und den Anwalt des Teufels spielen. Diese Rolle eines unabhängigen, unberührten Dritten kann tatsächlich sehr nützlich sein, z. B. für Erkundungstests - http://www.softwaretestinghelp.com/exploratory-testing-beyond-traditional-testing-boundaries

xmojmr
quelle