Sonntag, 10. März 2013

Hilfe – meine Programmierer bauen Frameworks!


Bei der Planung Ihres Projektes haben Entwickler und Architekten mitgearbeitet. Der Termin ist zwar eng, aber erreichbar. Sie dürfen nur keine Zeit verlieren! Nach dem Setup der Arbeitsumgebungen und des Build-Prozesses läuft die Entwicklung langsam an, Ihr Blutdruck sinkt und Sie atmen mal durch.

Das wichtigste erste Feature ist, die Daten persistent zu speichern, klar: in der Datenbank. Das Datenmodell haben Ihre Leute schon erstellt, hat viel Zeit gekostet, bis die zufrieden waren. Jetzt geht’s los! Die Entwickler hauen in die Tasten und malen Kästchen-Diagramme an die Whiteboards. So weit, so beeindruckend.

Irgendwie sehen Sie zwar viel Arbeit, aber wenig konkrete Ergebnisse? Und immer, wenn Sie nachfragen, heißt es: „Läuft! Muss halt sein: der Code ist die Basis, damit wir später schnell implementieren können.

Keine Sorge – Sie sind nicht allein! Was Ihnen gerade passiert, haben viele Projektleiter schon durchgemacht: Ihre Entwickler bauen nämlich gerade ein Framework! Sicherlich gibt es ganz in Ihrer Nähe eine Selbsthilfegruppe von Software-Projektleitern, die Sie freundlich aufnimmt... Im Ernst: Warum tun die das? Und bringt das Ihr Projekt voran oder in Bedrängnis?

Ihre Entwickler haben natürlich in der ein oder anderen Form einen Informatik-Hintergrund, häufig durch Ausbildung, viele sogar durch ein Studium. Irgendwann einmal hat sich die Informatik von ihren Stiefeltern, der Mathematik und der Elektrotechnik, losgesagt und verfolgt seit dem eigene Ansichten, Traditionen und Mythen.

Eine grundlegende Tradition ist die Abstraktion eines Algorithmus oder eines Fachobjektes durch eine generische Sicht: wenn der Sortieralgorithmus mit Adressdaten funktioniert, warum nicht auch mit Kontodaten? Ist nicht jeder Beteiligte in einem Geschäftsprozess ein Partner, der zumindest eine postalische Adresse hat?

Gerade die Abstraktion bietet aus kaufmännischer Sicht durchaus Vorteile: Sie wollen ja nicht jedes Mal wieder für die Erfindung des Rades bezahlen – schließlich ermöglicht insbesondere die Objektorientierung eine generische Herangehensweise und eine schnelle Wiederverwendung bei niedrigen Kosten.

Gerade die stets angeführten Kostenvorteile bei Wiederverwendung halte ich übrigens für einen hartnäckigen Mythos: Wie viele EU-Forschungsprojekte, experimentelle Programmiersprachen und wissenschaftliche Arbeiten hat es hierzu schon gegeben? Und wie viel Code wird in der Praxis wirklich wiederverwendet? Oft stellt man fest, dass ein cleverer Algorithmus doch noch ziemlich ausgebaut werden muss, damit er auch tatsächlich wiederverwendbar ist – etwa als Framework. Denn die Situationen, in denen Code erneut eingesetzt werden soll, können extrem unterschiedlich sein: vielleicht ist die generische Sortierung gar nicht so vorteilhaft, wenn zu viele Sätze in eine Maske geladen werden müssen? Will sagen: Trau, schau, wem!

Falls Sie Entwickler-Magazine wie die c’t, Java-Magazin, Entwickler-Magazin, Objekt-Spektrum u.a. lesen: wundern Sie sich auch immer, wie viele Frameworks aus dem Open Source Bereich dort vorgestellt werden? Natürlich gibt es auch viele, viele kommerzielle Frameworks, die in diesen Zeitschriften beworben werden. Es wäre mal interessant nachzuhalten, welche der vorgestellten Frameworks wieder in der Versenkung verschwinden! Die wesentliche Erkenntnis ist aber meist: 

"There is a framework for that!“

Wenn Sie ein Framework bauen wollen oder müssen – weil es wirklich kein passendes und verfügbares gibt – wie tun Sie das dann?

Treiben Sie die Entwicklung von Framework und Anwendung, Modul oder was immer auf dem Framework basiert, parallel voran:
  • Die Entwickler bauen ein Feature des Frameworks, z.B. „lese Daten aus Tabelle und packe sie in ein Objekt“.
  • Dann bauen sie z.B. die Geschäftslogik, den Service zum Aufbereiten der Daten sowie eine Maske, in der die Daten angezeigt werden.
  • Dabei lernen Ihre Entwickler ziemlich viel über die tatsächlichen Anforderungen der nutzenden Module an das Framework – und können schnell das Framework noch anpassen. Das Ganze können Sie natürlich auch halb parallel machen: die einen bauen das Framework, die anderen die Maske.
  • Danach kommt das nächste Feature dran, z.B. Speichern von Objekten in der Datenbank.
  • (und so weiter)


Selbst wenn sich zwischendurch die Richtung des Projektes ändert, und auch wenn Sie am Ende wirklich ein komplettes Framework haben:
  • Sie bauen nur das, was wirklich benötigt wird – Code für „später“ oder meist „viel später“ oder sogar „viel, viel später“ wird nicht für teures Geld erstellt.
  • Die Vorausplanungen für das Framework werden schnell validiert – nichts ist so erkenntnisbringend wie nutzende Module! Wir alle neigen nämlich bei Planungen zu  Irrtümern – sonst wären wir ja schon alle Millionäre oder Nobelpreisträger...
  • Wenn Sie dies mit relativ kurzen Zyklen umsetzen, verstärken Sie diese Effekte noch.


So gut das alles klingt: Sie werden Ihre Entwickler schon überzeugen müssen. Als Projektleiter haben Sie noch andere Mittel, in Scrum-Projekten müssen Sie den Product Owner dafür gewinnen. Machen Sie den Entwicklern klar, dass es um harte Dollars geht!

Übrigens ist das Beispiel mit der Persistierung natürlich nur ein Beispiel... Sie haben dafür natürlich eine große Auswahl an Frameworks (im Java-Bereich) unter Hibernate, Eclipselink, iBatis und anderen. Natürlich haben die alle ihre Schwächen – dafür könnte man ein perfektes, neuartiges Framework bauen...


Keine Kommentare:

Kommentar veröffentlichen

Kommentare? Erwünscht!

Aus rechtlichen Gründen werden Kommentare moderiert...

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.