Schwerpunkte

Hier finden Sie eine Übersicht über die Software-Themen mit denen ich mich hauptsächlich beschäftige.
Wie bei jedem Entwickler gibt es auch darüber hinaus auch noch einige kleinere Bereiche mit denen ich mich Beschäftige, wie z.B. IoT oder embedde SW.

Mobile


Ich entwerfe und entwickle mobile Business Anwendungen für die breit gefächerte Microsoft Landschaft auf der Universal Windows Platform (UWP).
Dies beinhaltet Endgeräte, wie z.B. Micrsoft Surface, Microsoft Hololens oder klassische Windows 10 Desktop Geräte.
Auch für Android habe ich mobile Anwendungen entwickelt. Teilweise als native Java-Anwendungen oder auch als Cross-Platform Xamarin-Anwendungen.
Endgeräte von Apple, wie z.B. iPad oder iPhone, kann man als WebApp mit CSS, HTML5, Javascrip, sowie Apache Cordova an, oder ebenfalls über das Xamarin-Framework ansprechen.
Auch bei Business Anwendungen kommt bei mir Design nicht zu kurz. Ich habe Erfahrung mit dem Entwurf von Wireframes, um möglichst schnell ein geeignetes Design zu entwickeln. Für die Entwicklung der Anwendungslogik setze ich auf testgetriebene Softwarentwicklung (TDD).

Web


Webanwendungen und Homepages entwickle ich entweder von Grund auf neu oder durch Anpassung eines Themas für ein Content-Management-System (CMS), wie z.B. WordPress.
Mit einer komplette Neuentwicklung spart man sich oft unnötigen Ballast und kann Design-Ideen freien Lauf lassen. Dies kann ich nur empfehlen, da dies Kosten reduziert und sowie die Bedürfnisse des Anwenders im Fokus hat.
Ich erstelle auch Anwendungen, wo man den kompletten Inhalt und die Form in bestimmten Grenzen selbstständig ändern kann. Dies erreiche ich durch verwendung eines etablierten CMS, wie z.B. WordPress oder Joomla. Dort hat man im Nachhinein die volle Flexibilität den Inhalt (Text, Bilder, Videos) frei zu gestalten.
Bei der Gestaltung einer Webseite setze ich auf Icon-Schriftarten, wie z.B. Font-Awesome, sowie auf etabilierte Frameworks, wie z.B. Twitter Bootstrap oder jQuery.
Besonders wichtig ist mir bei Web-Content auch die Barrierefreiheit, sowie die Anpassung der Oberfläche und des Inhalts an verschiedene Endgeräte (Responsive-Design).
Beim Einsatz von Datenbanken, greife ich gerne auf die frei verfügbare Datenbank MariaDB (Nachfolger von MySQL) oder auf den Microsoft SQL-Server zurück.

Backend


Mobile Anwendungen stellen für Gewöhnlich nur die Oberfläche eines komplexen Systems. Oft kommunizieren Apps oder Webanwendungen mit Backends, die die Datenverarbeitung vornehmen und die eigene Anwendungslogik umsetzen.
Mit meinen Erfahrungen in Spring-Boot, JavaEE, PHP, sowie Microsoft ASP.NET habe ich ein breites Portfolio, um Backends zu realisieren. Zur Bereitstellung der Anwendungen greife ich für gewöhnlich auf zuverlässige Cloud-Lösungen zurück, wie z.B. Microsoft Azure oder Heroku.
Damit bereiten Themen wie Hochverfügbarkeit, Skalierbarkeit, Monitoring, Performance- sowie Resourcenoptimierung keine Kopfschmerzen mehr.

Desktop


Obwohl es immer mehr mobile Endgeräte gibt, basieren viele Anwendungen nach wie vor auf klassischen Desktop-Technologien. Gerade für Business-Anwendungen, die nur innerhalb des eigenen Unternehmens betrieben werden, sind diese Anwendungen beliebt. Diese basieren meist auf einer gemeinsamen Datenstruktur in Form einer Datenbank (Rich-Client). Zur Umsetzung solcher klassischen Anwendungen greife ich auf Frameworks wie WPF und Entity Framework zurück. Auch wenn innerhalb eines Rich-Clients technologisch alles homogen ist, setze ich bei der Implementierung auf klare Struktur und Trennung von Zuständigkeiten, um die Wart- und Testbarkeit der Anwendung auch nach mehreren Weiterentwicklungen zu gewährleisten.
Oftmals sieht die Softwarearchitektur Plugin-Systeme, wie z.B. das Managed Extensibility Framework (MEF) vor, die es besonders einfach machen eine bestehende Anwendung dynamisch zu erweitern.

Operations / Automatisierung


Neben Entwurf, Design und Implementierung von Software gehört zu einer erfolgreichen Umsetzung auch eine stabile und und regelmäßige Bereitstellung der aktuellsten Anwendung.
Bei Webanwendungen wird dieses Thema noch komplexer, da Load-Balancing, Mehrsprachigkeit, Datenbank-Synchronisierung, Caching, sowie verschiedene Test-Umgebungen berücksichtigt werden müssen.
Durch Continious Integration (CI) Systemen, wie Jenkins, TeamCity oder durch Produkte aus der Atlassian Toolchain, kann sichergestellt werden, dass Anwendungen lange wartbar bleiben und sich der Pflegeaufwand in Grenzen hält.
Wiederkehrende Aufgaben automatisiere ich meist schnell durch Powershell- oder Bash-Skripte oder durch eine andere passende Scripting Sprache, sodass gerade das Ausliefern von Updates keinen Schmerz mehr versursacht.

Noch Fragen


Sie haben noch offene Fragen, stehen vor Technologie-Entscheidungen oder können mit dem ein oder anderen Begriff nichts anfangen?
Zögern Sie nicht mich zu kontaktieren. Auch über Feedback freue ich mich sehr.