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?
Antworten:
Ich empfehle folgende Richtlinien:
quelle
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:
->
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.
quelle
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
quelle