Homepage Carsten von Olnhausen Grafik Gelb
Entwicklung
Arbeitsbereiche
Private Projekte
Erfahrung
Arbeitsplatz

Arbeitsbereiche/Aufgabengebiet ab 2009 der Tätigkeit von Carsten von Olnhausen


2009 eine Herausforderung: eine sehr umfangreiche mächtige Web-Anwendung umsetzen:


2009 bin ich in ein Projekt eingebunden worden, dessen Zielsetzung - eine reine ASP.net Anwendung - mit für mich erst mal eine unglaublichen Anforderungen war. Basis war eine wohl recht rund laufende über die Jahre entwickelte Personaleinsatzplanungssoftware. Das Produkt war nicht schlecht, aber eben nicht mehr ganz optimal für die aktuellsten Anforderungen in diesem Bereich. Die Erkenntnisse der vergangenen Jahre erforderten einfach einen neuen Ansatz.

ein Leitstand der über 20.000 Werte visualisieren sollte:


Zentrales Thema ist bei einer solchen Anwendung eine Art Leitstand. Die unglaubliche Menge von schnell mal mehr als 20.000 Daten die zur Aufbereitung erforderlich sind, kann selbst heute noch die modernste Technik überfordern. Eine echte Herausforderung die ich im Bereich der Web-Oberfläche und meine Kollegen auf der Datenbank bzw. Business Logik Seite umsetzen konnten. Wie so häufig ein Thema von Versuch und Irrtum. Man beginnt natürlich erst mal mit einem kleinen überschaubaren Mengengerüst. Die Praxis erforderte dann aber doch schnell Mitarbeiter Anzahlen, die die Server in die Knie zwangen. Auch hier war es mir dann möglich durch verschiedene Techniken, bis zum Multitasking den Leitstand in mehreren parallel laufenden Threads erheblich zu beschleunigen. Weitere Entwicklungen zwangen mich damals dazu die Business Logik dahinter noch einmal auf den Prüfstand zu stellen. Es stellte sich heraus, dass es da ein paar Methoden gab, die bei einem kleinen Mengengerüst recht passabel arbeiteten, allerdings bei erheblich größeren Datenmengen zu unglaublichen Laufzeiten führten. Hier ist es mir gelungen, durch eine andere Herangehensweise die Laufzeiten um bis zu 500 % zu reduzieren. Durch diese Verbesserung konnte man sogar wieder auf das Multitasking verzichten. Somit konnte dieses Projekt sehr erfolgreich umgesetzt werden.

Standard Controls hoffnungslos überfordert:


Das bei einer solchen Anforderung mit den normalen Controls sprich z.B. Datagrids kein Krieg zu gewinnen ist, sollte jedem klar sein. Ein Grid mit 98 Spalten und 200 Zeilen führt zu einem dermaßen heftigen Monster HTML Code der vom Server zum Client übertragen werden muss, dass bei einer solchen Herangehensweise eine solche Anwendung im Browser zwangsweise zu inakzeptablen Antwortzeiten führt. Daher wurden von mir spezielle Techniken und Controls entwickelt, die diese Datenmenge performant und elegant bewältigen konnten. Ich bin heute noch ganz begeistert, wie gut die Umsetzung und Bewältigung dieser Aufgabe gelungen ist. Bei weitem ist hier noch kein Ende abzusehen, Potenzial ohne Ende steckt da immer noch drin.

Stammdaten Masken ohne Ende:


Dass der Rest der Anwendung durch die große Menge der Stammdaten ebenfalls eine Herausforderung darstellte, kann man sich gut vorstellen. Der Ansatz, hier muss alles in eine Web-Anwendung gepackt werden die nachher auch einfach und effektiv vom Benutzer verwendet werden kann, erforderte ein klares Konzept. Hier ist es mir unter anderem durch Überarbeitung meines vorhanden .net Code Generators gelungen, sehr schnell die Basis Vorlagen für die ASP.net Web-Seiten zu erzeugen. Ich programmierte mir in meiner Freizeit ein Modul das die edmx Datei des Enitiy Frameworks eingelesen hat und mir somit die Properties der Objekte direkt zur Verfügung stellt. Somit konnte ich die Strukturen und Objekte recht einfach in der vorhandenen Technologie des Code Generators abbilden. Da sämtliche Stammdaten Seiten ähnlich bis gleich aufgebaut wurden, war es keine große Aktion den eigentlich Forms basierenden Code Generator so zu erweitern, dass fertig laufende ASPX Pages und ASCX Controls erzeugt wurden. Klar, waren diese noch optisch nachzubearbeiten, aber einbinden, übersetzen, Seitenaufruf implementieren und die Daten konnten eingegeben, geändert und gespeichert werden. Somit waren sehr schnell fertige Eingabemasken erzeugt.

