Team • 29. Mai 2022

Mein Praktikum bei der WhereGroup – 3 spannende Monate zwischen Softwareentwicklung und Projektmanagement

Hallo mein Name ist Kai und ich studiere zurzeit Medientechnologie. Wieso ich mich für ein Praktikum bei der WhereGroup entschieden habe, erzähle ich Euch in diesem Blogartikel.

Begonnen hat alles damit, dass im Rahmen der Praxis- und Mobilitätsphase des Bachelor-Studiengangs Medientechnologie ein Pflichtpraktikum absolviert werden sollte. So machte ich mich auf die Suche nach einem geeigneten Unternehmen für mich und stieß schließlich auf die WhereGroup, die meine Anforderungen und Erwartungen für ein Praktikum erfüllte. 

Der Bewerbungsprozess verlief sehr schnell und unkompliziert. Ich hatte wenige Tage nach dem Erstkontakt mein Vorstellungsgespräch.

Kurze Zeit später erhielt ich die Zusage! So stand meinem Praktikum nichts mehr im Wege.

Am 17. Januar war es dann endlich soweit, mein erster Praktikumstag stand an – ich wurde herzlich empfangen und von allen Teammitgliedern (aufgrund der Corona-Situation waren nicht viele Kolleg*innen im Büro) begrüßt. Nach einer kurzen intensiven Einarbeitung konnte ich auch schon loslegen… Schnell wurde mir klar: Langweilig wird´s hier nicht und ich muss nicht nur Kaffee kochen und kopieren! Im Gegenteil, ich wurde von Anfang an als vollwertiges Teammitglied wahrgenommen und komplett eingebunden. So war ich nach nur kürzester Zeit ein echter WhereGroupie und mittendrin in der Welt von Open-Source und Geoinformationssystemen.

Was genau macht die WhereGroup eigentlich?

Die WhereGroup ist ein deutschlandweit führendes Unternehmen an der Schnittstelle von klassischer Softwareentwicklung und GIS (Geographische Informationssysteme). Besonderer Fokus liegt dabei auf der Nutzung von Open-Source. Neben dem Sitz in Bonn gibt es drei weitere Standorte in Berlin, Freiburg und Hamburg, an denen insgesamt knapp 50 Mitarbeiter beschäftigt sind.

Zu den Kunden der WhereGroup gehören vor allem größere Behörden, Unternehmen aus verschiedenen Bereichen (Energie, Transport, Telekommunikation, Landwirtschaft, Sicherheit u.a.) und Kommunen.

Das Unternehmen bietet außerdem Schulungen zu verschiedenen Themen aus den Bereichen GIS, Softwareentwicklung und Datenbanken im eigenen Schulungsinstitut FOSS Academy an.

Die WhereGroup ist außerdem äußerst engagiert in der Open-Source- sowie GIS-Community und Mitglied oder Sponsor von zahlreichen Organisationen, wie OSGeo oder FOSSGIS.

Mapbender

Eines der wichtigen Produkte ist Mapbender - seit vielen Jahren eine weit verbreitete Lösung für die Entwicklung von Geoportalen, eine Art CMS für Karten. Mapbender wird direkt von der WhereGroup entwickelt. Es ist inzwischen in der dritten Version erschienen und wurde zwischenzeitlich von Grund auf neu aufgebaut. Daneben bietet die WhereGroup weitere Open-Source-Produkte an, die für jeden kostenlos nutzbar sind. Auf Wunsch können die Produkte aber auch individuell angepasst, in bestehende Lösungen integriert und eingerichtet oder vollkommen neue Anwendungen für den Kunden entwickelt werden.

Neben Mapbender bietet die WhereGroup u.a. die Software MapComponents an.           

MapComponents

MapComponents ist durch den Einsatz von modernen Frameworks und Bibliotheken (Node.js, React, MapLibre), besonders zukunftsorientiert. Kerngedanke der Software ist die Bereitstellung einzelner (React-)Komponenten, die beliebig zu einer modernen, auch grafisch ansprechenden und für Mobilgeräte optimierten WebGIS-Anwendung zusammengesetzt werden können. Da sich in den letzten Jahren und Jahrzehnten ein Trend zu immer mehr Mobilgerätnutzung entwickelt hat, ist die Responsivität ein besonders wichtiges Feature.

