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.

 

Ein Jahr Papa

Ein Jahr – das ist so schnell vergangen. So schnell, dass es jetzt schon 13 Monate sind, bis ich endlich einmal dazu komme, mein Gedanken an das Jahr zu sortieren und hier nieder zu schreiben.

Erst vor einigen Tagen ist es mir wieder aufgefallen, als ich den Sohnemann durch die Wohnung getragen habe – er hat ganz ordentlich zugelegt – und im Vorbeigehen am Kalender mit den Bildern kurz nach der Geburt ist mir nochmal um so klarer geworden, wie viel er doch gewachsen ist.

Das erste Lebensjahr – und schon so viel erlebt: Sei es die Erkundung der Wohnung auf allen Vieren, der Umzug in die größere Wohnung und natürlich auch die Teilnahme an Babyschwimmen und PEKIP. Leider habe ich mit dem Arbeitgeberwechsel nicht mehr ganz die Flexibilität um wenigstens einige der vielen Aktivitäten begleiten zu können. So reihe ich mich denn doch in die Gruppe der Väter ein, die in den ersten Lebensjahren gar nicht so viel von Ihrem Nachwuchs haben: Wenn man morgens aus dem Haus geht, hat man eventuell noch die Chance den Nachwuchs zur Krippe oder zum Kindergarten zu bringen, aber wenn man heim kommt ist er dann schon (fast) wieder im Bett.

Als Ausgleich dienen dann natürlich die Wochenenden, wobei ich auch da so meine Probleme habe – denn da bin ich dann regelmäßig beim Training für lange Läufe. An anderen Tagen sind dann wieder andere Verpflichtungen – viele davon kann man auch mit dem Nachwuchs wahrnehmen – zum Beispiel die vielen Einladungen zu Freunden und Bekannten. Hier kommt dann meist auch der Sohnemann auf seine Kosten, denn momentan ist um uns herum der Kinderwunsch doch recht ausgeprägt. Da wuseln und krabbeln dann gleich Mehrere, was immer recht drollig anzuschauen ist.

Insgesamt habe ich aber noch die Hoffnung, dass viele der zusätzlichen Termine im nächsten Jahr weniger werden – immerhin ist die Wohnung ja nun eingerichtet und der Umzug ist auch durch – alleine diese Arbeiten haben doch einiges an Zeit gekostet, die ich dann nicht mit dem Sohn verbringen konnte, oder mich zumindest nicht so intensiv um ihn kümmern konnte wie ich das gerne gemacht hätte.

Etwas überrascht im negativen Sinne war ich dann von den Angeboten zur Kinderbetreuung. Es ist uns leider nicht ganz vergönnt, das ein singuläres Gehalt für die gesamte Familie ausreicht. Als ich dazu mal etwas nachgeforscht habe, ist mir auch klar geworden warum: Mit der Verlagerung der Verantwortung für die Vorsorge muss ich jeden Monat etwas zurück legen – sicherlich nicht verkehrt und dringend geboten, aber dieses Geld steht mir nicht zur Verfügung um es für die Familie einzusetzen. Immerhin muss ich aktuell keine Kredite bedienen, was in anderen Familien durchaus noch zusätzlich am Budget zehrt.

Leider sind die Angebote für die Betreuung momentan alles andere als kompatibel mit gängigen Arbeitszeitmodellen. Beginn um 7:45 und Ende je nach Wochentag um 16:30, 14:30 oder 12:30 – das geht nur mit viel logistischem Aufwand und Organisation. Für uns heißt das: Früh aufstehen und dann aufteilen – ein Elternteil gleich zur Arbeit, der andere bringt den Sohn in die Kita. Nachmittags holt der andere Elternteil ihn dann wieder ab. Für mich heißt das aber auch, dass ich erst recht spät im Büro bin, denn die Fahrtzeit kommt ja noch mit drauf. Dann ist es natürlich aber auch nichts mit 16:00h Feierabend machen – es wird also jeden Tag vergleichsweise spät bis ich mich überhaupt auf den Heimweg machen kann. Damit sinken die Chancen, noch etwas Zeit mit der Familie verbringen zu können. Erst recht wenn dann noch Training oder andere abendliche Vereinstätigkeiten anstehen.

Immerhin: Es besteht ja ein Rechtsanspruch auf einen Kita-Platz. Es sollte aber darüber nachgedacht werden ob diese Regelung noch präzisiert werden muss, damit es auch ausreichend Angebote für Berufstätige gibt, die eine Vereinbarkeit von Familie und Beruf auch tatsächlich ermöglichen. Bereits derzeit gibt es Angebote die eine größere Zeitspanne abdecken – natürlich auch nicht ohne entsprechend höhere Beiträge. Zudem gäbe es die Möglichkeit die Kinderbetreuung für den nicht abgedeckten Zeitraum durch eine Tagesmutter zu überbrücken (auch dies würde durch die Gemeine bezahlt) – nur für genau diesen “Lückenschlieser” findet sich in der Regel kein Angebot.

Ebenfalls überdacht werden sollte die Vergabe der Plätze – hier gibt es noch einiges zu tun – wir haben in direkter Nachbarschaft zur Wohnung gleich zwei verschiedene Krippen und Kindergärten, dies war mit ein Grund für die Wahl der Wohnung. Aber in diesen Einrichtungen haben wir ob unseres Zuzugs keinen Platz mehr bekommen – rechtzeitig anmelden heißt bei Kita und Kindergarten: Es muss die erste Amtshandlung nach Geburt sein, andere Quellen sprechen sogar davon, das man besser gleich nach dem ersten positiven Schwangerschaftstest die Anmeldung ausfüllt. So habe ich als Elternteil jeden Morgen zusätzlich rund 2,5km Wegstrecke, die ich mit einem Verkehrsmittel meiner Wahl zurücklegen muss. In der Regel versuche ich das ökologisch korrekt mit Fahrrad und Anhänger zu machen. Aber egal welches Verkehrsmittel: die Wegstrecke legt sich nicht in 0 Minuten zurück, der Zeitplan wird also noch etwas knapper – dabei fahre ich natürlich direkt von der Kita an den Arbeitsplatz.

Wir überlegen daher ernsthaft, ob wir uns bereits jetzt für einen Kindergartenplatz in der Einrichtung direkt vor der Haustüre bewerben sollen, auch wenn das natürlich eine Umstellung wird, auch im Bezug auf Freunde in der Gruppe. Das ist sicherlich auch nicht optimal.

Aber jetzt freuen wir uns erst einmal, dass er überhaupt geklappt hat. Seit der Kleine in der Kita ist hat er richtig große Fortschritte gemacht, viel neugieriger und viel selbstständiger ist er geworden – das Laufen wird sicherlich demnächst auch noch kommen. Ich freue mich aber über alles was er mit uns so anstellt.