Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
+49 (0) 351/850 33-0

Bulletin vom .NET Open Space 2011 in Leipzig

Heute hatte ich mich (zumindest für einen Sonnabend) in aller Herrgottsfrühe auf den Weg nach Leipzig gemacht, um beim .NET Open Space Programmiersprachen- und organisiationsübergreifend Lösungskonzepte auszutauschen, Neues kennenzulernen und über Bekanntes zu diskutieren – kurz: mit vielen Gleichgesinnten einen spannenden Tag (fast) ohne organisatorische Schranken rund um das Thema .NET zu erleben.

Der Beginn gestaltete sich erwartungsgemäß entspannt mit Kaffee und Muffins, da etliche OpenSpace-Neulinge mit von der Party waren, wurden noch einmal kurz die Prinzipien eines Open Space erläutert und dann ging es auch schon ans Eingemachte: die Themensammlung. Am Ende war ein breites Themenspektrum entstanden, von welchem im Laufe des Tages immer noch mal wieder einzelne Themen in andere Räume oder Zeitslots wanderten, so dass man gut beraten war, seine „gespeicherten“ Infos gelegentlich zu aktualisieren. Eben Open Space. 

Gleich als erste Session gab es mit Entity Framework ein Thema, das mich auch persönlich tangierte, da wir gerade (zum ersten Mal) Entity Framework in einem größeren Projekt mit ModelFirst-Ansatz eingesetzt (und dabei durchaus einiges an Lehrgeld gezahlt) hatten. In der Diskussion stellte sich heraus, dass Themen, die uns bei unserem Projekt Kopfzerbrechen bereitet hatten, durchaus auch in der Community keine Unbekannten sind:

  • Die beim ModelFirst-Ansatz aus dem Modell generierte Datenbankstruktur ist – gelinde gesagt – gewöhnungsbedürftig. Hier ist die Frage, wie sehr man sich dadurch gestört fühlt – schließlich hat man ja bewusst auf den DatabaseFirst-Ansatz verzichtet. ERM-Freaks oder gar Verfechter der ersten Normalstufe könnten aber durchaus ihre Probleme damit haben. Was jedenfalls möglich ist: eigene Konventionen können dem Framework mitgegeben werden – Interessenten sei Pluggable Conventions ans Herz gelegt (allerdings erst ab EF 4.1 verfügbar).
  • Das Datenbank-Deployment arbeitet standardmäßig mit DROP und CREATE TABLE – unschön, wenn man bereits Daten hat und nur Strukturänderungen deployen möchte.
  • Die Verwendung von Views und Prozeduren möglich, aber nicht ganz unkompliziert.
  • Verwendet man die OutOfTheBox-Generierung des ObjectContexts, so entstehen Abhängigkeiten des Codes vom Entity Framework, einzelne Queries sind in der gesamten Business Logik verteilt, u.U. sogar redundant und die entstehende Anwendungsarchitektur ist nicht besonders gut test- und wartbar.

Eine Empfehlung für alle Interessierten ist das White Paper von Scott Allen Testability and Entity Framework 4.0.

Nach dem reichhaltigen Mittagbuffet wanderte ich zu WTF is a Type Provider?, da ich diese Frage gern beantwortet haben wollte.

Hier die Kurzfassung: Wir kennen dynamische und statisch typisierte Sprachen. Während statische Typisierung in der Regel ein besseres Tooling mit sich bringt (man denke nur an Intellisense!), waren dynamische Ansätze oder Codegeneratoren bisher die einzige Lösung für den Umgang mit extrem großen Datenquellen („groß“ im Sinne sehr vieler Entitäten).
Mit Hilfe von Type Providern ist es nun z.B. möglich, statisch typisiert auf OData und WebServices zuzugreifen, ohne Codegeneratoren nutzen zu müssen. Abschließend hier noch ein Verweis zum Weiterlesen.

Mit seinem Thema REST not CRUD hatte Sergej Shishkin eine ganze Menge Interessenten herbeigelockt. Diese hörten als Einstieg eine sehr empfehlenswerte Anekdote über Roy Fielding, den Erfinder von REST. Danach erläuterte Sergej das Richardson Maturity Model for REST, nach welchem in der Verwendung von REST 3 Stufen erreicht werden können:

  • Level 0: none
  • Level 1: URI (resources)
  • Level 2: HTTP verbs
  • Level 3:Hypermedia Controls

Fazit: „Alles dreht sich um Ressourcen, Repräsentationen, Hypermedia“. Ressourcenmodell ist nicht dasselbe wie Datenmodell. REST ist mehr als CRUD!

Über die sich anschließende Session zu PowerShell gibt es nicht allzu viel zu berichten – folgender in eben jener Session gefallene Ausspruch bringt es vielleicht ganz treffend auf den Punkt: “Alles, was Du mit .NET Framework machen kannst, kannst Du mit PowerShell schmutzig von der Konsole runterrotzen”. Für Entwickler wird PowerShell insbesondere dann interessant, wenn es z.B. um das Projektsetup (Einrichten von VMs, Erstellen von Datenbanken etc.) bzw. um das Deployment geht. Ein interessanter Ansatz war, sich mittels PowerShell einen NuGet Server selbst aufzusetzen.

Die für mich letzte Session des diesjährigen .NET Open Space war Software Craftsmanship – wieder von Sergej Shishkin ins Leben gerufen. Craftsmanship heißt zu Deutsch „Handwerkskunst“, und schon vorher konnte bei diesem Thema vermutet werden, dass es eine interessante Diskussion geben würde. Sergej erzählte in seinen einleitenden Worten von einem Software Craftsmanship Camp, in dem er gewesen war und dass ihn sehr begeistert, aber auch nachdenklich gestimmt hatte. Begeistert von der kreativen Atmosphäre, in der mit hohem Anspruch völlig Technologie- und Programmiersprachen-übergreifend gecoded wurde und nachdenklich, weil eben vielleicht nicht jeder Entwickler von dieser Bewegung und Anspruch an die eigene Software und die Arbeitsweise zur Erstellung dieser erfüllt ist.

In der nachfolgenden Diskussion ging es (grob zusammengefasst) um folgende Fragen:

  • Softwareentwickler sollten ihre Fähigkeiten ständig und aus eigenem Antrieb verbessern.
  • Sind Softwareentwickler Handwerker?
  • Ist Softwareentwicklung kreativ?
  • Braucht/verträgt Softwareentwicklung Normierung?
  • Ein guter Entwickler muss immer auch über den Tellerrand schauen (auch andere Technologien, Programmiersprachen)!
  • Das Entscheidende ist das Bewusstsein und der Anspruch, den wir an uns selbst stellen!

Ein gutes Mittel auf dem Weg hin zu Software Craftsmanship sind Coding Dojos und Code Retreats. CCD ist ebenfalls ein Teil von Software Craftsmanship.

Mein persönliches Resümee: Ein vom Wochenende „abgesparter“ Samstag, der meine Erwartungen erfüllte. Oder, um mit Open Space zu reden:

1 Kommentar

Danke für die tolle Zusammenfassung.

Kommentar hinterlassen


Pin It on Pinterest