Michael Engel

Software Engineer

Über mich

Mein Name ist Michael Engel und ich bin ein Software Engineer und engagierter Software-Craftsman aus München mit einer Leidenschaft für Clean Code, Automatisierung und Machine Learning (insbesondere im Bereich Computer Vision). Durch Projekte in den Branchen Automotive, Medien und E-Commerce habe ich mir ein breites Wissen über verschiedenste dort eingesetzte Technologien, Konzepte und Prozesse zur Softwareentwicklung aufgebaut.

Dabei liegt mein Fokus in meiner bisherigen Karriere auf der Backend-Entwicklung von verteilten Systemen, wie z.B. von Event-Driven Microservices. Ich habe ebenfalls Erfahrung in den Bereichen Frontend-Entwicklung (u.a. mit dem Micro Frontend Pattern), DevOps, Testautomatisierung und Machine Learning. Eine agile Denkweise sowie Best Practices habe ich mir bei der Arbeit in verschiedenen Scrum-Teams sowie dem für größere Projekte ausgelegten Nexus-Framework angeeignet und verinnerlicht.

Projekte

Eine Library zum AspektOrientierem Programmieren (AOP) in Typescript

ts-aspect ist eine Programmbibliothek zum Definieren und Verwenden von Aspekten, welche zur Kapselung sogenannter Cross-Cutting Concerns, wie z.B. Logging, verwendet werden können. Das wiederum ermöglicht besser wartbaren und wiederverwendbaren Code zu schreiben.

Ein Ziel des Open Source Projektes ist es, eine möglichst einfach zu benutzende und gleichzeitig flexible API für das aspektorientierte Programmieren in TypeScript zur Verfügung zu stellen - ohne zusätzliche Dependencies. ts-aspect kann zusammen mit Frameworks wie beispielsweise NestJS verwendet werden (siehe hier).

TypeScript AOP Cross-Cutting Concern Clean Code

Eine Programmbibliothek zum empfangen und senden von Nachrichten mit Amazons Simple Queuing Service (SQS)

go-sqs baut auf dem AWS SDK für Go auf und stellt einen einfach zu verwendenden Listener und Producer für SQS-Nachrichten zur Verfügung. Für das Empfangen von Nachrichten wird eine error-basierte Routine genutzt. Diese ermöglicht das Definieren von individueller Logik zur Verarbeitung von SQS-Nachrichten, kümmert sich um evlt. auftretende panics und löscht die Nachricht bei erfolgreicher Bearbeitung von der Queue.

Derzeit arbeite ich an einer Sidecar-Implementierung, welche über eine REST-API die Funktionalität von go-sqs bereitstellt und so in Applikationen unabhängig der dort verwendeten Programmiersprache oder Frameworks integriert werden kann.

GoLang AWS SQS Separation of Concerns Sidecar

Berufliche Erfahrung

Red Hat

Software Engineer

Mai 2022 - heute

Derzeit arbeite ich bei Red Hat als Software Engineer.

Netlight Consulting

IT-Consultant

Januar 2019 - April 2022

Bei Netlight als hands-on IT-Berater hatte ich die Chance verschiedenste Branchen und Unternehmen sowie deren Kultur, Struktur und dort eingesetzte Technologien kennen zu lernen. Ebenso bot mir Netlight die Möglickeit mich immer wieder in neuen Rollen auszuprobieren sowie mich persönlich weiterentwickeln zu können. So war es mir möglich vielseitige Erfahrungen zu sammeln - angefangen bei der Implementierung von JavaFX Fat Clients in einem kleinen Team nach Kanban bis hin zur Entwicklung komplexer Event-Driven Microservices mit GoLang und NestJS sowie Micro-Frontends mit React in bis zu 6 Scrum-Teams, welche nach dem Nexus-Framework organisiert wurden.

Ausbildung

Hochschule München

Master of Science, Informatik mit Schwerpunkt Software-Engineering

2016 - 2019

Nach erfolgreich abgeschlossenem Bachelorstudium wollte ich mich weiter im Bereich Software-Engineering spezialisieren. Dabei habe ich nicht nur tieferes Wissen über verteilte Systeme erlangt, sondern auch erste Erfahrungen bei der Mitarbeit an Open Source Projekten (siehe PR320 at jenkinsci/acceptance-test-harness) sammeln können. Ebenso habe ich während des Masterstudiums meine Leidenschaft für Machine Learning und Deep Learning entdeckt. Neben dem Studium arbeitete ich als Werkstudent bei einem IT-Consulting Unternehmen und sammelte so Erfahrung in der agilen Projektarbeit und JavaEE.


