OTTO ist auf dem Weg zu einem technologieorientierten Unternehmen. Unsere Software ist geschäftsbezogen, nicht abstrakt. Unter Einhaltung der Anforderungen unserer Einkaufsabteilung ist es uns gelungen, eine großartige Plattform für Kunden, Partner und Lieferanten zu schaffen.
Der Ansatz des Domain-Driven Design (DDD) hilft uns, uns auf bestimmte Geschäftsbereiche zu konzentrieren. Aus einer Gesamtperspektive betrachtet, implementiert er die wichtigsten Belange und gibt uns die Möglichkeit, neue Teams auszugliedern, wenn es einen Geschäftsbereich gibt, den wir angehen müssen.
Seit einigen Jahren ist dieser Ansatz recht erfolgreich bei der Bildung von Produktteams mit einem klaren Geschäftsfokus und der Möglichkeit, eigene Entscheidungen zu treffen. Die Aufteilung unserer Plattform in unabhängige Geschäftsbereiche und die Wahlfreiheit der Teams bei den technischen Schichten führt zu einer höheren Geschwindigkeit bei der Bereitstellung. Wir haben uns jedoch gefragt, ob dieses Vorgehen auch Nachteile hat. Es bringt sicherlich ein geringeres Maß an technischer Ausrichtung mit sich und könnte zu weniger Synergien führen. Wenn Teams ohne technische Richtlinien arbeiten, kann eine nicht wartbare Umgebung die Folge sein. Die Einstellung von Entwicklern könnte sich als schwierig erweisen, wenn jedes Team völlig unterschiedliche technische Stacks verwendet. Gegenseitige Hilfe wird unmöglich, wenn es keine Parallelen zwischen den Teams gibt.
Es ist ein schmaler Grat zwischen Freiheit und Flexibilität und Steuerung und Anpassung. Wir wollten den Korridor für die besten Lösungen nicht einengen. Ein gewisses Maß an Angleichung sollte unseren Technikern helfen, eine gemeinsame Sprache zu sprechen und ähnliche (nicht gleiche) Lösungen für gemeinsame Probleme zu finden.
Inspiriert von den technischen Ausrichtungsstrategien anderer Unternehmen (u.a. Scout24, john lewis und Zalando), griffen wir die Idee auf, ein technisches Manifest zu erstellen . Es sollte wenige, aber klare Regeln enthalten . Wann immer technische Entscheidungen auf Teamebene diskutiert werden, gibt das Manifest Anleitung und Unterstützung, um zu einer Entscheidung zu gelangen. Es sollte kein Satz strenger Regeln sein, der die Freiheit der Teams einschränkt, sich für ihre eigenen Lösungen zu entscheiden. Die Anleitung ist als Unterstützung für die Entscheidungsfindung gedacht, um schneller voranzukommen und eine gemeinsame Denkweise zu entwickeln.
Die Beteiligung und der Beitrag aller unserer technischen Mitarbeiter ist der Schlüssel zum Erfolg. Wir haben uns überlegt, welche Themen und Bereiche in das Manifest aufgenommen werden sollen. Um zu einem allgemein akzeptierten Regelwerk zu gelangen, waren alle Entwickler eingeladen, einen Beitrag zu leisten und zu diskutieren, was genau in das Manifest aufgenommen werden sollte. Die Menschen neigen dazu, kollektives Eigentum an solchen Artefakten anzunehmen, vorausgesetzt, dass jede einzelne Person die Möglichkeit hatte, einen Beitrag zu leisten, und eingeladen wurde, alle Themen zu diskutieren.
Die erste Version wurde 2018 erstellt, als wir unsere Reise in die Tiefsee begannen. Seitdem haben wir eine jährliche Überprüfung eingeführt, um Änderungen einzubeziehen und alle Themen, die für das Manifest von Interesse sind, abzudecken.
Das Manifest besteht aus zwei Hauptsegmenten: Werte und Grundsätze. Die Werte beschreiben unsere Denkweise. Wir wollten darlegen, welche Themen uns wichtig sind, vor allem um Nicht-Technikern einen Überblick darüber zu geben, wie wir arbeiten wollen. Nach mehreren Diskussionen haben wir uns für diese fünf Werte entschieden :
Wir wollen unser Geschäft voranbringen, nicht nur Software entwickeln. Alle erforderlichen technischen Entscheidungen sollten in irgendeiner Weise mit den geschäftlichen Anforderungen zusammenhängen. Bei der Entwicklung von Geschäftsideen lieben wir den Ansatz eines ganzen Teams. Wir konzentrieren uns auf die Produktentwicklung und sind der Meinung, dass wir eher (Software-)Produkte als Software-Artefakte schaffen.
Wir wollen die Zykluszeiten in einem Build -> Measure -> Learning-Zyklus reduzieren. Mit einer offenen Fehlerkultur empfehlen wir nachdrücklich , Dinge in realen Umgebungen auszuprobieren, anstatt darüber zu diskutieren, was die beste Lösung sein könnte. Die Wahrung der Autonomie der Teams bei gleichzeitiger lockerer Zusammenarbeit soll es den Teams ermöglichen, Inkremente zu liefern und die Erfolgsrate eines Features regelmäßig zu überprüfen, anstatt sich an einen statischen Release-Plan zu klammern.
Bei der Entwicklung unserer Produkte werden weithin anerkannte Open-Ork-Standards verwendet. Wir mögen die Idee der Unterstützung und wollen die Barrieren niedrig halten. Wir bieten Austausch und unterstützen das Show-and-Tell-Konzept, indem wir unsere Mitarbeiter anleiten, wie sie bestimmte gemeinsame Anforderungen umsetzen können.
Wir wollen eine Umgebung schaffen, in der unsere Software auf unbestimmte Zeit gepflegt werden kann, ohne dass in naher Zukunft ein großes Migrations-/Transformationsprojekt ansteht. Deshalb fordern wir unsere Teams auf, nicht-funktionale Aspekte wie Skalierung und Aktualität des gewählten Tech-Stacks im Auge zu behalten.
Qualität ist eine unbestreitbare Komponente in unserer Denkweise und wir akzeptieren keine schlechte Qualität aufgrund von Druck. Die Entwicklung von Produkten wird als ganzheitliche Disziplin betrachtet und nicht nur als Code-Schreiben.
Getreu dem berühmten Zitat von Werner Vogel "You build it, you run it" sind sich die Teams über die Verantwortung, die sie übernehmen, im Klaren. Unsere Teams sind während des gesamten Lebenszyklus für ihre Produkte verantwortlich. Die Teams müssen selbst entscheiden, welche Prioritäten sie setzen: ob sie technische Probleme angehen, Kosten optimieren oder neue Funktionen liefern.
Neben den Werten, die bei der Beschreibung einer Denkweise mehr oder weniger übergeordnet sind, haben wir die technischen Prinzipien gesammelt, die wir in diesen drei Bereichen beobachten :
Aufgepasst! Passt unsere Arbeitsweise zu deiner Vorstellung von der Entwicklung genialer Softwareprodukte? Entdecke spannende neue Herausforderungen in unserer Stellensuche.
Das vollständige Manifest ist hier veröffentlicht, ich werde jetzt nur einige der Grundsätze herausgreifen, die das zugrunde liegende Konzept am besten beschreiben. Diese Grundsätze bieten Tech-Teams Ratschläge für alltägliche Entscheidungen. Wenn Teams mit einem Thema kämpfen, können diese Prinzipien hilfreich sein, um zu einem Ergebnis zu kommen.
Technische Autonomie ist etwas, das unsere Systeme ausfallsicher macht und die Zeit bis zur Wiederherstellung verkürzt. Lose Verbindungen in der blockierungsfreien Kommunikation führen dazu, dass wir Systeme implementieren, die robuster sind. Wir nehmen negative Aspekte in Kauf, wie die Speicherung redundanter Daten oder das inhärente Risiko, einem Partner, Kunden oder Mitarbeiter veraltete Daten zu zeigen. Wir implementieren eine ereignisgesteuerte Architektur und schaffen stattdessen eine REST-Kommunikation zwischen den Systemen.
Der Unix-Ansatz, eine Sache pro Dienst zu tun, aber diese Sache wirklich gut zu machen, ist etwas, das wir in unserer technischen DNA verankern wollen. Ein Microservice implementiert eine Geschäftsfunktion, keine technische Lösung. Ein Microservice als solcher kann aus mehreren technischen Diensten bestehen (z. B. Anti-Korruptionsschichten, API-Schichten, UI-Schichten) - wobei alle Dienste als gemeinsame geschäftsbezogene Microservices fungieren. Wir vermeiden es, Dienste zu haben, die mehr als nur eine einzige Geschäftsdomäne behandeln.
Durch die Nutzung von Cloud-Anbietern wie AWS oder GCP haben wir die Möglichkeit, unseren operativen (Betriebs-)Aufwand zu minimieren. Auf dieser Grundlage haben wir eine Prioritätenliste erstellt, die sich mit der Auswahl und Integration von Basisdiensten wie Warteschlangen, Datenbanken oder Laufzeitumgebungen befasst, und zwar in der folgenden Reihenfolge:
Teamübergreifende Entscheidungen sind oft schwer zu treffen. Wir halten es für hilfreicher, teamübergreifende Belange in einer offenen Diskussion zu klären und die Ergebnisse für alle Betroffenen klar und transparent zu dokumentieren. Schriftlich festgehaltene Ergebnisse verdeutlichen die Konsequenzen, anstatt "ungeschriebene" Gesetze zu haben, die jedes Team nach seiner eigenen Interpretation befolgt.
Standardeinstellungen sollten einen Überblick über weit verbreitete Technologien geben. Sie sind hilfreich, weil die Teams sehen können, welche Technologie verwendet wird, anstatt selbst nachzuforschen. Sie können unzählige Arbeitsstunden in das Ausprobieren verschiedener Lösungen investieren, und für jedes technische Problem gibt es oft zahlreiche vielversprechende Lösungen. Wir führen einen Technik-Radar, um Transparenz zu schaffen und die Möglichkeit zu bieten, sich einen Überblick zu verschaffen und herauszufinden, welches Team bei bestimmten Problemen zu kontaktieren ist. Änderungen werden vierteljährlich eingearbeitet, um die Liste der Vorgaben auf dem neuesten Stand zu halten.
Ich persönlich habe die Zeit und die Arbeit, die in die Erörterung des Manifests gesteckt wurde, genossen. Es zeigt auf, was aus technischer Sicht wichtig ist , und schafft Transparenz für unsere Geschäftsleute und das Management, indem es die Konzepte auflistet, auf denen wir unsere Arbeit aufbauen wollen. Ich freue mich besonders über die Tatsache, dass alle Ingenieure unserer technischen Gemeinschaft eingeladen sind, einen Beitrag zu leisten. Dieser Ansatz gibt mir das Vertrauen, dass die aufgestellten Regeln sowohl von den Betroffenen akzeptiert werden als auch in der täglichen Arbeit für unsere Teams sinnvoll und nützlich sind.
Wenn diese Themen für dich interessant klingen, würden wir dich gerne in unserem Team begrüßen.
We have received your feedback.