Ich muß zugeben, dass ich mir schon viel zu viel Programmierbücher gekauft habe. Leider. Denn die meisten erscheinen auf den ersten Eindruck zwar gut aufgebaut und inhaltsreich, auf den zweiten Blick, oder spätestens dann, wenn man ein konkretes Problem zu lösen hat, helfen sie kaum weiter als ein Blick in die MSDN Bibliothek. Meistens ist MSDN besser, und das gilt insbesondere, wenn man Bücher aus dem deutschsprachigen Bereich betrachtet (natürlich gibt es Ausnahmen). Mag daran liegen, dass der Zeitdruck so hoch ist, schnell was zu produzieren. Das Resultat sind aber dann meistens lediglich (mehr oder weniger gut) umformulierte Auszüge aus der Originaldokumentation.
Dieses Buch ist definitiv anders (und wenn nicht immer wieder was anderes dazwischen käme, seufz, hätte ich was ähnliches, allerdings mit einer sehr viel spezielleren Zielgruppe und demzufolge völlig anderen Beispielen, auch schon lange selbst geschrieben...). Es kommt eigentlich ziemlich unspektakulär daher. "Professionell entwickeln mit Visual C# 2010. Das Praxisbuch.". Seriöser, langweiliger Titel, erinnert durchaus an ähnliche Titel anderer Bücher. Die erste Überraschung birgt das Inhaltsverzeichnis. Kapitel 2: "Architekturentwurf"? Kapitel 3: "Softwaredesign"? Kapitel 4: ".NET für Fortgeschrittene"? Endlich mal nicht der unvermeidliche Überblick über .NET, die 60-100 Seiten lange Einführung in C#, die Einführung in Objektorientierung, die unverzichtbaren Grundlagen der Klassenbibliothek, die n-te Iteration immer derselben (oft trivialen, unzusammenhängenden, keinen wirklichen praktischen Gewinn versprechenden) Beispiele?
Für mich macht das alles Sinn. Wenn man (ok, immer auch mit dem einen oder anderen Wissensloch) seit Jahren C# programmiert, besteht das Hauptproblem üblicherweise nicht mehr im Schreiben von syntaktisch und semantisch korrekten Code, und auch die meisten Standardklassen, die man braucht, sind bekannt, der Aufbau von .NET, seine Integration in Windows und die Interaktion mit Win32 oder COM ist auch weitgehend klar, und wenn mal was fehlt, kann die Doku sehr schnell helfen. Auch die Beispiele treffen meist eh nicht das eigene Problem, und für wirkliche Einsichten sind sie zu trivial. Mir, und vielleicht vielen anderen, fehlt bei vielen Titeln der Blick für das Ganze, und das besteht eben weniger aus dem Schreiben einiger Methoden, die eine bestimmte Funktionalität liefern, sondern vor allem auch in sinnvoller, geplanter, systematischer Integration von speziellen Modulen in eine größeres Anwendungssystem.
Michael Geirhos schafft es, auf ca. 160 verständlich formulierten Seiten einen ausgewogenen Blick auf wesentliche Aspekte der Planung und Gestaltung von Softwaresystemen zu werfen, die auch eher unerfahrenen Entwickler zugänglich sein sollten. Dies ist ein kluger Anfang, und auch ein sinnvoller, beginnt die Arbeit an einer Software doch *niemals* mit dem Schreiben von Code. Dass der Leser die Grundlagen dessen beherrscht, setzt er voraus, ebenso die Grundlagen von .NET, er setzt etwas höher an. Die Abschnitte des Kapitels ".NET für Forgeschrittene" stellen dabei durchaus eine subjektive Auswahl des Autors dar, ich empfinde diese Auswahl allerdings als durchaus glücklich, da sie mit Themen wie z.B. Parallelverarbeitung, Regulären Ausdrücken, Lambda-Ausdrücken oder Erweiterungsmethoden wichtige Problembereiche aufgreifen, die noch nicht in jedem anderen Buch totdiskutiert wurden. Einzige "Kritik", die ich üben könnte, wäre, dass mir das Kapitel einfach zu kurz ist....
Durchaus gelungen empfinde ich auch Kapitel 5, "Professionell Codieren", das eine Reihe sinnvoller und wichtiger Hinweise für das Schreiben von gutem, les- und wartbarem Code gibt. Zwar hat, nach meinem Dafürhalten, Steve McConnell mit "Code Complete" (2nd ed.) die definitive Referenz zum Schreiben von sauberem Code für den Praktiker geliefert, aber das Kapitel 5 im Buch von M. Geirhos stellt als solches eine wirklich gute Auswahl von Hinweisen für guten Stil zur Verfügung.
Meine persönlichen Favoriten in diesem Buch sind allerdings die Kapitel 6 und 8, zur Windows Communication Foundation und zur Window Workflow Foundation 4. Beide Kapitel sind ziemlich umfangreich und behandeln die vorgestellten Themen in verdaulichen Schritten ausgesprochen verständlich und praktisch nachvollziehbar. Das Tutorial in Kap. 6.12 zeigt, wie geradezu lächerlich einfach die Verwendung von Message Queueing sein kann. Sehr positiv überrascht hat mich aber vor allem das Kapitel zur Workflow Foundation 4, insbesondere angesichts der Tatsache, dass dazu derzeit im deutschsprachigen Raum meines Wissens überhaupt noch keine Literatur vorliegt, die auch nur ansatzweise mehr bietet als die Originaldoku. Und deren Tiefe ist derzeit noch *ziemlich* begrenzt.
Abgerundet wird das Buch schließlich durch zwei weitere Kapitel, die nicht unbedingt Standardthemen der o.g. Programmierbücher sind: Kap. 9, "Softwaretests" und Kap. 10, "Softwarepflege". Sollte ich eine Empfehlung der Lesereihenfolge geben, würde ich empfehlen, die Kapitel 2, 3, 9 und 10 im Zusammenhang zu lesen, während sich die anderen Kapitel ziemlich gut unabhängig voneinander studieren lassen, also besser dann, wenn man beispielsweise plant, eine verteilte Anwendung mit WCF zu schreiben, oder wenn man realisiert, dass man ohne WF4 eigentlich nicht mehr leben möchte.
Zusammenfassend möchte ich sagen, dass mit diesem Buch ein außerordentlich gut lesbares, phasenweise sogar ziemlich lässig (das ist positiv gemeint!) geschriebenes Buch vorliegt, dem man nicht nur anmerkt, dass es dem Autor ein Bedürfnis ist, beim Leser ein Verständnis der behandelten Materie zu schaffen, sondern auch, dass der Autor praktisch kompetent umzusetzen versteht, was er beschreibt. Beides ist für deutschsprachige .NET Bücher keineswegs selbstverständlich. Ob wirklich jedes kleinste Detail immer stimmt, kann ich nicht beurteilen, aber selbst wenn das nicht der Fall wäre, könnte das die Qualität dieses Buches nicht mindern. Dass das Buch keinen Aspekt wirklich erschöpfend behandeln kann, dürfte klar sein, das gelingt aber nicht einmal Monographien zu einer speziellen Technologie, wie z.B. der WCF oder WF4, und ist auch nicht wirklich nötig, gerade weil das Buch durch die sichere Fähigkeit des Autors ungemein gewinnt, sich auf die praktisch relevanten Themen zu konzentrieren und marginale, durch Nachschlagen in der Doku leicht zu erschließende, Fragen zu ignorieren.
Gibt es auch was, was ich bemängeln könnte? Klar, gibts immer. In meinem Fall ist es die Auswahl der Beispiele. Ich kann leider mit einer Bizziniss-Anwendung wie der Kalimba Sunfood GmbH nix anfangen, obwohl es sich um ein ausgesprochen gutes und auch durch das ganze Buch hindurch gut aufbereitetes umfangreiches praktisches Beispiel handelt. Ich kann mich eben nur nicht dazu motivieren, eine Anwendung zu entwickeln, die sich mit betrieblichen Abläufen wie Verkauf, Marketing oder Buchhaltung beschäftigt. Finde ich langweilig. Aber das ist höchstens mein eigenes Problem und ändert meine Einschätzung des Buches in keinster Weise.
Ach ja: Ein Lob gebührt natürlich auch Galileo Press, einem der herausragenden Verlage für Entwickler-Literatur in Deutschland mit einem guten Gespür dafür, wie man hervorragende Bücher macht.