Zurück auf Anfang

Kaum glaubt man, man hätte keinen Stoff mehr für irgendwelche Artikel seiner Kolumne, da passierts und man merkt, dass man sich schon wieder nur für sich allein über irgend etwas aufregt. Das muss nicht sein, denn für solche Fälle hat man ja schließlich sein Forum. Na denn!

Die Menschheit im Allgemeinen und die Gilde der Anwendungsentwickler im Speziellen hält sich zugute, eine Art hochoptimiertes Endprodukt der Evolution darzustellen. Hätte man ja von objektorientiert denkenden Schimpansen gehört, die es schaffen, ohne Flash butterweiche Animationen ins Internet zu stellen und dabei so viel Vorraussicht zu besitzen, Letzteres erstmal zu erfinden? Nein! Da kann Meister Czimek noch so viel gesucht haben, so ein Tier wird ihm nicht untergekommen sein.

Dabei muss ich allerdings mit erhobenem Beobachterzeigerfinger eindringlich davor warnen, hier zu viel evolutionäres Glück zu unterstellen. Das Ganze kann sich nämlich bei genauerer Betrachtung als Wahrnehmungsproblem herausstellen.

Ich glaube, es war vor ca. 3 oder 4 Jahren (mit zunehmendem Alter neige ich übrigens dazu, Vergangenheitsdistanzen zu unterschätzen), da kamen die ersten ernsthaften Ansätze auf den Markt, die versprachen, die Lücke zwischen der Datenbank- und der OOP-Welt zu schließen. Da waren Namen, wie Hibernate, LINQ aber auch schon Entitiy Framework am rumwuseln und man merkte gleich: Da passiert aber was!

Nicht, dass dieses Passieren nicht schon längst überfällig gewesen wäre! Lebewesen, die sich, wie bereits angedeutet, als die Krone allen Seins betrachten, haben es fertig gebracht, sich 2 Dinge auszudenken (Datenbanken und OOP), die so schlecht zueinander passen, dass es weiterer Jahre der Forschung brauchte, um etwas zu entwicklen, dass beides wieder zusammen bringt. Unglaublich genial! Sowas kennt man normalerweise nur von anderen Vertretern der gleichen Spezies, die es sich zur Aufgabe gemacht haben, ihr Leben der Erhaltung der eigenen ungerechtfertigten Daseinsberechtigung zu verschreiben. Gemeint sind hier Gewerke, wie die Jurisprudenz und das Steuerfachwesen. Getreu dem Motto: „Wir machen es so kompliziert, dass nur noch wir durchsteigen.“ haben diese Füchse soviele Mücken in Elefanten gewandelt, dass man sie fast schon in der Arterhaltung einsetzen möchte.

So nun auch unsere DB- und OOP-Jungs. Nachdem beide Welten nun langsam begannen, aufeinander zu zu migrieren, gingen endlich auch ein paar Lampen in ein paar Schädeln an. Endlich wurde ernsthaft daran gedacht, einigermaßen sauber zu programmieren und Datenbanken zu bauen, die auch eine solche saubere Programmierung zulassen, ohne die Ladezeiten zu verzigfachen.

Der Weg schien geradewegs ins Walhalla der Softwareentwicklung zu führen, wenn man Walhalla als erstrebenswertes Reiseziel erachtet, was dessen Erfinder taten. Egal, jedenfalls bemerkte ich kürzlich, dass es an der Zeit wäre, zu resumieren, ob wir denn wohl angekommen wären.

Ich denke nicht. Wir haben vielmehr mal wieder auf halber Strecke eine Weiche gestellt und sind ganz woanders hingefahren. Einige wähnen sich nun im Himmel oder in einer sonstigen spirituellen Wunschdestination. Das sind allerdings genau die Leute, die wir bei Antritt der Reise loszuwerden trachteten. Es sind die Jünger des schnellen Codes, die Hasser der einheitlichen Einrückung kurzum die neuen Script-Kiddies.

Nicht ohne Bedauern muss ich weiterhin feststellen, dass einer meiner meist verehrten Technologie-Werber, Scott Hanselman, nicht unwesentlich Schuld an dieser Entwicklung trägt, wie ich im Folgenden noch auszuführen gezwungen bin.

Alles ging los mit einem harmlosen und unterschätzten neuen Technologie-Buzzword. Nein, keine Angst, jetzt kommt nicht schon wieder Cloud! Ich schreibe diesen letzten Satz nur, damit Google diesen Artikel irgendwelchen Cloud-verblendeten unterjubult. Nein, es geht um „code first“.

Wie es den aus dem Englischen entlehnten Buzzwords so eigen ist, erzeugen sie erstmal keine unguten Nebengedanken bei deren Verwendung. Auch ich dachte mit nichts dabei, den Worten von Scott und anderen andächtig zu lauschen und an die 16 mal zu erleben, wie schnell und einfach man denn wohl eine Newsfeed-Webseite damit aufbauen kann. Das ist wirklich beeindruckend. In Kurzform geht das ungefähr so: Man nehme eine stinknormale (POCO genannte) .NET-Klasse, ergänze sie um ein bis 1000 Attribute und erzeuge einen sog. Context. Dann verlasse man sich auf das Visual Studio und seine neuen Möglichkeiten und staune darüber, dass bei Drücken der F5-Taste eine vorher gar nicht bemerkte (localdb) genannte Datenbank das Ganze einbindet und man einfach Datensätze erfassen kann, wo vorher nicht mal ne Datenbank war.