Oberflächen Strukturen:


Ein paar nette Techniken ermöglichten ein einfaches und universelles Verhalten, das für alle Seiten fast automatisch die Benutzerhinweise oder Fehlermeldungen erzeugte. Die Business Logik und die Versorgungslogik der Web-Seiten ist ein hervorragendes Ergebnis. Keine Frage, ein ganz klares Ergebnis der Team Arbeit unseres kleinen aber feinen Entwicklerteams.

Ehre wem Ehre gebührt, Kollegen die man sich nur wünschen kann:


Mein Kollege, der Vater der Entity Datenbank Module bzw. der Konstrukteur der Business Logik ist ein unglaublich guter Technologe, welcher mit großer Weitsicht und hervorragendem fachlichen Wissen hier die Grundlagen geschaffen hat. Ich kann nur sagen, es war eine Ehre mit ihm zusammen gearbeitet zu haben. Leider hatte er sich letztes Jahr eine Auszeit genommen und für ein Jahr Asien mit dem Rucksack bereist. Ein herber Verlust für das Team, aber Hut ab, den Mut hätte ich nicht alleine mit Rucksack Asien zu bereisen. Auf der anderen Seite hatte ich so die Gelegenheit doch erheblich mehr im Bereich der Business Logik selbst umzusetzen. Zu meinem Glück hatten wir damals einen jungen sehr guten Kollegen als Ersatz ins Team bekommen. Ohne meinen anderen Kollegen der heute den kompletten Entity Datenbank "Kram" abdeckt, hätte ich ein echtes Problem bekommen. Dieser Kollege führt äußert erfolgreich die gemeinsamen Arbeiten fort, welcher er und unser Reisender begonnen hatten. Dieser wird bald wieder aus Asien auftauchen, ich würde mich verdammt freuen wenn man noch einmal zusammen arbeiten könnte. Ich habe verdammt viel von ihm gelernt. Nichts Besseres egal wie lange man etwas macht, wie Kollegen zu haben, von denen man noch etwas lernen kann.

Leidenschaften die einen nicht los lassen:


Mein Steckenpferd bei der ganzen Sache, hatte ich Ende 2009 als Freizeit Projekt begonnen. Die Sahne Haube eines solchen Systems ist die automatische Verplanung. In den Jahren 2001 - 2003 war ich im vorherigen Job schon mal an einer ähnlichen reizvollen Aufgabe beteiligt. Damals allerdings noch mit anderen Techniken und erheblich langsameren Rechnern. Im guten alten C++ würfelten wir damals Steine zusammen, die aus Vollblöcken zu sägen waren. Ich kam damals zu diesem Team als die rechteckigen Stein schon verplant werden konnten. Also ein großer Teil des Verfahrens war schon produktiv am arbeiten. Meine ersten Aufgaben damals bestanden darin mich um die Steine mit Schrägen zu kümmern. Eine wahre Mammut Aufgabe, die mit viel Mathematik allerdings zu stemmen war, heute noch Danke an meinen Mathematiker Kollegen und unseren Chef, die mir erst mal die notwendigen Kniffe beigebracht haben. Auch hatte ich die dort die Gelegenheit ein 3D System zu entwerfen, das einem die Muster vor Augen führte. Im weiteren Verlauf der Entwicklung als wir dann große reale Lose untersuchten, ein unabdingbares Werkzeug.

Automatische Verplanung, ich kann es einfach nicht lassen:


Wie man wohl verstehen kann, konnte ich mich 2009 im aktuellen Job dem Reiz nicht entziehen, hier selbst eine Implementierung der Planung zu schaffen, die zumindest für den Anfang mal eine Lösung darstellen würde. Unser Terminplan war einfach zu voll mit den elementaren Grundzügen der Anwendung um dieses Projekt schon anzugehen. Mit den Kenntnissen der Business Logik, den Stammdaten und den Zusammenhängen aller Daten hatte ich einfach gute Voraussetzungen hier direkt einen Lösungsversuch zu wagen. Unterm Strich, es ist mir gelungen. Der erste Ansatz war zumindest so gut, dass er, als ich es dem Team zeigte, schon mal begeisterte. Klar, bei weitem nicht fertig und schon gar nicht hatte ich alle Feinheiten berücksichtigt die so ein Werkzeug berücksichtigen muss.