Basis von MapComponents bildet MapLibre, was aus einem Fork von Mapbox entstand, als letzteres sein Lizenzmodell verschärfte und damit nicht mehr der Open-Source-Welt zur Verfügung stand.

Meine Tätigkeit in diesem Projekt bestand im Wesentlichen darin, ein von einem Designer im Unternehmen vorgegebenes Redesign in React umzusetzen. Dazu stellte dieser mir Wireframes und einen Styleguide zur Verfügung. Neben den optischen Änderungen, wie die Umstellung auf „Dark Mode“ und die gestalterischen Details, welche viel Arbeit mit CSS erforderten, gab es auch einige zu implementierende Funktionalitäten, wie ein Hamburgermenu für Mobilgeräte, einen Filter, ein Merklisten-System und eine Suche, welche eine Einarbeitung in React und insbesondere grundlegende React Hooks wie useEffect oder useState voraussetzten. Zudem waren einige Abwandlungen am Routing nötig, das durch das React Router Framework ermöglicht wird. Die Anwendung sollte zudem auch auf Mobilgeräten gut aussehen, was ich bei der Entwicklung berücksichtigen musste.

Meine Ergebnisse stellte ich dann im wöchentlichen Sprint-Meeting den anderen Teammitgliedern, dem Projektmanagement und der Geschäftsleitung vor. Zusammen diskutierten wir hier alle Ergebnisse der letzten Woche sowie das weitere Vorgehen und die Strategie bezüglich des Produktes MapComponents. So wurde beispielsweise die Umstellung von JavaScript auf TypeScript entschieden, um das Produkt zukunftssicherer und wettbewerbsfähiger zu machen.

Neue MapComponents-Anwendung für einen großen Kunden

In diesem Projekt ging es um das Entwickeln einer neuen Anwendung mit MapComponents für einen Kunden. Da es sich um ein internes Projekt handelte, wurde nicht GitHub, sondern GitLab verwendet. Das Design wurde in Zusammenarbeit mit einer Agentur ausgearbeitet und von mir in React und mithilfe des MUI Material Design Frameworks umgesetzt. Zudem mussten die Fenster mithilfe des useState-Hooks und Event Listeners ein- und ausblendbar, sowie verschiebbar gemacht werden. Dazu entwickelte ich eine „DraggableFrame“-Komponente, die die Logik für das Verschieben enthält. Sie umschließt die eigentlichen Fenster-Komponenten, die dann von der Verschiebe-Funktionalität nichts wissen. Weil diese Anwendung auch auf Mobilgeräten funktionieren sollte, mussten für kleinere Geräte einige Funktionen angepasst und Touch Events richtig verarbeitet werden.

Die Anforderungen waren anfangs noch vage und wurden mit der Entwicklung von Zwischenständen immer mehr erweitert, sodass mehr und mehr eine Art Geoportal entstand, das mehrere Funktionen bietet, welche jeweils in einem verschiebbaren Fenster dargestellt werden. Dazu war es nötig, viele Komponenten zu integrieren, abzuwandeln oder auf Grundlage bestehender Komponenten neue zu entwickeln. Einige Beispiele:

  • Neuentwicklung eines Ebenenbaums, der alle Ebenen der Karte anzeigt, deren Sichtbarkeit einstellen lässt und selbst mehrere auf- und zuklappbare Ebenen enthält.
  • Einbindung und Modifizierung des WmsLoader Components, das es erlaubt, sogenannte WMS (Web Map Services) über eine URL abzurufen und einzubinden.
  • Entwicklung von Tools zum Messen der Länge von einzeichenbaren Strecken sowie dem Flächeninhalt von Polygonen auf Grundlage einer bestehenden Komponente per Bibliothek Turf.
  • Einbindung der Möglichkeit, per Klick auf die Karte ein FeatureInfo-Request für ein WMS zu starten und dann Informationen über das markierte Feature bzw. alle Features in der markierten Bounding Box in einem Popup angezeigt zu bekommen.
  • Einbindung einer Komponente, die Livedaten (Flugzeugpositionsdaten) auf der Karte anzeigt.