Cool, denken die ersten hinten links und tauchen verdächtig schweigsam aber hektisch tippend unter die Wahrnehmungsschwelle. Dieses aber nicht für lange, denn schon wenige Augenblicke später ist man umringt von solchen Gremlins. Sie fluten die Foren mit ihren Code-First-Fragen, erstellen Blog-Einträge darüber, Twittern überall und erzeugen so ganz nebenbei den Eindruck, dass man da mitmachen müsste, was ihre Anzahl stetig vergrößert. Es kommt soweit, dass man slebst bei stackoverflow keinen Artikel mehr findet, der sich mit „database first“ beschäftigt. Alle Fragestellungen gehen ins leere und selbst simple Fragestellungen wie z.B. diese enden darin, dass ein 33K-Gigant bei stackoverflow die Hände hochreist.

Transportiert man diese Erkenntnisse dann auf seinen eigenen Alltag ist man geradezu überrascht, keinen echten Menschen zu finden, der das Ganze auch wirklich einsetzt. Die Erkenntnis kommt so rasch, wie sie simpel ist: Geht ja auch gar nicht! Wo hätte man denn bitte im Profi-Lager jemals erlebt, dass ein DBA sagt: „Achso! Ihr erstellt die Datenbank on-the-fly! Na dann ist ja gut!“. Natürlich vollkommener Unsinn!

Aber da kommt schon das nächste coole Feature daher „EF migrations“. Frei nach dem Motto: „So, und wenn Du nach Deinem ersten F5 was änderst und wieder EF drückst, dann kannst Du einfach ‚Publish‘ machen und dann verbreitet sich Deine Änderung inkrementell auf die oder die oder einfach alle Deine Datenbanken!“. Ich würde das ja wirklich gern mal ausprobieren. Aus Forschungszwecken. Ich schnappe mir einfach so einen DBA (weiß übrigens irgend wer warum die meist aus Länder, wie Russland und Bulgarien kommen) und sage ihm: „Pass mal auf, Victor! Du setz Dich mal hin und sieh Dir das hier an!“. Dabei drücke ich einfach Publish und warte, was passiert. Meine Vorstellungen reichen von spontanem Herzklappenabriss bis zu hysterischem Gelächter. Weniger rechne ich mit kumpelhaftem Auf-die-Schulter-Klopfen.

Dann, auf den gleichen Veranstaltungen, auf denen eben noch einer über Code-First gefaselt hat, tritt ein anderer auf und erklärt die neuen Clustering-Möglichkeiten im SQL Server. Na super, aber wofür soll ich die kaufen? Ich mache eh alles mit code-first und kümmer mich einen Dreck um  T-SQL, Prozeduren und solchen Quatsch! ISt die DB zu langsam, nehme ich mir einfach 3 oder 4 Azure-Instanzen (jetzt findet mich Google garantiert) und fertig.

Da stehen wir nun. Die meisten haben nicht mal bemerkt, dass das Visual Studio für database-first eine Tonne neue Features eingeführt hat und wollen es auch gar nicht sehen, weil sie lieber weiter alles ignorieren wollen, was irgendwie ihre Work-Life-Balance stört. So Dinge, wie Lesen, Lernen, Probieren, Nachfragen.

Evolutionär betrachtet begeben wir uns also in der Entwicklung nach hinten und nicht nach vorn. Wir sind kurz abgebogen, um zurück auf den Zustand zu kommen, in dem sich die eine Welt (OOP) keinen Deut um die andere (DB) schert. Die DBAs machen weiter ihre abschätzigen aber berechtigten Witzchen über die Programmierer und die Programmierer glauben weiter, dass eine Datenbank ein notwendiges Übel ist, weil der Azure-Cache mal zufällig ausgehen könnte. Der Weg war gut, die Reiseführung schlecht, kann man da nur feststellen.

Ich weiß selbst, dass code-first eines dieser Produkte ist, die mehr Leute dazu bewegen sollen, irgendwelche Apps für das Windows Phone, Windows 8 oder Windows Server zu schreiben. Das macht heute keinen Unterschied mehr, weil ja eh alles das gleiche OS ist (im Prinzip). Ich warte darauf, dass jemand die Dienstverwaltung auf dem Server umschreibt und sie mit einem JavaScript-Skin versieht, bei dem man rechts Werbung eingeblendet sieht. So abwegig ist das irgendwie nicht mehr. Vielleicht kann man in Zukunft die Laufwerksverwaltung dazu mieten wie heute Office? Warum nicht!

Selbst wenn ich hier gegen Windmühlen schreibe! Es ist mir egal, denn einer muss es halt tun. Hinnehmen kann ich das Ganze jedenfalls nicht und arbeiten werde ich so auch nicht. Für alle, die also mehr code-first auf codingfreaks erleben wollten: Machts gut, Freunde! Im Gegenzug werde ich jetzt ein wenig mehr echten Profi-Stuff einflißen lassen. Ob Scott noch lange in meiner Feed-Liste bliebt, weiß ich noch nicht. Kommt auf sein Betragen an :-).

2 Antworten auf „Zurück auf Anfang“

  1. Interessant, ich hab mir gerade die Frage gestellt, ob Code First mit EF 5 eine Alternative zu OODBs sind.
    Ich mag das ganze ORM Geraffel nicht. :(

    Vielleicht kannst Du mal etwas mehr erzählen, wenn/falls Du wieder in HH bist.

    1. Hi Markus. Tja, ich bin halt kein besonders großer Freund dieser neuen Ansätze des Code-First. Ich denke nach qwie vor, dass Business-Anwendungen i.d.R. datengetrieben sind und sein sollten. Letztlich scheitert man mit CF auf jeden Fall bei Skalierung usw.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.