Archive for the ‘Reading’ Category.

Domain Driven Design

Die letzten paar Wochen habe ich mir Domain Driven Design von Eric Evans reingezogen. Das Buch ist formal im Pattern Stil aufgemacht, aber tatsächlich werden immer kleine Entwicklungsgeschichten erzählt. Das erste Kapitel widmet sich der Ubiqitious Language. Evans argumentiert, dass Softwareentwicklung Wissensverarbeitung sei und dabei eine einheitliche Sprache des Aufgabengebiets erarbeitert werden muss. Bei einem Domain Driven Designs muss sich diese Sprache im Design/ Code wiederfinden.

Ein weiterer Teil behandelt die Bausteine des Domain Models. Dabei werden verschiedene Konzepte wie Entity, Value Object und Aggregat eingeführt, die in UML-Sprech Stereotypen für die eigentlich Domain Klassen darstellen.

Außerdem wird ausführlich auf den Prozess der Entwicklung als iterativer Erkenntnisgewinn eingegangen. Auch hier formuliert Evans bestimmte Erfahrungen als Patterns. Besonders Gefallen hat mir der Breakthrough. Ein Breakthrough ist ein Refactoring mit dem sich plötzlich ungeahnte Möglichkeiten auftun, also der inkrementelle Erweiterungsprozess an eine Grenze stößt und ein Refactoring zu einer tieferen Einsicht und einem Durchbruch führt.

Das wesentliche Verdienst des Buchs besteht für mich darin, dass viele Erfahrungen und Konzepte, die ich bisher nur erahnt habe, explizit beschrieben werden. Einige Patterns waren mir völlig unbekannt. Der Stil ist geprägt von anschaulichen Beispiele teilweise auch aus technischen Anwendungen. Verdikt: Unbedingt lesen!

Wittgenstein für Softwareentwickler

Habe neulich “Wittgenstein zur Einführung” von Chris Bezzel gelesen und bin dabei über folgendes gestolpert:

Nur wer vom “vom Ideal geblendet” ist und nicht sieht, wie Spiele wirklich gespielt werden, schreckt vor einer “Vagheit in den Regeln” zurück und verlangt für die sprachliche Logik völlige Geregeltheit bis ins kleinste. Der Begriff “Spiel” ist ein “Begriff mit verschwommenen Rändern”, und er ist, wie ein unscharfes Foto, “oft gerade das, was wir brauchen”.

Das scheint dem, was allgemein als Analysis Paralysis bezeichnet wird, nicht ganz unähnlich. Aber vielleicht ist das auch etwas an den Haaren herbeigezogen…

Behind Closed Doors

Dieser Tage habe ich das im Pragmatic Bookshelf erschienene Buch Behind Closed Doors – The secrets of Great Management von Johanna Rothman and Esther Derby gelesen. Das Buch ist ist Geschichte aufgebaut und um einen Referenzteil ergänzt. Dadurch liest es sich sehr flüssig. Die beiden Autorinnen haben langjährige Erfahrung als Beraterinnen in der Entwicklung. Die Ideen erscheinen alle sehr einleuchtend und pragmatisch in der Summe entsteht aber doch ein Ideal, hinter dem die Führungswirklichkeit weit zurückbleibt.

Im Sinne der Illusionierung der Welt unbedingt lesen – oder muss es illusionäre Zurüstung heißen?

Auszüge stehen auf der WebSite zum Download zur Verfügung.

Karriereplanung in schwierigen Zeiten

Ich bin gerade eben mit Chad Fowlers My Job Went to India fertig geworden. Ein sehr schönes Buch darüber, wie man sich als Softwareentwickler um seine Karriere kümmern kann und muss. Der Tenor ist natürlich sehr amerikanisch, dass es also an uns liegt, zu verhindern, dass wir überflüssig werden. Aber ich glaube er hat schon recht.

Das Buch ist in 52 Abschnitte mit eingängigen Titeln unterteilt, die meist mit klaren Handlungsanweisungen “Act on it” enden. Diese Tipps gelten übrigens keineswegs nur für Softwareentwickler, sondern sind größtenteils allgemeingültig oder doch zumindest für alle Techies relevant. Ein Exemplar steht bei mir jetzt günstig zur Ausleihe zur Verfügung.

Lifestreams

Lifestreams sind ein einheitliches Konzept zur Informationsverwaltung, dass Eric
Freeman bei David Gelernter als Alternative zur auch heute noch fröhliche Urstände feiernde Desktop Metapher entwickelt hat.

Die Dissertation gibts auf der Projektseite runterzuladen ist. Die Desktopindizierer und GMail scheinen mir in die Richtung zu gehen.

Ich hatte mal Omea installiert, aber das war leider nur auf den Desktop beschränkt und man hätte doch gerne eine Serverintegration…

Die Konzepte sind jedenfalls ganz interessant. Erschreckend wie weit der Mainstream ob OS oder kommerziell davon entfernt ist.
Die ganze Sache erinnert mich auch an die DynaBook Vision von Allan Kay und Konsorten…

Auf den Punkt gebracht

Hat es Ward Cunningham in seinem Aufsatz
Don’t program a computer without a plug.

The Tide, not The Waves

heißt der Beitrag von Dijkstra zur 1997 anlässlich des fünfzigsten Geburtstages der ACM erschienen Aufsatzsammlung “Beyond Calculation – The Next Fifty Years of Computing”.

Dijkstras Grundthese ist, dass die Kernaufgabe der Infromatik die Meisterung von Komplexität mittles geeigneter Abstraktionen und Formalismen ist. Die Zukunft gehöre demnach der Vereinfachung.

Als Beispiel für den Erfolg der Formalisierung vergleicht er die OS/360 Entwicklung und die zeitgleiche Entwicklung eines Timesharing Systems der TH Eindhoven. Dabei gibt er einige tolle Sprüche von sich, wie z.B. “The difference was striking, showing once more that debugging is no alternative for intellectual control.”.

Schön auch die Argumentation dafür, dass die Möglichkeiten zur Vereinfachung und Formalisierung wohl noch eine Weile besteht. Er führt dabei auch die gelinde gesagt unglückliche Fertigungsmetapher für Softwareentwicklung an. Einfache Lösungen (die nicht falsch sind) erforderten eine gute Ausbildung und harte Arbeit und auch die Wertschätzung einer solchen Lösung erfordere eine gutes Bildungsniveau.

Alles in allem Lesenswert. Gespannt bin ich auch auf die Aufsätze von David Gelernter und Donald Norman im selben Band.

Care for your Craft

There is a brand new book on the Pragmatic Bookshelf. It stresses the importance to actively manage your knowledge portfolie (independant of your employer) to secure your chances in the job market.

There are two sample chapters that I found rather elusive: Be a Generalist and Be a Specialist.

And of course, I did like the somewhat controversial title.