Konzeption und Entwicklung eines internen Core Service zur Speicherung dynamisch definierter Objekt- und Asset-Daten. Der Service ist flexibel gestaltet, um Asset-Definitionen für verschiedene Anwendungsfälle und Anforderungen zu ermöglichen und erlaubt die Modellierung vielfältiger flexibler Beziehungen. Dies wurde auf Basis einer Graphdatenbank aufgebaut. Dieses hat ein älteres, weniger flexibles System abgelöst. Das Service war eine Haupt-Dependency dutzender anderer Services und musste unter laufendem Betrieb mit minimaler Downtime ausgetauscht wurde, was eine große Herausforderung darstellte, aber schlussendlich ohne Probleme gelöst werden konnte.
Zusätzlich wurde ein Wissensspeicher-Service als Add-on entwickelt, der das Sammeln und Verknüpfen verschiedener Probleme, Ursachen und Lösungen ermöglicht und schnelle, einfache Abfragen durch anspruchsvolle Such- und Bewertungsalgorithmen sowie KI-gestützte Abfragen inklusive einer Integration in einen Chatbot bietet.
Verantwortlichkeiten: Ich war die hauptverantwortliche technische Person, die die Architektur konzipierte, die notwendige Recherche und den Vergleich von Abhängigkeiten durchführte sowie die APIs und allgemeinen Ansätze entwarf. Hauptverantwortlich für die Implementierung und Leitung eines 3-köpfigen Teams, wobei ich Best Practices bezüglich Clean Code, Wartbarkeit, Stabilität und Erweiterbarkeit sicherstellte sowie eine möglichst einfache Übernahme durch andere Teams durch Pflege einer aktuellen Dokumentation gewährleistete, die andere App-Teams dazu inspirierte, ähnliche Praktiken zu übernehmen.
Migration und Anpassung des bestehenden Technologie-Stacks zu einer hybriden Cloud-Plattform. Dies umfasste die Implementierung umfassender DevOps-Praktiken, GitLab CI/CD-Pipelines, Kubernetes-Orchestrierung und Monitoring-Lösungen. Entwicklung neuer Anwendungen und Microservices. Anpassungen und Erweiterungen bestehender Anwendungen, Systemintegrationen sowie Einrichtung und Betrieb verteilter Systeme. Betrieb und Überwachung eines stacks von über 150 verschiedenen services in unterschiedlichen on-prem Umgebungen. Umsetzung und Sicherstellung von Best Practices übergreifend über verschiedene Teams.
Beratung zur Entwicklung von Tourplanungsanwendungen mit Fokus auf algorithmische Ansätze und häufige Implementierungsherausforderungen.
Verantwortlichkeiten: Bereitstellung von Fachberatung zur Entwicklung von Tourplanungsanwendungen mit Fokus auf algorithmische Ansätze und Implementierungsherausforderungen. Ich habe den Workshop konzipiert und durchgeführt.
Entwicklung einer App für Smartphone inklusive peer-to-peer Video-Telefonie und Lernspiele für Kinder.
Verantwortlichkeiten: Ich war der technische Lead hier, setzte das Projekt auf, baute den Proof of Concept (android app / azure backend), machte das Requirements Engineering und bestimmte die Architektur.
Entwicklung eines Web-basierten Tools für die Erstellung, Annotation und Bearbeitung von Karten für autonome Fahrzeuge im globalen Maßstab. Das Tool basiert auf einer cloud-native Architektur in AWS und einem SPA Frontend, geschrieben in ReactJS.
Verantwortlichkeiten: Als Lead-Entwickler arbeitete ich eng mit dem Kunden zusammen und die technische Umsetzung der gegebenen Problemstellungen herauszuarbeiten. Ich habe das Grund-Gerüst und den ersten Proof of Concept für das spätere Tool als gemeinsame Grundlage erstellt. Ich entwarf die cloud native Architektur für das Backend, welches in der Lage war die schieren Mengen and Daten für das Kartenmaterial zu verarbeiten und zu hosten. Hier war ich auch maßgeblich für die Implementierung zuständig und habe auch viele Performance- und Stabilitäts-Verbesserungen eingepflegt. Ich habe die meisten Code-Reviews im Frontend gemacht und neue Design-Patterns eingeführt oder den Code refactored, um die Code-Qualität zu verbessern und eine gute Wartbarkeit zu gewährleisten.
Rebase Consulting Markenbuch und Website-Design und -Entwicklung
Verantwortlichkeiten: Neu- und Weiterentwicklung von zusätzlichen Elementen der Website. Aufräumen und Refactoring der Code-Basis.
Interne Developer Community. Es ging um Team-Building, Kommunikation und Austausch auch über die Projekt-Gruppen hinaus. Weiters entstand hieraus eine gemeinsame Plattform für interne Projekte und Bibliotheken.
Verantwortlichkeiten: Ich initiierte die Developer Community und organisierte und moderierte deren Treffen. Die Plattform, die daraus entstand, setzte ich auf und gab Rahmenbedingungen vor.
Eine Individual-Software für die Magistrate der Stadt Wien. Hier wurden Verfahren erstellt, verwaltet und durchgeführt. Ein Hauptaugenmerk lag auf der Bescheid-Erstellung. Die Plattform war sehr generisch gebaut und erweiterbar für die Bedürfnisse weiterer Magistrate. Weiters war sie verbunden und arbeitete nahtlos mit anderen Systemen wie dem internen Geo-Informations-Dienst, dem CMS, dem Buchungssystem und weiteren zusammen.
Verantwortlichkeiten: Hier hatte ich eine Mischrolle. Ich war technischer Architekt und Lead Developer in einem. Ich war verantwortlich für die technische Architektur, die Auswahl der verwendeten Technologien und wie das Projekt technisch aufgesetzt und schlussendlich auch deployed wurde (DevOps). Weiters setzte ich das Projekt technisch auf, gab den Rahmen vor, unterstützte ich die anderen Entwickler mit Expertise, führte insbesondere die junioren Entwickler in die Technologien ein, führte Code Reviews durch und behielt den Überblick über die gesamte Code-Basis. Schlussendlich arbeitete ich eng mit dem Projekt-Manager und dem Test-Manager zusammen und war deren Vertretung. Das Team bestand aus 15 Mitgliedern, 11 davon waren Entwickler.
Ein generisches Tool für die Erstellung, Verwaltung und den Vergleich von verschiedenen Optimierungs-Szenarien. Es wurde so entworfen, dass es für verschiedene Optimierungs-Anwendungen verwendet werden konnte.
Verantwortlichkeiten: Ich war verantwortlich für das Design und die Umsetzung dieses Tools. Weiters unterstützte und coachte ich zwei juniore Software-Entwickler.
Optimierungs-Service für die Optimierung von Routen innerhalb vieler gegebener Rahmenbedingungen. Das Tool wurde sowohl als unabhängiges Microservice, als auch als Plugin für Transport-Management-Systeme (Tourenoptimierung der Transporter) und Lager-Management-Systeme (Wegeoptimierung im Lager) verwendet.
Verantwortlichkeiten: Ich war verantwortlich für das Anforderungsmanagement, das Design und die Umsetzung dieses Tools. Weiters unterstützte und coachte ich eine juniore Software-Entwicklerin.
Ein Algorithmus welcher die durchschnittliche Wartezeit für Patienten von MedAustron optimiert. Das MedAustron ist eine medizinische Einrichtung zur Behandlung von Krebspatienten mit Hilfe von Teilchenbeschleunigern. Die Optimierung wurde verwendet um die Wartezeit bei Eintritt unerwarteter Ereignisse zu verringern.
Verantwortlichkeiten: Dies war ein Teil eines größeren Optimierungs-Projektes für das MedAustron. Für diesen Teil war ich alleinverantworlich und entwickelte die Applikation selbstständig. Ich entwarf und optimierte den Optimierungs-Algorithmus selbstständig, da dies Teil meiner Master-Arbeit war.
Ein Optimierungs-Tool für die Berechnung und Optimierung von Markt-Eintrittsdaten für neue Produkt-Serien (Autos). Hier wurden unter anderem die benötigten Produkte, die Produktionskapazitäten und Lieferzeiten berücksichtigt.
Verantwortlichkeiten: Umsetzung von neuen Anforderungen, Ansichten, Fehlerbehebungen und Wartung.
Ein graphisches, interaktives, 3D Visualisierungs-Tool für die Anzeige von Pack-Bildern. Diese entstanden als Lösungen von optimalen Packbild-Berechnungen diverser Container (Paletten, LKWs, Roll-Container, etc.). Die Anzeige wurde ursprünglich für die interne Validierung der Lösungen verwendet, wurde jedoch bald auch in diverse Kunden-Projekte und deren Software-Lösungen integriert.
Verantwortlichkeiten: Ich war alleinverantworlich für das Design und die Umsetzung dieses Tools.
Eine graphische Benutzeroberfläche für das Erstellen und Verwalten von verschiedenen Optimierungs-Szenarien. Nach der erfolgreichen Berechnung konnte der Benutzer die Touren der Fahrzeugflotte entweder auf der Karte oder als Gantt-Ansichten darstellen lassen.
Verantwortlichkeiten: Fügte neue Ansichten und Funktionalitäten hinzu. Der größte Part war eine komplexe Gantt-Ansicht der Transporter und derer Kapazitäten. The Benutzer konnte die Reihenfolge der Stops ändern und das Programm die Route neu berechnen lassen.