Frameworks in der Programmierung – wirklich so essentiell wie immer behauptet?

Wenn immer man sich aktuell umschaut auf dem Jobmarkt, dann sind im Softwarebereich immer Erfahrungen mit Frameworks gefordert oder zumindest gern gesehen. Nun habe ich ja auch einige Erfahrung und ich sehe das immer wieder etwas zwiegespalten.

Machen wir uns erst einmal ein Bild mit welchem Ziel Frameworks entstanden sind. Mehrheitlich ist ihr Ziel die Entwicklung von Software zu vereinfachen und zu beschleunigen. Der Entwickler soll sich weniger Gedanken machen müssen über einige technische Details und soll sich ganz und gar auf seine Applikation konzentrieren können. Das klingt ja erst einmal nicht schlecht. Wer möchte sich schon gerne mit den Details einer TCP/IP-Verbindung womöglich sogar noch Verschlüsselung beschäftigen müssen wenn er nur Daten von einem Server irgendwo im Netz abholen möchte. Das klingt doch schon insgesamt sehr verlockend, aber jede Medaille hat bekanntlich zwei Seiten. Jede Technologie bringt ihre Tücken und ggf. auch Einschränkungen mit. Eine dieser Einschränkungen ist es, dass ein Framework gewisse Regeln vorgibt an die man sich halten muss, wenn man es verwendet. Das muss noch nicht mal negativ sein, vermeidet es doch, dass man sich unfreiwillig irgendwo eine Bremse einbaut, die man ggf. später wieder ausbauen muss.

Da ich relativ viel im Bereich Webentwicklung mache, beschränke ich mich im Folgenden bei den Beispielen auf dort häufig anzutreffende Frameworks und meine Erfahrungen mit Ihnen.

Eines der für mich wichtigsten Frameworks ist und bleibt JQuery und es ist eines der wenigen Frameworks, das ich schätzen gelernt habe. Warum das so ist? JQuery schreibt mir als Entwickler nicht irgendein Gerüst vor, vielmehr gibt es eine Reihe von best-practices und jede Menge Beispiele. Brauche ich aber nur eine simples Ein- und Ausblenden eines Formularelements dann muss ich mich nicht erst mit dem Bauen und Administrieren von Formularen im Sinne des Frameworks beschäftigen. Stattdessen kann ich es einfach aus und einblenden wie es gerade nötig ist. Minimaler, schlanker Code mit dem ich das Element finden und damit etwas machen kann. Derartige Abstraktion (noch dazu über Browser-Grenzen hinweg) finde ich sehr hilfreich. Auch wenn sich JQuery selbst als Framework bezeichnet – für mich hat es eher den Charakter einer umfangreichen Library (aber Library klingt natürlich so altbacken, das kannten ja schon die Entwickler aus C … daher kann man das natürlich in einem modernen Umfeld nicht offiziell so nennen).

Das nächste Framwork, mit dem ich auch immer noch arbeiten darf, ist ZendFramework. Mittlerweile ist davon die Version 3 auf dem Markt, vor allem nachdem die Version 2 reichlich wenig Akzeptanz gefunden hat. Im Arbeitsumfeld sind wir noch größtenteils mit Zend1 unterwegs. Das wird mittlerweile definitiv nicht mehr weiter entwickelt, aber wenn es läuft und es keine sicherheitskritischen Probleme gibt gilt die alte Weisheit: “never touch a running system”. Leider muss ich sagen, dass mir das Framework häufig mehr Arbeit verursacht als es je einsparen könnte. Vieles ist einfach nur sehr umständlich, trotz oder gerade wegen der vorgegeben Struktur. Auf der einen Seite ist sie recht starr – es gibt nur eine Möglichkeit bestimmte Ergebnisse zu erreichen. Auf der anderen Seite sind die Funktionen dann doch recht häufig wachsweich – nahezu an jeder Stelle kann (oder muss) man Parameter als indiziertes Array übergeben.