Bei der Einbindung der Komponenten ging es häufig darum, Daten auch für andere Komponenten verfügbar zu machen. Dazu nutzte ich „Context“, um Daten an einer zentralen Stelle zu speichern und von überall aus darauf zuzugreifen.

Der Kunde äußerte ein paar Wünsche, welche in der Entwicklung berücksichtigt werden mussten.

Eine Anforderung war die Erstellung eines Tools, das es erlaubt, eine Linie auf der Karte zu zeichnen und alle Geometrien („Features“) einer vorher aus einer Datei eingelesenen GeoJSON-Datenstruktur, die die Linie schneidet, ausgegeben zu bekommen. Dieses Tool setzte ich mithilfe der bestehenden MapComponents-Komponente zum Zeichnen von LineStrings auf der Karte um.

Gefordert wurde zudem, eine Authentifizierung über HTTP Basic Auth zu implementieren, um passwortgeschützte WMS-Dienste einbinden zu können. Für diese Funktion schaffte ich die nötigen Voraussetzungen und beschäftigte mich außerdem mit einem Problem, was in dem Zusammenhang auftrat: Bei einigen WMS-Diensten war der „Access-Control-Allow-Origin“-Header falsch konfiguriert. Dahinter steckt der Sicherheitsmechanismus Cross-Origin Resource Sharing (CORS), der Fehler konnte jedoch relativ schnell behoben werden.

Durch die immer neu hinzukommenden Anforderungen wurde das Projekt zum größten Projekt, welches ich im Rahmen des Praktikums durchführte. Während der Entwicklung befand ich mich im ständigen Austausch mit erfahrenen Softwareentwickler*innen sowie dem Projektmanagement, welches wiederum mit dem Kunden im Austausch war.

Der Kunde nutzte die Anwendung in seinem Unternehmen intern als Proof Of Concept und konnte so einige Kolleg*innen für MapComponents gewinnen und sogar von einem großen Konkurrenzprodukt abbringen. Zusätzlich konnten potenziell neue Aufträge für die WhereGroup akquiriert werden. Meine entwickelte Anwendung soll außerdem in abgewandelter Form in Zukunft als Demoprojekt im MapComponents-Katalog erscheinen.

Ein Zwischenstand des Projektes wurde schließlich deployed, was mir Einblicke bot in den Bereich der professionellen Verteilung von Software. Zunehmend wird hierbei im Unternehmen Docker verwendet, um für alle Seiten eine möglichst reibungslose Verteilung zu gewährleisten, ohne sich um unvorhersehbare Fehler durch die neue Umgebung kümmern zu müssen. In meinem Fall kam jedoch nicht Docker zum Einsatz, das Projekt wurde lediglich per yarn build bereit gemacht, damit es auf einem Server vom Kunden statisch ausgeliefert werden kann.

Docker

Während des Praktikums lernte ich außerdem noch Docker und Docker Compose kennen. Docker ist eine Software zur Containervirtualisierung. Im Gegensatz zu einer Virtual Machine ist es dabei deutlich weniger ressourcenaufwändig, weil sich die Container einen Kernel teilen. Ein Container enthält alle nötigen Bibliotheken und Abhängigkeiten, um überall gleich zu funktionieren. Die vielen Probleme, die zuvor auftraten, weil beispielsweise unterschiedliche Versionen einer Bibliothek installiert waren, entfallen nun.

Ich lernte im Praktikum, wie Docker Images im Unternehmen erstellt werden. Hierbei steht das Dockerfile im Mittelpunkt, in das u.a. die notwendigen Befehle zum Starten der Anwendung geschrieben werden. In Docker Compose lassen sich mehrere Images in einer YAML-Datei miteinander kombinieren. Zudem gibt man in der Datei Networks und Volumes an, um festzulegen, mit wem die Services kommunizieren dürfen und wo sie Daten speichern.

Aufbau eines React-Prototyps

In meinem letzten Projekt habe ich zusammen mit anderen Entwickler*innen, durch den Aufbau eines Prototyps in React, Vorarbeiten für ein anstehendes Projekt im landwirtschaftlichen Umfeld geleistet, bei dem es vor allem um die Entwicklung einer anspruchsvollen Suche gehen wird.

