Hinter den Kulissen
Team Isotopes: Die Speed Demons des Engineerings
von Dominik Bärlocher
Bei Digitec Galaxus entwickeln wir sowohl unsere Onlineshops als auch unser ERP-System selbst. Aktuell arbeiten über 260 Engineers, Product Owner, Data Analysten und UX Designer in 35 Entwicklungsteams daran, unsere Prozesse laufend zu optimieren. Dies mit dem Ziel möglichst effektiv und effizient Mehrwert für unsere Kunden zu generieren. Welche Aspekte uns dabei besonders wichtig sind, erfährst du in diesem Artikel.
Unsere Kultur ist geprägt durch die Unternehmenswerte kooperativ, innovativ, piratisch, eigenverantwortlich und ambitioniert. Sie bilden das Fundament unserer Zusammenarbeit.
Besonderen Wert legen wir darauf, dass sich alle im Unternehmen unabhängig von der Hierarchie auf Augenhöhe und wertschätzend begegnen und andere Meinungen und Ansichten positiv gegenüberstehen. Dadurch fühlen wir uns frei auch verrückteste Ideen zu diskutieren und Bedenken ungeniert zu äussern. Diese Offenheit ist eine enorm wichtige Voraussetzung, um clevere und innovative Lösungen zu entwickeln und zielstrebig umzusetzen.
Wichtig ist uns auch, dass wir unsere Aufgaben und Herausforderungen proaktiv und eigenverantwortlich angehen und Entscheidungen möglichst selbst treffen. Dafür ist es essenziell, dass wir unnötige bürokratische Hürden konsequent beseitigen und Entscheidungsprozesse schlank halten.
Ausserdem liegt uns eine starke Lern- und Fehlerkultur am Herzen: Je besser es uns als Organisation gelingt, bei Fehlern nicht die Schuldigen zu suchen und an den Pranger zu stellen, sondern möglichst viel aus den Fehlern zu lernen, desto mehr Wissen können wir aufbauen. Und dies hilft uns, Software effektiv und effizient zu entwickeln. Folgende Praktiken haben sich in diesem Zusammenhang als wertvoll erwiesen:
Unsere Geschäftsleitung definiert in den Jahreszielen den strategischen Fokus des Unternehmens. Darauf basierend formulieren unsere Entwicklungsteams in enger Zusammenarbeit mit allen Geschäftsbereichen sogenannte Initiativen. Eine Initiative beschreibt ein Änderungsvorhaben mit klaren Zielen und überprüfbaren Ergebnissen, welches direkt auf die strategischen Ziele einzahlt. Eine Initiative sollte in maximal vier Monaten umsetzbar sein. So gelingt es uns schnell zu lernen und wir können auf sich verändernde Prioritäten zügig reagieren.
Sobald die Umsetzung einer Initiative startet, wird sie in kleinere Arbeitspakete heruntergebrochen – sogenannte Epics und Storys. Die Storys werden dann in den Product Backlogs der Entwicklungsteams priorisiert und umgesetzt. Die Entwicklung erfolgt im Rahmen des Scrum-Frameworks, teilweise ergänzt durch Kanban-Praktiken.
Die Entwicklungsteams spezialisieren sich auf ein bestimmtes Geschäftsfeld und sind dafür verantwortlich, das Kundenerlebnis zu verbessern, indem sie sowohl die Prozesse als auch die technische Lösung in diesem Bereich weiterentwickeln. Um eine skalierbare Organisation und ein motivierendes Arbeitsumfeld zu begünstigen, ist es uns wichtig, dass möglichst viele Entscheidungen direkt innerhalb eines Teams getroffen werden können. Dank der Spezialisierung gelingt es uns, das dafür notwendige Detail-Wissen – sowohl produktseitig als auch technisch – innerhalb des Teams kontinuierlich auszubauen. Ein Team besteht in der Regel aus insgesamt 6 bis 9 Leuten. Neben den Entwicklerinnen und Entwicklern verfügt jedes Team über einen Product Owner. Er oder sie ist verantwortlich für die Priorisierung des «Product Backlogs». Und dann wäre da noch der Teamleader. Er oder sie ist verantwortlich ist für die personelle Führung, entwickelt aber auch aktiv an der technischen Lösung mit. Die Verantwortung für die Softwarearchitektur liegt im Team: Für jede Initiative übernimmt ein Teammitglied die Rolle des Solution Architekten und prägt somit die Architektur der umgesetzten Lösungen.
Mehrere Teams bilden zusammen eine Area. Die untenstehende Tabelle gibt einen Grobüberblick über die Verantwortlichkeiten der Areas und im Bild sind die einzelnen Teams pro Area aufgeführt.
Es ist uns wichtig, dass wir umgesetzte Änderungen rasch und häufig in die produktive Umgebung integrieren können (Continuous Delivery). Das geschieht in der Regel nach jeder umgesetzten Story - also typischerweise mehrmals täglich. So verhindern wir Big-Bang-Releases und erhalten rasches Feedback, sollte etwas nicht wie gewünscht funktionieren. Ausserdem können die Kundinnen und Kunden sofort von Verbesserungen profitieren. Automatisierte Tests im Rahmen des Release-Prozesses erhöhen die Wahrscheinlichkeit, dass allfällige Bugs frühzeitig entdeckt und behoben werden. Und falls uns doch mal etwas durchrutscht, freuen wir uns, wenn ihr in der Community Feedback hinterlässt.
Wir setzen auf eine modulare Architektur mit möglichst schlanken und stabilen Schnittstellen zwischen den einzelnen Softwarekomponenten. Jede Komponente entspricht einem Teilbereich unseres Geschäftsfeldes und wird von einem designierten Team verantwortet. Damit stellen wir sicher, dass sich alle Teams auf ihren Verantwortungsbereich konzentrieren und sich beim Implementieren von neuen Features nicht gegenseitig in die Quere kommen.
Eine Softwarekomponente lebt entweder in einem Modul (Microservice) oder im modularen Monolithen. Aktuell gibt es über 50 Module (ein bis zwei pro Team). Unser Technologie-Stack beruht hauptsächlich auf .NET Core, MS SQL-Server und MongoDB. Im Onlineshop-Frontend verwenden wir React mit Next.js und GraphQL. Sowohl die Module als auch der Monolith werden in einem Kubernetes-Cluster betrieben. Für die asynchrone Kommunikation nutzen wir Messaging (Kafka und Azure Service Bus). Unseren kompletten Tech-Radar findest du hier.
Die Teams in der Area «Platform & SysOps» setzen alle Hebel in Bewegung, dass die anderen Entwicklungsteams möglichst effizient arbeiten können. Dies tun sie, indem sie standardisierte Lösungen für Querschnitts- und Infrastrukturthemen anbieten. Dies wäre beispielsweise ein Modul-Template, ein Kubernetes-Cluster, eine zentrale Observability-Lösung (Logging, Monitoring, Alerting) oder Database-as-a-Service für unsere Standard-Persistenztechnologien (SQL-Server und MongoDb). Ziel ist es, dass solche Plattformdienste für die Entwicklungsteams einfach verständlich und nutzbar sind, sodass möglichst viel Raum für die Entwicklung von kundenwirksamen Features bleibt.
Hast du Fragen oder Lust, unsere Shops und Prozesse zu verbessern? Fragen kannst du gerne in der Kommentarspalte stellen.
Wir sind laufend auf der Suche nach Verstärkung. Unsere aktuellen Stellenangebote findest du auf unserem Stellenportal.
Hinter den Kulissen
von Dominik Bärlocher
Hinter den Kulissen
von Dominik Bärlocher
Hinter den Kulissen
von Dominik Bärlocher
Hinter den Kulissen
von Norina Brun
Meine Passion ist die Technologie und die Menschen dahinter. Ich mag es, zusammen mit coolen Leuten einfache Lösungen für komplexe Problemstellungen zu finden. Meine Freizeit geniesse ich zusammen mit meiner Familie und beim Sport.