Automatische Verplanung, die II-te:


Der Dienst ist aber heute ein wichtiger Bestandteil der Anwendung. Große Anforderungen wie z.B. 200 Mitarbeiter über eine Woche zu verplanen, ist einfach von Hand nicht wirklich machbar. Es ist noch manche lange Nacht drauf gegangen bis die Vorstellungen von mir, meiner Kollegen und meinen Chefs umgesetzt waren. Eine imposante Aufgabe, die mit fast jedem Kunden neue Anforderungen stellt. Auch sind die konkurrierenden Ziele immer wieder eine Aufgabenstellung die es zu lösen gilt. Noch lange sind nicht alle weiteren Anforderungen umgesetzt, aber das macht eben den Reiz von Projekten aus, die lange laufen. Hier ist man einfach gefragt, vorausschauend zu codieren, um bei weiteren Funktionen nicht wieder alles wegwerfen zu müssen.

Automatische Verplanung, Objektorientierung nette Seiteneffekte:


Ein sehr angenehmer Nebeneffekt, die Planung verwendet die Basis Business Logik welcher auch der oben beschriebene Leitstand einsetzt. Ein Dienst hat zwar nicht dieselben Anforderungen wie eine Web-Anwendung, doch es ist einfach so, dass ich aus einer Zeit komme, in der die Laufzeit der Anwendungen nicht durch einfach schnellere Maschinen verkürzt werden konnte. Ich habe schon immer den Anspruch schlanken schnellen Code zu entwickeln. Wohl ein Vermächtnis aus der Zeit der C++ Stein Planung. Laufzeiten die ich für den Planungsdienst optimieren konnte, kamen somit immer wieder der Geschwindigkeit des Leitstandes zugute. Was natürlich ein mehr als angenehmer Nebeneffekt war.

Ein Dream Team:


Unterm Strich kann ich über die vergangenen Jahre nur eines sagen, vieles mehr, als das hier im Ansatz beschriebene, wurde erfolgreich umgesetzt. Keine Frage, so was kann nur ein eingespieltes Team aus guten Mitarbeitern hin bekommen. Eines der besten und erfolgreichsten Teams in denen ich bisher gearbeitet habe. Was eine der wichtigsten Erfahrungen in diesem Team war, ist, und immer bleiben wird: Fehler werden gemacht, von jedem zu jeder Zeit, warum auch immer. Was zählt ist nur eines, egal warum, von wem ein Fehler gemacht wurde oder wann ein Fehler entstanden ist. Findet man einen Fehler, ist das absolute Ziel diesen schnell zu beheben und keine Zeit mit der Suche nach dem Schuldigen oder den schuldigen Umständen zu vergeuden. Eine Erfahrung die ich in anderen Teams leider häufig gemacht habe, immer wieder habe ich Kollegen erlebt, die auf Kosten anderer sich in den Vordergrund spielen wollten. Eine trauriges Verhalten, ein Verhalten das ein Team untergräbt und für Misstrauen und Demotivation sorgt. Aber ein gutes Erlebnis in einem Team zu arbeiten, wo so etwas keiner nötig hat, wo der gemeinsame Erfolg zählt. Klar hat auch ein jeder seine persönlichen Erfolge, die werden aber nicht geschmälert wenn man die Leistung der Kollegen schätzt, anerkennt und als gemeinsamem Team Erfolg erlebt.

Mit dem Team wurde schon vieles erreicht, aber zu meinem Ziel:
Kreativ qualitativ hochwertige Software schaffen, die den Benutzer begeistert.
Fehlt hier leider immer noch ein erhebliches Stück. Man wird sehen was in der Zukunft noch realisierbar und umsetzbar sein wird.
Eine Software wird erst dann fertig sein, wenn die Benutzer begeistert sind und keine Wünsche mehr offen bleiben. Also wohl nie :)


Carsten von Olnhausen im August 2011

Carsten von Olnhausen
66802 Überherrn-Felsberg, Leopoldstrasse 8