Richtig enttäuscht hat mich das Framework dann bei der Umsetzung von Commandozeilen-Parametern. Im Quellcode des Framworks stehen noch jede Menge offene Todo-Punkte. Die Funktion an und für sich kann man “out of the box” fast nicht gebrauchen, denn unbekannte Parametern führen zwangsweise zu einem Abbruch der Verarbeitung. Man kann natürlich dann kurzerhand die Framework-Klasse als Basis hernehmen und die notwendigen Routinen in einer eigenen Klasse überschreiben. Aber so wirklich prickelnd ist das nicht, noch dazu bindet man sich damit sehr stark an das Framework – will man die Funktionalität in einem anderen Projekt wieder verwenden, so muss man die dort mit hoher Wahrscheinlichkeit neu implementieren. Ich habe mich in diesem Falle dazu entschieden, es dann gleich selbst zu machen, PHP bietet von Haus aus bereits recht umfangreiche Funktionen, unter anderem sei hier Getopt genannt.

Natürlich wollte ich auch mal schauen was aktuelle Frameworks so können und vielleicht machen die es ja besser. Also habe ich mir Symphony angeschaut. Auf den ersten Blick ist wieder alles “nice and shiny”. Sobald man aber etwas damit arbeiten möchte, musste ich feststellen: Die Doku und die Beispiele sind einfach nur sehr akademisch gehalten. Ich habe das Framework nach einigen Versuchen ad acta gelegt, weil es ein verdammt hoher Aufwand ist, einen recht simplen Fall abzubilden: Man nehme eine einfache 1:n-Relation wie sie jede Datenbank ohne Probleme abbildet: Eine Art News-Artikel wird einer Kategorie zugeordnet. Ein priviligierter Nutzer ist in der Lage die Tabelle der Kategorien bei Bedarf zu erweitern. Ein klassischer Fall, den man im User-Interface gerne und effizient mit Drop-Down-Menu realisiert. In Symfony ist das ein echter Krampf, spätestens bei der Verwendung der Anzeigenamen als Array-Indizes und der eindeutigen Werte als Array-Werte habe ich mir nur noch an den Kopf gelangt. Das funktioniert zwar dank UTF-8-Unterstützung aber es widerspricht sämtlicher Intuition. Die Beispiele zu Formularen sind da auch keine wirkliche Hilfe – da wird einfach darauf gesetzt, dass man es ja doch per Text umsetzen könnte. Das mag für schnelle Projekte sinnvoll sein, aber im Businessumfeld sind die Regeln dann doch etwas strikter. Man kann es natürlich auf der Server-Seite dann wieder prüfen und eine Fehlermeldung ausspucken – aber warum muss der Anwender erst Tippfehler machen und ggf. raten wenn es nur wenige valide Auswahlen gibt?

Das ist jetzt sicherlich keine umfassende Evaluation, aber in vielen Punkten gleichen sich die Frameworks dann doch. Ich werde mir auch noch weitere anschauen. In einem der nächsten Posts werde ich einige generelle Kritikpunkte die mir bisher bei nahezu jedem “Backend-Framework” aufgefallen sind näher ausführen.

 

Filmkritik – Sein letztes Rennen

Bereits beim Stadtlauf in Nürnberg bin ich auf den neuen Film mit Dieter Hallervorden aufmerksam geworden – Erwin (Lionheart) Bittel hatte lustige Bilder davon gemacht, als er vor dem Plakat posierte – ich hoffe mal nicht, dass Lionheart so bald sein letztes Rennen bestreitet.

Nun lief der Film bereits einige Zeit in den Kinos und ich habe mal wieder just-in-time die Kurve bekommen ihn mir noch anzuschauen. Erwartungen hatte ich direkt keine, ich habe mich einfach auf einen unterhaltsamen Abend gefreut – und als Ultra-Marathoni sind die Trainingspausen mit Lauf-Filmen doch gut erträglich. Zwar weiß ich aus der Vergangenheit, dass Dieter eher für Satire bekannt ist, und um einiges kommt man ja einfach nicht herum. Aber ich habe nur bedingt erwartet, dass es in Bully-Herbig-Manier vom Schuh des Manitus genauso in dem Film mit der Komik und Satire einfach hintereinander weggeht.