Evaluierung von Machine Learning Verfahren für den Einsatz in einem Testautomatisierungs-Framework für Infotainmentsysteme in Fahrzeugen

Für meine Masterarbeit habe ich verschiedene Verfahren zur Object Detection hinsichtlich deren Anwendbarkeit in einem Testautomatisierungs-Framework untersucht. Ich entwickelte zunächst ein Programm zur automatisierten Generierung von gelabelten Trainingsdaten, da vorallem dieser Arbeitsschritt sehr zeitintensiv ist. Danach implementierte ich das Template Matching als klassisches Verfahren mit Python und scikit, ein Machine Learning Modell auf Basis von HOG-Features mit scikit-learn und das Deep Learning Modell Faster R-CNN mit TensorFlow. Zur Evaluierung der unterschiedlichen Verfahren nutzte ich u.a. die sogenannte Intersection over Union als Metrik. In einem finalen Proof Of Concept habe ich das bestehende Framework um die Funktion der Object Detection erweitert sowie eine Pipeline zum automatisierten Antrainieren weiterer Modelle umgesetzt.

Machine Learning Computer Vision Object Detection Automation Model Evaluation Python scikit-learn Tensorflow

Hochschule Trier

Bachelor of Science, Informatik

2013 - 2016

Gegen Ende meiner Ausbildung als Fachinformatiker fasste ich den Entschluss ein Studium der Informatik zu beginnen. Hier lernte ich viel über Themen wie Datenstrukturen, Algorithmendesign und -analyse sowie Methodiken zur Problemlösung und Projektmanagement.

In einer Projektarbeit an der Hochschule haben zwei weitere Studenten und ich ein webbasiertes Review-System mit dem Python-Framework Flask und MySQL umgesetzt, welches dann für die Unterstützung einer Veranstaltung an der Hochschule genutzt wurde. Neben dem Studium arbeitete ich als Werkstudent bei einem Hersteller für Kassen- und bargeldlose Abrechnungssysteme und implementierte neue Features mit Object Pascal.


Studie zum Redesign der OpenDXM GlobalX Benutzeroberfläche zur Verbesserung der Usability

Für meine Bachelorarbeit habe ich die Managed File Transfer Anwendung OpenDXM GlobalX hinsichtlich deren Usability untersucht. Zunächst führte ich eine Eyetracking-Studie durch, um aktuell bestehende Usability-Probleme zu erkennen. Die dadurch gewonnenen Erkenntnisse sowie die Android Design Prinzipien nutzte ich bei der Erstellung eines neuen Designs. Hierfür implementierte ich einen interaktiven Prototypen mit HTML5, JavaScript und CSS.

User Experience Research Eyetracking Rapid Prototyping HTML5 JavaScript CSS

F.S. Fehrer Automotive GmbH

Ausbildung zum Fachinformatiker - Anwendungsentwicklung

2010 - 2013

Während meiner Ausbildung habe ich am hausinternen, multilingualen Enterprise Resource Planning System in einem kleinen Team von Entwicklern mitgearbeitet. Das ERP-System nutzte MSSQL zur Persistierung und wurde in der Programmiersprache Object Pascal in einem prozeduralem Stil geschrieben, wobei Delphi als IDE verwendet wurde. Als erste objektorientierte Sprache lernte ich C# in der Berufsschule und in meiner Freizeit C++. Die automatisierte Generierung verschiedenster Auswertungen sowie zugehöriger Visualisierungen mit VBA für verschiedene Fachabteilungen gehörte ebenfalls zu meinen Aufgaben.

In meiner Abschlussarbeit erweiterte ich das hausinterne ERP-System um ein Kalkulationsmodul. Dies umfasste sowohl die Anforderungsanalyse, Planung, Umsetzung und das Testen. Das neue Modul ermöglichte die Nachkalkulation des Bewertungspreises verschiedener Produkte.

ERP Object Pascal Delphi MSSQL Stored Procedure VBA C# C++