Nach der Analyse der IT-Systemarchitektur des Kunden und der Erfassung von Mitarbeiterfeedback zum
Design kamen wir zu dem Schluss, dass diese erheblich von einer Optimierung profitieren könnte. Die
größte Herausforderung bestand darin, ein einheitliches System zu schaffen, das die Verwaltung aller
Marken des Kunden unterstützt und sich an die jeweiligen geschäftlichen Ziele jeder Marke anpasst.
Wir schlugen vor, die Systemarchitektur in separate Module oder Schichten zu unterteilen, wobei der
Kern der Lösung für gemeinsame Funktionen und Designs in Angular verbleiben sollte,
Microservice-Module hinzugefügt und separate npm-Pakete eingeführt werden sollten, um spezifische
Funktionen für ausgewählte Marken bereitzustellen. Für die Endkunden des Kunden würde dies eine
schnellere Produktentwicklung und Markteinführung neuer Produkte oder Dienstleistungen,
Skalierbarkeit, eine zügige Anpassung an sich verändernde Märkte sowie eine verbesserte Systemwartung
und Aktualisierbarkeit bedeuten. Der Kunde wiederum würde mehr Kunden gewinnen und die Bindung
bestehender Kunden stärken.
Itransition erstellte leicht nachvollziehbare Entwicklungsempfehlungen für den Aufbau einer
Architektur, die den Bedürfnissen, Zielen und Betriebsabläufen des Kunden am besten entspricht:
-
Definieren Sie klare Projektziele, Anforderungen und den Projektumfang und behalten Sie dabei nur
die notwendigen Architekturkomponenten und Module bei.
-
Verwenden Sie Entwurfsmuster und Best Practices der Softwareentwicklung, um sicherzustellen, dass
die Architektur gut durchdacht ist und den Branchenstandards entspricht.
-
Schaffung einer zentralen Quelle für architekturrelevante Dokumente, Stilrichtlinien,
Schritt-für-Schritt- Anleitungen zur Fehlerbehebung usw. sowie die fortlaufende Aktualisierung der
Architekturentwürfe, Komponenten und Schnittstellen- Dokumentation.
-
Führen Sie bei Bedarf Code-Reviews und Refactoring des neuen Systems durch, um die Codequalität zu
verbessern.
-
Setzen Sie automatisierte Tests und kontinuierliche Integration für neuen Code ein, um die Qualität
und Zuverlässigkeit der Architektur sicherzustellen und etwaige Probleme frühzeitig in der
Entwicklung zu erkennen und zu beheben.
Im Rahmen der Beratungsleistungen führte Itransition einige Entwicklungsaktivitäten durch, um zu
demonstrieren, wie unsere Vorschläge in der Praxis funktionieren. Itransition implementierte
npm-Pakete mit wiederverwendbaren Modulen, die von Grund auf neu entwickelt wurden, um die
Funktionalität einer ausgewählten Marke zu erweitern. Außerdem führten wir neue Vorgehensweisen ein,
um die Entwicklung zu optimieren, beispielsweise die Implementierung von CI/CD-Praktiken mit GitHub
Actions. Zudem haben wir Integrationen mit verschiedenen Zahlungssystemen implementiert, um den
Verkaufsprozess für Endkunden zu beschleunigen, und das Frontend des Kunden mithilfe eines
wiederverwendbaren Anwendungs-Frameworks strukturiert.
Darüber hinaus entwickelten unsere Entwickler einen neuen Ansatz zum Laden von Sales-Funnel-Parametern
in Endkunden-Apps, um diese zu beschleunigen, Fehler zu reduzieren und die Reaktionszeit der Apps zu
verbessern – und ersetzten damit Tausende von Zeilen Konfigurationscode, die bei jeder Anfrage geladen
wurden. Außerdem haben wir einen Server hinzugefügt, der Daten nur für die Marke lädt und
zwischenspeichert, die diese gerade nutzt. Indem wir sicherstellten, dass das System nicht mehr die
gesamte Konfiguration für alle Marken und Verkaufstrichter zurückgibt, haben wir diesen Engpass
beseitigt und ein stabiles System mit verteilten Anfragen geschaffen.
Nach Durchsicht der Systemdokumentation, Überwachung des Code-Ausführungsablaufs und Identifizierung
potenzieller Abhängigkeiten kam unser Team zu dem Schluss, dass der Legacy-Code des Systems das
Geschäftswachstum und die Flexibilität einschränkte, die Wartungskosten und das Fehlerrisiko erhöhte sowie
die Produktivität der Mitarbeiter minderte. Um den veralteten Code zu modernisieren, empfahlen wir, einige
Teile davon zu refaktorisieren und ausgewählte Module neu zu schreiben, um einen reibungslosen
Systembetrieb und eine einfache Wartung zu gewährleisten. Außerdem empfahlen wir die folgenden Best
Practices:
- Schreiben Sie schrittweise neuen Code für jede Systemkomponente
- Den Code umgestalten, um seine Lesbarkeit, Wartbarkeit und Leistung zu verbessern
-
Schreiben Sie Unit-Tests für kritische Funktionen, um sicherzustellen, dass Änderungen keine neuen
Fehler oder Regressionen verursachen, dass sich der Code wie erwartet verhält und das Risiko
unerwarteter Ausfälle verringert wird
-
Inkrementelle Änderungen an der Codebasis vornehmen, anstatt zu versuchen, sie komplett zu überarbeiten,
um versehentliche Probleme zu vermeiden und den Prozess überschaubarer zu gestalten
-
Änderungen dokumentieren, um zukünftige Entwicklungsarbeiten zu optimieren und es anderen Entwicklern zu
erleichtern, die Codebasis zu verstehen
Unsere Berater analysierten den technischen Stack des Kunden und identifizierten die folgenden
Verbesserungsmöglichkeiten:
-
Das in Java und Node.js geschriebene Backend wies eine komplizierte, unübersichtliche Struktur auf
- Das Frontend war in einer veralteten Version von Angular
- Das Ionic-UI-Toolkit wurde ineffizient eingesetzt
Die fragmentierte Frontend-Struktur, bestehend aus vielen separaten Anwendungen und veralteten
technischen Lösungen, schränkte Plattformverbesserungen und das weitere Geschäftswachstum des Kunden
ein.
Um dies zu beheben, schlugen wir Folgendes vor:
- Einbindung von Code-Node.js-Frameworks zur Systematisierung des Backends
-
Optimierung des Verkaufstrichters der Lösung, Anpassung der Pakete durch Hinzufügen von APIs und
Konfiguration des Salesforce TouchCR-Plugins
- Hinzufügen neuer Angular-Bibliotheken und ständige Aktualisierung des gesamten Tech-Stacks
-
Neuprogrammierung von Systemteilen, die Ionic verwenden, und deren Ersatz durch andere Bibliotheken
Unser Team schlug dem Kunden vor, den Split-Testing-Ansatz für Verkaufstrichter in Apps mit
unterschiedlichen Inhalten und auf Basis verschiedener Technologien wie Angular (SPA), WordPress und
reinem HTML anzuwenden. Die Testergebnisse könnten dann zur Entwicklung von Marketingstrategien genutzt
werden. Unsere QA-Spezialisten schlugen vor, Leistungs- und Funktionstests durchzuführen sowie den
gesamten neuen Code mit Unit-Tests abzudecken, und empfahlen dabei das folgende Toolset:
-
Jest für Unit-Tests, ausgewählt aufgrund seiner Einfachheit und Benutzerfreundlichkeit, der schnellen
Ausführung, integrierter Mocking- und Test-Doubles sowie Snapshot-Tests
-
BrowserStack für browserübergreifende Tests sowie Tests auf verschiedenen Geräten und
Betriebssystemversionen, ausgewählt aufgrund seiner umfangreichen Geräte- und Browserbibliothek sowie
seiner KI-gestützten Testfunktionen
-
Postman für REST-API-Tests, ausgewählt aufgrund seiner Funktionen für intuitive API-Entwicklung,
effizientes API-Debugging und -Testen sowie Teamzusammenarbeit
Um die Produktivität und die Zufriedenheit des Teams zu verbessern, musste der Kunde seine Projektabläufe
vereinfachen, die Projektrollen klar definieren und ein effektives Teammanagement etablieren.
Wir schlugen Kanban vor, da sich die Prioritäten des Kunden häufig änderten und es fast keine strengen
Fristen für neue Aufgaben gab. Innerhalb dieses Rahmens sollte die Produktvision von den wichtigsten
Stakeholdern auf Kundenseite und dem technischen Leiter des Marketings gemeinsam mit anderen
Geschäftsbereichen gestaltet werden. Sie würden zudem die Projekt-Roadmap und grundlegende Anforderungen
auf hoher Ebene festlegen sowie Tickets für die Entwicklung neuer Funktionen erstellen und priorisieren –
sowohl für interne als auch für externe Entwickler. In der Zwischenzeit erstellt das Entwicklerteam des
Kunden einen Ticket-Pool, priorisiert Aufgaben und setzt diese um. Die Entwickler werden dazu ermutigt,
Refinement-Sitzungen mit dem Kunden abzuhalten, neue Funktionen nach Fertigstellung vorzuführen und
vierteljährliche interne Retrospektiven durchzuführen. Projektmanager und technische Leiter sollten zudem
laufend Projekt-Health-Checks durchführen.
Um eine transparente und reibungslose Zusammenarbeit zu gewährleisten, schlugen wir die Einrichtung einer
Wissensdatenbank vor und entwickelten ein Framework, das eine Konzeptbibliothek und Kommunikationsabläufe
umfasst, um Missverständnisse zu vermeiden. Die Wissensdatenbank enthält Richtlinien zur Standardisierung
der Ticketerstellung und -bearbeitung, Schritt-für-Schritt- Anleitungen zu verschiedenen Aspekten des
Projektmanagements, Teambeschreibungen, Rollen- und Verantwortungsübersichten der Teammitglieder usw. Um
sicherzustellen, dass alle Teammitglieder auf dem gleichen Stand sind, haben unsere Business-Analysten
zudem eine gemeinsame Konzeptbibliothek erstellt, um neue Ideen zu beschreiben und die interne
Kommunikation zu synchronisieren. Die Prozesskarte dient als zentrale Informationsquelle, die aktualisiert
wird, wenn sich Teams, Aufgaben und Projektabläufe ändern. Darüber hinaus wird die Wissensdatenbank für
die Einarbeitung neuer Mitarbeiter genutzt.
Wir haben den Prozess der Generierung neuer Ideen zur Verbesserung von Backend- und Frontend-Funktionen
analysiert und festgestellt, dass er unter zwei Hauptproblemen litt.
Das erste war die ungleichmäßige Auslastung des Client-Entwicklungsteams, die die Planung erschwerte. Die
Entwickler waren während der Hauptverkaufszeiten und an Feiertagen überlastet, während sie in ruhigeren
Phasen untätig waren.
Ein weiteres Problem waren unklare Funktionsspezifikationen, die zu undefinierten Projektzielen und einer
komplizierten Aufgabenzuweisung führten. Zudem erhöhte die Vielzahl innovativer Ideen für die Entwicklung
neuer Funktionen von verschiedenen Stakeholdern die Notwendigkeit, die zur Entwicklung freigegebenen
Funktionen sorgfältig zu priorisieren.
Wir berieten den Kunden hinsichtlich eines effizienteren Ansatzes zur Entwicklung neuer Funktionen, der
auf Best Practices basiert, wie beispielsweise der WSJF-Priorisierung, einem strengen Protokoll für
Projektanforderungen und einer klaren Erfassung, Verfeinerung und Iteration von Funktionen nach der
Entwicklung sowie der anschließenden Überwachung, Wartung und dem Support. Unser Team schlug zudem
Strategien wie modulares Design, klare Dokumentation, standardisierte Programmierpraktiken, automatisierte
Tests, Versionskontrolle und Feedbackschleifen vor, um leicht wartbare neue Funktionen zu entwickeln.