Jeder Läufer kennt ja das Problem, dass man in jedem Lauf auch mal Phasen hat bei denen es anstrengend wird, sei es wegen des Streckenprofils oder vom Kopf her, somit wäre ein Lauffilm der nur die positiven Seiten zeigt ja auch furchtbar langweilig.

Auch wenn der Filmtitel eine Lauffilm impliziert, so ist die Thematik im Ganzen doch eine andere. Es geht um die alternde Gesellschaft in Deutschland und den Umgang mit alten Menschen. Der ehemalige Marathon-Superstar Paul Averhoff ist alt geworden und hat seit Jahren keinen Wettkampf mehr bestritten. Etwas was ich mir bei Läufern eigentlich nur vorstellen kann, wenn es gesundheitlich nicht mehr geht, aber die Vielzahl älterer Teilnehmer bei fast jeder größeren Veranstaltung zeigt mir eigentlich: Wer regelmäßig weiter trainiert ist auch im hohen Alter noch fit, wenn es auch nicht mehr reichen mag ganz vorne in den Spitzengruppen mitzumischen. Ich habe Respekt vor jedem der sich der Herausforderung eines Laufes stellt (egal ob Volkslauf, Halbmarathon, Marathon oder Ultra-Marathon), und um so mehr Respekt vor denjenigen die sie bezwingen (egal in welcher Zeit, wichtig ist das Durchhalten und ankommen). Aber nun gut, es gibt sicherlich für alles Gründe, auch dafür nicht mehr regelmäßig zu trainieren.

Zu Beginn des Filmes erfahren wir, dass die Lebensgefährtin Margot Averhoff –  welche Paul Averhoff früher als Trainerin zur Seite stand – gesundheitlich angeschlagen ist, sie bricht in der Küche zusammen. Nachdem dies nicht zum ersten Mal geschehen ist, drängt die Tochter darauf, dass ihre Eltern ins Altenheim gehen, da sie keine Zeit hat sich um die Pflege der Eltern zu kümmern. Leider ein sehr häufiges Szenario in der heutigen Arbeitswelt – eine Doppelbelastung mit Pflege der Eltern und Job steht kaum jemand heute auf lange Sicht durch. Auch muss man natürlich sehen, dass die junge Generation auch eigene Bedürfnisse und Wünsche hat.

So endet das Ehepaar im Altenheim, aber schnell wird klar: Das ist nicht wirklich zielführend, vielmehr ist das Heim die letzte Station auf dem Weg aus dem Leben zu scheiden. Genauso wird sie auch betrieben, möglichst effizient und mit allen Notständen die man aus der Pflege so kennt: ungelerntes Personal, zu wenig Zeit etc. Das ist natürlich nix für jemanden der weiß was es heißt draußen unterwegs zu sein und aktiv zu sein.

So beginnt Paul sich wieder zu berappeln und vor lauter Frust gibt er beim Essen bekannt, dass er beim Berlin-Marathon starten will. Es folgt was folgen muss: Training und die Rebellion im Altenheim – wenn sie auch leider nicht so ausgeht wie man es sich im ersten Moment denkt. Margot verstirbt überraschend einige Tage vor dem Rennen. Daraufhin fällt Paul ersteinmal in eine tiefe Krise, leider verwehrt ihm das Altenheim jegliche sinnvolle Betreuung – stattdessen wird er ruhig gestellt und im Bett fixiert. So einfach kann man sich Hilfe machen und Arbeit sparen.

Zusammen mit einem Heimbewohner und einen engagierten Pfleger gelingt Paul gerade noch rechtzeitig die Anreise zum Start beim Marathon. Den Rest verrate ich jetzt hier mal besser nicht…

