Meine Ausbildung bei synyx – Teil 2

(Fortsetzung meines Blogposts von letztem Jahr)

Das dritte Jahr meiner Ausbildung bei synyx spielte sich zum Großteil in der Abteilung Code Clinic ab, in der ich etliche neue Technologien und Frameworks kennengelernt und eingesetzt habe.

Rückblick

Bei meinen bisherigen Projekten war es so, dass man den Code zu einem guten Teil kannte, weil man an vielen Stellen davon selbst mitentwickelt hat. Die Technologien waren auch oftmals bekannt, und wenn nicht, hatte man sich kurz bei Kollegen erkundigt, was für das Problem passt, oder aus eigener Erfahrung ein passendes Framework ausgesucht und es eingesetzt. Die Anwendungen liefen meist auf nur einem Server, auf dem auch die Datenbank war, oder mit externem Datenbankserver, was aber kaum Mehraufwand beim Planen und Umsetzen bedeutet. Fachwissen benötigte man nur wenig für die Umsetzung der Anwendungen und was man davon benötigte, das hatte man schnell abgeklärt.

Willkommen in der Enterprise Welt!

Nicht so in der Code Clinic.
Hier galt es sich erst einmal in ein sehr großes Projekt mit einiger alten Technik einzuarbeiten, um darin Änderungen vorzunehmen. Danach teilweise aber auch größere Teile dieses Projektes Stück für Stück mit neuer Technologie und besserem Code  zu ersetzen, damit diese auf die Dauer besser wartbar wird und zuverlässiger und performanter arbeitet. Alles auf einmal zu ersetzen war hierbei keine Option, da dies viel zu lange dauern würde und einige Stellen dringender waren, als andere. Dabei war ein sehr ins Gewicht fallender Unterschied zu allen bisherigen Projekten der große Anteil der Analyse und Planung am Gesamtaufwand. Man muss sich zuerst einmal in den alten Code einarbeiten, verstehen, was darin gemacht wird, Analysieren, von wo dieser Code in welcher Form verwendet wird, usw. bevor man damit anfängt, sich zu überlegen, wie man das besser machen kann, welche Technologien man dafür einsetzt und auch sicherstellt, dass dies auch im eingesetzten Projektumfeld funktioniert. Auch wird einiges an fachlichem Wissen für das Entwickeln benötigt. Man kann nicht einfach alles aus dem alten Code herauslesen, sonst implementiert man es nur nach, und nicht neu. Daher muss man auch viel mit Kunden kommunizieren, in Erfahrung bringen, wie genau etwas funktionierten soll, was für eine Aufgabe es erfüllen muss und mit welchen Ausnahmefällen eventuell zu rechnen ist. Hinzu kommt, dass die Anwendung auf mehreren Standorten läuft. In unterschiedlichen Versionen und jeweils mit besonderen Anpassungen. Auch hier liegt es an uns, dies zu verbessern.
Alles in Allem ist die Arbeit hier oftmals stressiger und anstrengender als vorher, aber ich konnte viel lernen (vor allem den Umgang mit Kunden) und einige neue Technologien einsetzen. So wird zum Beispiel eine Oracle Datenbank genutzt, die doch schon ein wenig anders funktioniert, als die bisher gewohnten MySQL oder PostgreSQL Datenbanken. Auf der Oracle Datanbank durfte ich zum Beispiel mit RMI und JMS experimentieren, damit man die Businesslogik, die bisher teilweise direkt in der Datenbank mit Triggern und Prozeduren realisiert war, langsam im Java Code auslagern konnte. Außerdem wollen wir die bisher große Anwendung bei der Neuimplementierung  in mehrere kleinere Anwendungen aufgeteilt, die auf mehreren Servern verteilt laufen und damit besser skalierbar sind. Diese können zum Beispiel über eine JMS queues miteinander kommunizieren und sich über RMI Java Klassen und Services zur Verfügung stellen. Dann war ich noch bei einer Evalualisierung von Reporting- und Dokumenterzeugungs- engines beteiligt, da die bisherige ersetzt werden sollte. Mögliche Kandidaten waren hier Birt, JasperReports und Crystal Reports, wobei wir uns am Ende für Birt entschieden haben. Außerden haben wir für die neue Oberfläche auf Wicket gesetzt, das einem, wenn man sich erst einmal darin eingearbeitet hat, eine Menge Arbeit mit Javascript/Ajax abnimmt. Da die Anwendung auch an unterschiedlichen Standorten läuft und man das Datenbankschema auf dem richtigen Stand haben will, wenn man die Anwendung deployed, setzten wir hierfür Liquibase ein, das diese Arbeit für uns erleichtert und die Änderungen automatisiert vornehmen kann.

Abschlussprojekt

Ab und an war ich jedoch auch in anderen Projekten, wie zum Beispiel meinem Abschlussprojekt.
Hierbei ging es darum, eine Android-App für unser firmeninternes CRM-System, in dem wir Mitarbeiter- und Kundendaten verwalten, zu schreiben, damit man auch unterwegs jederzeit auf solche Daten zugreifen kann, auch wenn mal kein Internet zur Verfügung steht. Ich bekam eine REST-Schnittstelle gestellt, gegen die ich die Suchanfragen schicken konnte und die App wurde ganz mir überlassen.Die App besteht aus einem Login, der die Daten gegen den CRM-Server authentifiziert, einer Online und einer Offline-Suche (Daten werden in einer SQLite DB vorgehalten und bei Online Suchen gespeichert), einer Listenansicht mit Paging und einer Detailansicht aus der man Email-App und Telefon-App direkt aufrufen kann.

Zeitlich hat das Projekt sehr gut geklappt und vor der Präsentation bei der IHK konnte ich 2 mal in der Firma präsentieren und bekam Feedback, was ich denn noch besser machen könnte. So lief dann auch die Präsentation vor den Prüfern super. Die Prüfer waren jedoch recht überrascht, dass man mittlerweile auch mit dem Smartphone präsentieren kann (HDMI-Ausgang ftw! 😀 ) und die Katzen auf den Präsentationsfolien waren auch ein Erfolg. Allein die Dokumentation wurde nicht sooo gut bewertet, die Gründe dafür sind mir jedoch noch nicht bekannt. Erstmal einen Termin zur Einsicht vereinbaren, usw… Bürokratie >.>

Bestanden habe ich aber natürlich und bin seitdem als Junior Developer bei synyx angestellt!