Intro
Letztes Jahr haben wir unser Hybris-Lern- und Entwicklungstraining bei ANT begonnen. Wir laden Dich ein, einen Blick auf unsere Reise zu werfen. Dieses Training hat uns einen Einblick gegeben, wie Softwareentwicklung in einer agilen Umgebung aussieht. Lass uns direkt mit dem technischen Teil unseres Trainings beginnen.
Technologien, mit denen wir gearbeitet haben
Die Idee dieser Schulung war, sich mit Hybris vertraut zu machen. Als kurzer Überblick: Hybris ist eine eCommerce-Plattform, die auf dem Java Spring Framework basiert. Die zuvor erwähnte Schulung war in drei Teile aufgeteilt. Jeder Teil hatte einen genau definierten Zeitplan, der auch einen Buffer enthielt falls einige Themen länger als erwartet dauerten. Every week felt like a mini SCRUM sprint, we planned the next week according to how much material we went through the previous weeks. Jede Woche fühlte sich wie ein Mini-SCRUM-Sprint an und wurde danach geplant, wie viel Material wir in den vorherigen Wochen durchgenommen hatten. Davon abgesehen machten wir uns mit den verschiedenen Phasen der Softwareentwicklung vertraut, wie z.B. das Erstellen eines Backlogs, das Schätzen des Aufwands, der Entwicklung, das Testen und dem Code-Reviewing. Der dritte Teil der Schulung drehte sich um Hybris-spezifische Konzepte.
Zunächst gab es eine kurze Zusammenfassung von Core Java (J2SE) und Clean Code Best Practices, Konzepte, die wir von der Universität her kennen. Dann ging es allmählich in das fortgeschrittene Java (JEE), wo wir Java Database Connectivity (JDBC), Servlets und Session Management behandelt haben. Aufgrund der Tatsache dass Hybris auf Spring basiert, war es für uns sehr wichtig zu verstehen wie Spring-Webanwendungen funktionieren. Die Schulung umfasste einen Online-Kurs, der alle Spring-Konzepte enthielt welche für Hybris obligatorisch sind, und viele mehr. Zusammen mit dem Kurs hatten wir für jedes Kapitel eine detaillierte Dokumentation, die uns einen tieferen Einblick gab. Neben dem Framework selbst wurden wir mit vielen Tools vertraut gemacht, die die Entwicklung wesentlich erleichtert haben.
Am Anfang haben wir nicht verstanden, warum eine so gründliche Vorbereitung nötig war, bevor wir Hybris erlernen konnten. Alles hat jedoch Sinn gemacht, als wir zum ersten Mal die Codebasis der Plattform geöffnet haben. Hybris bietet eine eCommerce-Lösung, eine gut gebaute Plattform und unsere Aufgabe als Entwickler ist es darauf aufzubauen. Hybris-spezifische Themen wurden jeden Tag vorgestellt, gefolgt von kleinen Aufgaben, die darauf warteten, erledigt zu werden. Dies war der abstrakteste Teil unseres Trainings, bei dem wir vielen neuen Konzepten ausgesetzt wurden, die unsere Perspektive auf die Komplexität einer eCommerce-Plattform veränderten.
Teamwork
Eine der besten Erfahrungen. Ein sehr wichtiger Aspekt für diejenigen, die in einem jungen Team arbeiten wollen, ist die Zusammenarbeit und Kommunikation. In Anbetracht der aktuellen Einschränkungen und der Entscheidung für Remote-Arbeit haben wir es mit den notwendigen Tools geschafft, nicht nur mit unseren engsten Teammitgliedern sondern, dank unserer wöchentlichen online Wissensaustausch-Sitzungen, auch mit unseren Kollegen aus verschiedenen Abteilungen in Kontakt zu bleiben.
Als Junioren hatten wir oft Schwierigkeiten die beste Lösung für einige Implementierungen zu finden. Unser Lernprozess wurde von unseren Mentoren mit guten Vorträgen, Büchern, Websites und Blogs gefördert. Die Teamarbeit war auf einem sehr hohen Niveau. Wir erhielten Ratschläge von erfahrenen Senior Entwicklern sowie Best Practices und Wissensaustausch die Hand in Hand gingen, wie die Code-Reviews die uns stärker und unabhängiger machten. Eine weitere gute Lektion, die hervorzuheben ist, ist der Debugging-Prozess und die Schlussfolgerung: „Es ist kein Bug – es ist ein undokumentiertes Feature“.
Hier bei ANT sind deine Kenntnisse über „Technologien“ in einem ständigen Wachstum und das ist einfach großartig.