Insgesamt ein sehr rührender Film, das muss man lassen. Er macht vor allen Dingen nachdenklich wie wir mit der alternden Gesellschaft umgehen wollen und wie wir als Nachfolgegeneration mit unseren Eltern umgehen wollen. Ich bin kein Fan von irgendwelchen Alten-Sammelheimen, auch unseren Großeltern und allen Angehörigen blieb das zum Glück erspart. Aber ich bin auch realistisch: In der heutigen Arbeitswelt ist es beinahe unmöglich sich in Eigenregie um die Eltern kümmern zu können. In vielen Familien wird es dadurch erschwert, dass sich die Last auf zwei oder auch nur vier Schultern verteilt. Kommen dann noch längere Distanzen zwischen den Familienteilen hinzu wird es sehr schnell beinnahe unmöglich oder nur mit sehr hohem Aufwand.

Da das Altern ein schleichender Prozess ist, bin ich der Meinung man muss den älter werdenden Menschen Hilfe anbieten, aber Ihnen diese nicht aufzwingen – niemand wird gerne bevormundet. Viele Menschen haben einen gewissen Stolz den sie auch als Würde empfinden. Dieser verbietet es dem Individum erst einmal sich helfen zu lassen. Gerade wenn es um Dinge geht, die eigentlich trivial sind oder jahrelang einfach dazu gehörten. Das fängt mit dem Kochen und Wäschewaschen an und hört bei eigenständiger Mobiltät auf. Sich selbst eingestehen zu müssen das etwas nicht mehr so bleiben kann wie es ist, ist mit Sicherheit nicht einfach. Hier verhält es sich wie beim Laufen: Einfach von jetzt auf gleich aufhören, das kann nicht gelingen, genauso wenig wie von jetzt auf gleich eine Ultra zu laufen. Unterstützung da wo es gewünscht oder notwendig ist, ansonsten soviel Würde und Eigenständigkeit wie möglich. Die aktuellen Angebote wie betreutes Wohnen oder auch das Mehr-Generationen-Quatier sind hier denke ich erfolgversprechende Ansätze.

Abschließend noch ein paar Gedanken zum Film aus Sicht eines Läufers: 12 Wochen Vorbereitung sind der Standard für einen grundlegend trainierten Läufer. Das kann man mit etwas Willen und Abstrichen in der Zielzeit auch auf 8 Wochen verkürzen, aber das ist schon wirklich ambitioniert. Von daher ist das gewählte Szenario schon etwas grenzwertig und keinenfalls für den Laufanfänger zur Nachahmung empfohlen (dann schon eher etwas in der Art “von null auf 42” – innerhalb eines Jahres). Auch im fortgeschrittenen Alter sollte man sich ausreichend Zeit für die Vorbereitung nehmen, vor allem aber auch eine entsprechende Betreuung haben. Kontakte sollte man als ehemaliger Olympia-Teilnehmer dafür eigentlich noch irgendwo haben. Die Ausrüstung ist auch etwas kurios, aber es sollte machbar sein, mit einer derartigen Ausstattung einen Marathon zu bestehen – es gibt ja auch Leute die barfuß einen Marathon bestreiten, und früher ging es ja auch, mit weit weniger ausgfeiltem Schuhwerk als heute.

Die Bilder von der Laufstrecke sind beeindruckend und reißen einen als Läufer durchaus mit, wenn man weiß wie schwer es sich anfühlt, jenseits der 30km. Sehr schön dargestellt fand ich die Unterstützung an der Strecke: Aus Erfahrung weiß ich: Ohne die ist jeder Lauf um ein vielfaches anstrengender. Gegen Ende der Strecke hin, sind dem Regisseur dann aber doch die Pferde ein wenig durchgegangen – wie dargestellt ist Paul mit Sicherheit nicht der schnellste Läufer, schlägt sich aber wacker im hinteren Mittelfeld, so würde ich es zumindest einmal einschätzen. Selbst ganz hinten wäre man nicht so verlassen und allein wie im Film dargestellt, ferner würde doch auch mindestens ein Begleitradler als Besenfahrzeug irgendwo in der Nähe sein – wie gut es hinten laufen kann, darüber berichtet Erwin ja häufiger einmal (besonders am Stadtlauf in Nürnberg). Auch die zwischenzeitlich gezeigte Uhr zur Zeitnahme scheint mir etwas sehr optimistisch für einen einsamen Schlussläufer: bei 3:34h ist nach meiner Erfahrung das dicke Hauptfeld im Einlaufen, und auch bei um die 4h sind sicherlich noch mehr Läufer im Zielbereich unterwegs. Das will ebensowenig passen wie ein immer noch voll besetztes Olympia-Stadion zum Einlauf des Helden.