Meine Aufgabe war vor allem die Gestaltung einer komplexen Suchleiste und eines Filtersystems mit React und MUI. Ein Kollege stellte uns dafür Mockups und Styleguides zur Verfügung. Unsere Ergebnisse präsentierten wir dem Projektverantwortlichen und bekamen Rückmeldung und Anregungen für Verbesserungen. Zudem wurden wir in die Kommunikation mit dem Kunden involviert. Da ich zuvor meist allein an den Projekten gearbeitet habe, war die Teamarbeit eine gute Abwechslung und forderte mehr Abstimmung, um beispielsweise Merge Conflicts in Git zu vermeiden.

Fazit

Insgesamt war es ein sehr gelungenes Praktikum, das mir in den 3 Monaten viele Einblicke in professionelle Softwareentwicklung und Projektmanagement bot und mir die Möglichkeit gab, selbst für eine längere Zeit an einem Projekt zu arbeiten. Ich musste zwar vieles selbstständig erlernen, konnte mich bei Fragen aber immer an jemanden wenden. Vor allem das Frontend-Framework React, mit welchem ich zuvor noch nicht gearbeitet hatte, habe ich intensiv erlernen können. Dazu kommen Grundkenntnisse und vertiefte Kenntnisse in den Bereichen Android-Entwicklung mit Kotlin inklusive Dependency Injections, Docker und Docker Compose, TypeScript und CSS.

Ich hatte sowohl die Möglichkeit, mich in bestehende, komplexe Softwareprojekte einzuarbeiten, als auch ganz neue Projekte zu erstellen. In beiden Fällen habe ich mich von Tag zu Tag sowohl besser zurechtfinden, als auch effizienter und schneller arbeiten können. Die Arbeit im Team habe ich als motivierend und als gute Abwechslung empfunden. Zudem gab es stets positive Rückmeldung oder auch Kritikpunkte, was insbesondere am Anfang wichtig ist. Vor allem haben mir die lockere Atmosphäre, die flexiblen Arbeitszeiten und die flachen Hierarchien gefallen. Ich hatte zudem bis auf einige Male hauptsächlich Aufgaben, die keine strenge Deadline hatten und so weniger Zeitdruck verursachten. Das Unternehmen hat eine Größe, die es noch erlaubt, in alle Schritte und Bereiche miteinbezogen zu sein und sich einem Projekt ganzheitlich zu widmen. Gleichzeitig ist es aber ein mittelständisches Unternehmen mit großen Kunden und mit Personal, welches über umfangreiches Fachwissen und sehr gute Fähigkeiten verfügt.

Spannend war außerdem die Mischung aus Geografie und Informatik. Nach dem Praktikum erschließt sich mir, dass Geoinformatik als ganz eigene Branche gesehen werden kann, die neben Wissen aus der klassischen Softwareentwicklung auch eine Menge an Kenntnissen aus dem GIS-Bereich voraussetzt. Am Anfang waren viele Dinge neu für mich und ich musste zunächst einige grundlegende Fachbegriffe und Konzepte verstehen. Ob das Feld in Zukunft auch für mich in Frage kommt, weiß ich noch nicht, aber was Softwareentwicklung im Allgemeinen angeht, wurden meine Erwartungen erfüllt und auch die eingeschlagene Richtung innerhalb meines Studiums bestätigt.

Ein weiterer Plus-Punkt ist der Aspekt „Weiterbildung / Fortbildung“: Die WhereGroup stellt allen Mitarbeiter*innen alle 2 Monate 2 Tage zur individuellen Weiterbildung zur Verfügung. An den „Happy Days“ können sich die Mitarbeiter*innen ein Thema aussuchen, das sie interessiert und sich anschließend dazu weiterbilden. Im Anschluss wird sich mit den Kolleg*innen über das Gelernte ausgetauscht.

 

Weitere Beiträge, die Dich interessieren könnten:

Jetzt bewerben

Dich hat unser Blogartikel begeistert und Du möchtest auch ein WhereGroupie werden - egal, ob als Praktikant / Praktikantin, Auszubildende oder Experte / Expertin?

Auf unserer Karriereseite findest Du immer spannende Stellenausschreibungen: https://wheregroup.com/karriere/jobs/

Jetzt vorbeischauen und schnell bewerben.

Artikel teilen: