HUGO BOSS — global Android-Apps intern iwwerhuelen
Problem
D'HUGO-BOSS-Apps ginn u Clienten a fofzeng Länner an aacht Sproochen ausgeliwwert, mat méi wéi 500.000 Installatiounen op Google Play. Si droen den E-Commerce, Click-and-Collect, Rendez-vousen am Buttek an de Fidelitéitsprogramm HUGO BOSS XP.
Si goufe vun enger externer Agence gebaut a bedriwwen. Esou en Arrangement funktionéiert, bis d'App zentral fir d'Geschäft gëtt. Vun do un muss all Fro doriwwer — wat als nächst gebaut gëtt, wéi séier, wéi de Code drënner ausgesäit — duerch e Kontrakt goen, ier et eng Äntwert gëtt.
Aschränkung
D'Apps waren déi ganz Zäit iwwer live Commerce a fofzeng Mäert. D'Entwécklung intern ze iwwerhuelen duerft keng Paus bedeiten, kee komplett neie Code an och kee Quartal mat schlechter Liwwerung. D'Iwwerginn vum Code huet ënner engem lafende Betrib misse geschéien, an d'Equipe, déi de Code kritt huet, huet et nach guer net ginn.
Entscheedungen
- Als éischt iwwerhuelen, dann verbesseren. De Code genee esou iwwerhuelen, wéi en do stoung, amplaz d'Iwwerginn als Erlaabnes ze gesinn, alles nei ze schreiwen. Alles nei ze schreiwe wier déi angenehmst Entscheedung gewiescht — an déi, mat där de Programm am séiersten hätt kënnen ophalen.
- Déi intern Android-Equipe vun null un opbauen — Recrutement, Aféierung an déi Aarbechtsofmaachungen, déi eng ganz nei Equipe brauch, ier se iwwerhaapt ka lassleeën.
- D'Konventiounen opschreiwen. Coding-Standarden, Architektur-Patterns, Workflows, d'Aart a Weis ze schaffen. Mat enger neier Equipe an engem Code, deen ee geierft huet, kann ee sech net op stëllschweigend Wësse verloossen: eréischt wann d'Konventioune schwaarz op wäiss stinn, kënnen d'Leit richteg Entscheedungen huelen, ouni datt bei all eenzeler e Senior-Ingenieur derbäi ass.
- Moderniséieren ënner der lafender Liwwerung, net amplaz vun der Liwwerung, sou datt d'App weider E-Commerce, Click-and-Collect, Rendez-vousen am Buttek a Fidelitéits-Funktiounen ophuele konnt, während d'Basis op déi aktuell Standarde bruecht gouf.
- Den eenzege Modul opdeelen an dann alles iwwer Dependency Injection verbannen. D'App ass als ee Modul ukomm. Ech hunn d'Architektur op vill Moduler ëmgebaut. Duerno hunn ech Dependency Injection an d'Daten- an d'Business-Schicht agefouert. Dat huet zwou Saache bruecht, déi ee soss nëmme schwéier kritt. D'Verhale vun der App konnt vu Land zu Land anescht sinn, andeems een eng Implementatioun austauscht, ouni d'UI nei ze verbannen. An all Schicht konnt ee a purem Kotlin simuléieren, ouni eng extern Mocking-Bibliothéik — sou datt d'Unit-Tests parallel a méi séier lafe konnten, ouni déi zoufälleg Feeler, déi eng gemeinsam Test-Infrastruktur mat sech bréngt.
Resultat
D'Entwécklung ass vun der Agence op eng intern Equipe iwwergaang, op Apps, déi déi ganz Zäit iwwer a fofzeng Mäert live bliwwe sinn.
Dat kloerst Zeechen, datt d'Aarbecht de Projet iwwerlieft huet: d'Konventiounen, d'Architektur-Patterns an d'Aart a Weis ze schaffen, déi fir Android festgeluecht goufen, sinn vun der Direktioun an der ganzer Mobil-Organisatioun ugeholl ginn. De Code gouf op déi aktuell Ingenieur-Standarde bruecht, sou datt den E-Commerce, Click-and-Collect, Rendez-vousen am Buttek an de Fidelitéitsprogramm HUGO BOSS XP mam Geschäft matwuesse kënnen an net dogéint.
D'Test-Suite ass an zwielef Méint vun näischt op eng Ofdeckung vun ongeféier 70 % gewuess. Op där Zuel baut de Rescht op: manner Bugs, déi a Produktioun kommen, eng méi stabil App, an eng Produkt-Equipe, déi eppes probéiere konnt an duerno wousst, ob et funktionéiert, ouni op e manuelle Regressiounstest ze waarden.
Wat ech anescht maache géif
Ech géif d'Konventiounen virun der Iwwerginn opschreiwen an net duerno. Mir hunn als éischt de Code iwwerholl an d'Aart a Weis ze schaffen dokumentéiert, während d'Equipe sech nach am Opbau war. Dat huet bedeit, datt déi éischt Leit, déi agestallt goufen, Saachen entscheet hunn, ier iwwerhaapt eppes opgeschriwwe war, no deem si sech hätte kënne riichten. Genee dës Konventioune sinn um Enn dat ginn, wat d'Direktioun an der ganzer Mobil-Organisatioun ugeholl huet — si ware méi wäert, wéi hir Plaz an der Reiefolleg vermuede léisst, a si hätten dat éischt Resultat vun der Iwwernahm sollte sinn an net e Nieweprodukt dovun.