Insgesamt: Sehenswert und zum Nachdenken anregend, aber durchaus auch mit heiteren und sportlichen Momenten. So und jetzt mach ich Schluss – ich muss noch meine Laufschuhe schnüren, damit ich nicht einroste …

Premium Rush – Action-Movie auf dem Fahrrad

Gestern war ich seit längerer Zeit einmal wieder im Kino – ich komme da leider recht selten dazu. Aber dieser Film “Premium Rush” hatte es mir nach einer Filmkritik im Radio dann doch angetan – mal nicht das schon bekannte Action-Genere mit Hubschraubern, dicken Autos und jeder Menge Explosionen. Stattdessen der Jungle von New York City und als Hauptakteur ein Fahrrad-Kurrier.

Auf dem Weg ins Kino gab es dann schonmal die ersten Chancen sich warm zu machen für den Film, nachdem mir jemand am Wochenende mein Auto zusammen gefahren hat (Gutachten steht noch aus) bin ich auf die Fahrer großer dunkler Limousinen vom Hersteller mit den drei Buchstaben und dem Heckantrieb ohnehin nicht gut zu sprechen. Einer hat es dann halt fürs Blockieren des Überwegs am Ring abbekommen – man kann auch vorausschauend fahren – wenn man schon sieht dass es staut, dann muss man nicht noch den Fußgänger-Überweg dicht machen. Unerwartete Unterstützung gab es von einigen Fußgängern – einer hat sich auch noch auf die Seite des Autofahrers gestellt – der hat dann auch noch ne Runde abbekommen – manchmal kann man einfach nur verlieren…

Aber zurück zum Film: Die Story ist etwas dünn, aber das macht bei einem guten Action-Film ja nicht viel aus. Es geht um ein enorm wichtiges Schreiben das vom einen Ende von New York (an der Universität) bis nach China-Town muss. Ein korrupter Polizist mit chronischer Spielsucht und hohen Schulden wittert seine Chance den großen Fang zu machen und das Geld das hinter dem Deal steht einzustreichen. Davon weiß der Zuschauer und der Kurier am Anfang noch nichts – erst nach und nach fügen sich die Puzzlesteinchen ineinander und ergeben ein schlüssiges Bild.

Leider hat der Film einige künstliche Längen und ein paar kleine Schnitzer die ihn teilweise unglaubwürdig machen – etwa der Stopp des Kurriers bei der Polizei nachdem ihn schon selbige auf dem Rad verfolgt hat – der radelnde Polizist kann einem schon fast leid tun für all seine Schrammen. Auch die diversen Pausen beim Radeln wirken doch recht künstlich – wenn ich einen Transportauftrag mit Zeitvorgabe habe, dann trödle ich doch eigentlich nicht rum.

Die unübliche Rückgabe des Pakets und die folgende Jagd zwischen zwei rivalisierenden Radkurieren ist auch eine der Künstlichkeiten die nicht so recht ins Bild passen will. Ebenso die Rückholung des Rades bei der Polizei – da wird dann doch das übliche Action-Clisché bedient – realistisch ist das alles nicht mehr aber doch sehr unterhaltsam anzuschauen.

Insgesamt eine nette Abendunterhaltung wenn man mal einen etwas anderen Action-Film sehen will und weiß wie es um die Radler auf der Straße steht. Die große Kette fürs Rad muss ich mir wohl auch mal zulegen, falls man wieder jemand dumm kommt, kann man die wie im Film schwungvoll auf den Außenspiegel hauen, wobei sind Abdrücke davon wohl auch in mancher Motorhaube gut machen würden. Auf dem Heimweg war ich dann aber sowas von gepusht – Radeln bei Nacht durch Mannheim – immerhin haben wir recht gute Radwege im Vergleich. Die 50 km/h wie im Film habe ich aber dann doch nicht erreicht …