Haben Sie jemals neue Mitglieder in Ihre Scala-Codebasis aufgenommen?
Skalierbares Onboarding: Neue Mitglieder in eine Scala-Codebasis einführen Piotr Zawiła-Niedźwiecki
In diesem Vortrag gibt Piotr Zawiła-Niedźwiecki, ein leitender KI-Ingenieur, Einblicke in seine Erfahrungen beim Onboarding von mehr als zehn Hochschulabsolventen und konzentriert sich dabei auf die Herausforderungen und Strategien, die den Übergang reibungsloser gestalten. Ich werde im Laufe des Gesprächs auch meine eigenen Ansichten hinzufügen.
Der Vortrag lässt sich in sechs Hauptgedanken zusammenfassen:
- Die Perspektive eines Nachwuchsentwicklers verstehen
- Konsistenz in der Kodierungspraxis
- Projekt-Kategorisierung
- Code-Erweiterungen
- Lesbarkeit und Wartbarkeit
- Kontinuierliches Lernen
Die Perspektive des Neuankömmlings verstehen
Neue Hochschulabsolventen bringen oft Enthusiasmus für ihre Aufgaben mit, haben aber in der Regel keine praktische Erfahrung mit Technologien auf Unternehmensebene. Das kann dazu führen, dass sie sich überfordert fühlen, insbesondere wenn sie mit komplexen Projektarchitekturen konfrontiert werden. Es ist wichtig, eine unterstützende Onboarding-Umgebung zu schaffen, die sie Schritt für Schritt in die Codebasis und die dazugehörigen Tools einführt.
Das gilt unabhängig davon, wie jemand in die Welt des Programmierens einsteigt. Projekte in der realen Welt können einschüchternd wirken. Es gibt viele Tools zu lernen - Cloud-Systeme, CI/CD-Pipelines, Docker, Git und so weiter. Hinzu kommt die Tatsache, dass der Code, mit dem sie konfrontiert werden, nicht unbedingt dem entspricht, was sie gelernt haben, und es kann Wochen oder sogar Monate dauern, bis sie sich sicher und produktiv fühlen.
Worin besteht hier die Herausforderung? Während ein Großteil der Werkzeuge leicht online erlernt werden kann, liegt die eigentliche Schwierigkeit im Verständnis des Codierungsstils, der architektonischen Entscheidungen, der Geschäftslogik, der Tests und der im Projekt verwendeten Bibliotheken. Diese Konzepte sind selten gut dokumentiert. Kommt Ihnen der Begriff Architecture Decision Records (ADRs) bekannt vor?
Um zu verstehen, wie sich ein Nachwuchsentwickler fühlt, wenn er in Scala einsteigt, empfehle ich Ihnen den Vortrag von Monica McGuigan über ihr erstes Jahr mit Scala.
Konsistenz ist der Schlüssel
Piotr betont, wie wichtig es ist, die Konsistenz der Kodierungspraktiken und der Projektstruktur in einem Unternehmen zu wahren. Von der Konsistenz profitieren nicht nur neue Teammitglieder, sondern auch erfahrene Entwickler, die zu neuen Projekten wechseln. Standardisierte Praktiken ermöglichen es Neulingen, das, was sie in einem Projekt gelernt haben, schnell auf ein anderes anzuwenden, was die Einarbeitung erleichtert und den mentalen Aufwand für die Anpassung an unterschiedliche Codierungsstile verringert.
Ich stimme Ihnen vollkommen zu. Konsistenz - ausgewogen mit einer gewissen Flexibilität - ist entscheidend. Es gibt verschiedene Ebenen der Konsistenz, die Sie anstreben sollten. Während Piotr sie kurz anspricht, sehe ich einige Überschneidungen mit Ideen, die ich in meinen Vorträgen über die Diamond Architecture in Madrid und Warschau diskutiert habe. Ein Tool, das ich in diesen Vorträgen erwähnt habe und das dabei hilft, die Konsistenz über Zeit und Projekte hinweg zu erhalten, ist ArchUnit.
Strategien auf Projektebene
Piotr empfiehlt einen "Stufenprojekt"-Ansatz, bei dem neue Entwickler zunächst mit einfacheren Aufgaben vertraut gemacht werden, bevor die Komplexität schrittweise erhöht wird. Wenn Sie zum Beispiel mit einfachen ETL-Aufgaben beginnen, können neue Mitarbeiter das Gelernte anwenden und gleichzeitig Vertrauen aufbauen. Diese Schritt-für-Schritt-Strategie macht das Onboarding weniger überwältigend und hilft dabei, eine Grundlage für die Bewältigung komplexerer Systeme zu schaffen.
Was ist der Nachteil dieser Strategie, insbesondere für Backend-Scalaprojekte? Das Problem ist, dass die meisten Projekte, ob klein oder groß, stark von Frameworks wie ZIO oder Cats-Effect mit tagloser Endkodierung abhängig sind. Im Vergleich zu Vanilla Scala, das in einsteigerfreundlichen Kursen gelehrt wird, haben diese Projekte ein ganz anderes, Haskell-ähnliches Gefühl.
Zum Glück werden die Dinge langsam besser. Mit der Einführung von Scala 3 und Scala-CLI werden selbst komplexe Konzepte leichter zugänglich. So ist es zum Beispiel einfacher geworden, Ihren Code ohne ein Build-Tool auszuführen oder die tagless-final-Kodierung zu verstehen. Eine anfängerfreundliche Erklärung finden Sie im Vortrag von Noel Welsh, Tagless Final for Humans. Es gibt Grund, optimistisch zu sein!
Erweiterungen auf Code-Ebene
Einer der wichtigsten Punkte, den Piotr betont, ist die Notwendigkeit klarer und gut dokumentierter Konfigurationsdateien. Es ist wichtig, die Verwendung von Standardwerten zu vermeiden, da diese neue Entwickler leicht verwirren können. Durch die Einführung expliziter Konfigurationen und die Verfolgung eines domänenorientierten Designansatzes können sich die Teams auf die Geschäftslogik konzentrieren, statt sich von der technischen Komplexität ablenken zu lassen.
Dies entspricht genau dem Prinzip "explizit vor implizit". Die kontextuellen Abstraktionen wurden in einem Maße überstrapaziert, dass selbst erfahrene Ingenieure Schwierigkeiten hatten, einige Codebasen voller Implikate zu verstehen. Scala 3 geht viele dieser Probleme an, indem es die kontextuellen Abstraktionen überarbeitet und vereinfacht.
Betonung der Lesbarkeit und Wartungsfreundlichkeit
Piotr betont, dass die Lesbarkeit und Wartbarkeit des Codes immer Vorrang vor der Leistung haben sollte, insbesondere bei der Einarbeitung neuer Entwickler. Wenn Sie klaren und aussagekräftigen Code schreiben, können Neulinge ihn besser verstehen und sich besser einbringen. Darüber hinaus verbessern die Implementierung ausführlicher Fehlertypen und die Gruppierung von Fehlern nach Domänen das Verständnis, indem sie kontextbezogene und praktische Informationen für die Fehlersuche bieten.
Da kann ich nur zustimmen - lesbarer und wartbarer Code ist von unschätzbarem Wert.
Kontinuierliches Lernen kultivieren
Piotr setzt sich auch für die Idee des kontinuierlichen Lernens in Teams ein. Er schlägt vor, Ressourcen wie Kurse und Algorithmus-gesteuerte Herausforderungen wie Advent of Code anzubieten. Diese Tools ermutigen Entwickler, in einer Umgebung mit geringem Druck zu üben, was sowohl das Lernen als auch die Zusammenarbeit begünstigt.
Mein Blickwinkel auf Onboarding
Durch die Kombination von Piotrs Strategien mit einigen meiner eigenen Vorschläge können Teams die Onboarding-Erfahrung für neue Mitarbeiter erheblich verbessern. Letztendlich wird dies zu höherer Produktivität, besserer Mitarbeiterbindung und zufriedeneren Entwicklern in der Scala-Community führen.
Verfasst von
David A. Gil Méndez
Unsere Ideen
Weitere Blogs
Contact