Pet-Project
Endlich waren wir da. Die erstaunlichste und lustigste Erfahrung. Dieses Projekt hat uns die Augen geöffnet und uns in die Welt der Programmierer eingeführt. Unsere Aufgabe war es, ein Spring-Boot-Backend für eine eCommerce-Webanwendung zu entwickeln. Unsere Mentoren gaben uns einige Richtlinien vor, wie die Anwendungsarchitektur aussehen sollte und wie wir unsere Arbeit organisieren sollten. Wir haben viele Enterprise Design Patterns verwendet, die auch in der Hybris-Plattform implementiert sind. Neben der Anwendung des Wissens, das wir bis zu diesem Zeitpunkt angesammelt hatten, bestand der Zweck des Pet-Projekts darin, zusammenzuarbeiten und unsere Arbeit so zu organisieren, dass wir nicht auf unsere Mentoren angewiesen waren. Natürlich bekamen wir Unterstützung, wenn wir es brauchten, aber es lag in unserer Verantwortung, eine voll funktionsfähige Anwendung zu entwickeln, die wir später unseren Kunden präsentieren können. Wer waren diese eigentlich? Unsere wunderbaren Kollegen natürlich. Der gesamte Setup-Teil wurde synchronisiert. So konnten wir uns selbst überwachen und eine brillante Funktionsumgebung in Übereinstimmung mit allen Frontend- und Backend-Anforderungen erreichen. Jetzt kennen wir die Bedeutung von: „Auf meinem Rechner funktioniert es“.
Um effizienter zu sein, haben wir die Scrum-Methodik angewendet, durch die wir alle Aufgaben und Probleme, die während des Projekts auftraten, im Auge behielten. Das trug auch zum Zeitmanagement bei und gab uns die Möglichkeit, unsere Fähigkeiten auf konstruktive Weise zu verbessern. Wir berücksichtigten die kleinsten Details des Arbeitsablaufs und fassten sie in Stories zusammen, die wiederum in Aufgaben unterteilt wurden. Diese Aufgaben zu übernehmen, zu schätzen und zuzuweisen, war ziemlich cool. Mit der Zeit gelang es uns, die für eine Story benötigte Arbeitszeit genauer abzuschätzen. Wie gesagt, wir brachten die Zeitmanagement-Fähigkeiten auf ein neues Niveau. Wir können auch über Folgendes sprechen: Wie komplex kann ein Projekt sein? Zu wissen, dass alle Funktionalitäten in kleine Aufgaben aufgeteilt und uns zugeteilt wurden, die irgendwann voneinander abhängen werden, hat mich wirklich nervös gemacht, allerdings auf eine gute Art und Weise. Was weisst du über Konflikte?
Sobald man mit anderen an einem Projekt zusammen arbeiten muss, macht man seine Arbeit dementsprechend. Hier sind 2 mögliche Fälle:
1- Missverständnis der Aufgabe (d.h. Die Implementierung passt nicht)
2- die Lösung passt nicht mehr, wegen bereits zusammengeführten Implementierungen. (Die vorherigen Änderungen am Projekt haben sich auf die aktuelle Implementierung ausgewirkt, und jetzt müssen wir es durch eine andere Art und Weise lösen).
In beiden Fällen muss man alle Konflikte auflösen und andere Lösungen für die Aufgabe finden. Das ist prima, oder? (Ich mache nur Spaß.) Man findet sich in einer Schleife wieder. Zuerst muss man eine Aufgabe auswählen, dann eine (best-practice) Lösung implementieren und diese testen. Wenn alle Anforderungen erfüllt sind, macht man einen Pull-Request und wartet auf die Überprüfung des Codes. Der Ablauf teilt sich hier in der Regel in zwei mögliche Wege: Den ersten und den idealen → Du bist der Beste und der Code ist tadellos (oder vielleicht war die Aufgabe zu einfach). Nach dem Code-Review wird deine Arbeit genehmigt und in den Master Branch eingefügt .
Den zweiten → „Kommentare sind meine Leidenschaft“. Man erhält mehr Kommentare als die Anzahl der Zeilen des Codes (Das war ein Scherz). Nun, das ist die zweite Schleife, eine kleinere, aber interessanter. Hier hilft das Team mit einigen guten Lektionen, bei denen man buchstäblich eine Nadel im Heuhaufen finden muss. Keine Sorge, das haben wir schon öfters gemacht. Die Arbeit an der neuen Lösung geht weiter, und sobald sie getestet ist und alles funktioniert, aktualisiert man einfach die Anfrage und wartet wieder auf die Genehmigung. Hoffentlich kommen keine neuen Kommentare dazu, „hoffentlich“ weil du nicht den Luxus hast, die Anzahl der neuen Kommentare zu begrenzen. Die Codeüberprüfung wurde erfolgreich durchgeführt, der Code wird genehmigt und zusammengeführt. Prima! Weiter zu den nächsten Aufgaben.
Wenn man sich am Anfang als Programmierer befindet, dauert es eine Weile, bis man seinen eigenen Coding-Stil entwickelt. Ich denke, dieses Projekt hat es uns leichter gemacht, uns anzupassen und zu verstehen, wie es sich anfühlt, Teil eines Teams zu sein. Wir hatten jederzeit die Unterstützung der Senioren von ANT. Ihre Beteiligung an unserem Lernprozess war notwendig. Es stimmt, dass wir noch sehr viel von ihnen lernen müssen und wir sind froh das sie immer hilfsbereit sind. Natürlich war alles, wie hiervor erwähnt, ohne die Anleitung unserer Mentoren nicht möglich. Ich muss sagen: Ganz tolle Menschen, mit viel Erfahrung in diesem Bereich, immer bereit für eine neue Herausforderung. Dank ihnen haben wir gelernt, wie man auf Probleme beim troubleshoot debugging reagiert. Ich möchte nochmal betonen, wie wichtig Erfahrung ist und wie viele großartige Dinge das mit sich bringen kann. Ich kann nicht sagen, dass alles, was wir gemacht haben, so war, wie es sein sollte. Nachdem wir in den Code-Reviews gelernt haben die Gaps zu verstehen, muss ich zugeben, dass der Clean-Coding-Teil auch nicht gerade zu den einfachen Aufgaben gehört. Dennoch haben wir unser Bestes gegeben und wir lernen immer wieder dazu.
Fazit
Am Ende war es ein gut strukturiertes und herausforderndes Trainingsprogramm, geleitet von einem tollen und unterstützenden Team. Das ANT-Team. In Anbetracht der Tatsache, dass wir Studenten sind und unsere Berufserfahrung nur auf Hochschulprojekten basiert, bot uns ANT die Möglichkeit, mit kleinen Schritten an unsere Ziele heranzugehen, um Erfahrung zu sammeln. Wir konnten die berufsbegleitende Ausbildung leicht zwischen die Lehrpläne der Fakultäten einfügen, so dass wir beides erfolgreich meistern konnten: Die Arbeit und das Studium (Fazit nach dem ersten Semester).
“Being a student is easy. Learning requires actual work.”— William Crawford
Auch wenn wir bei ANT im Moment ein kleines Team sind, sehe ich das als großen Vorteil an. Da ANT ein junges Unternehmen ist, herrscht bei uns ein großes Familien-Feeling. Wir haben sehr schnell Freundschaften geschlossen und viel Zeit mit unseren Kollegen verbracht. Wir sind froh, dass wir uns hier, bei ANT, aktiv einbringen können, sei es in Projekten oder bei anderen Gelegenheiten.