Head First Software Development ist das neueste Buch aus der Headfirst Reihe bei O’Reilly. Der deutsche Titel dürfte dann „Softwareentwicklung von Kopf bis Fuß“ werden, sobald das Buch auf dem deutschen Markt erscheint. Ich habe das Buch auf englisch und möchte es jedem ans Herz legen.

Ich finde Head First Software Development sehr hilfreich, denn viele andere Entwicklungs-Bücher beschränken sich auf einzelne Teilaspekte wie OOA (Objektorientierte Analyse), OOD (Objektorientieres Design) oder auch Projektmanagement, während das Gesamtbild aus dem Auge verloren wird.
Bei der Softwareentwicklung gilt es verschiedene Aspekte und Prozesse zu einem Entwicklungsprozeß zu vereinigen.
Am Beispiel einer zu entwickelnden Applikation führt Head First Software Development durch die verschiedenen Phasen der Entwicklung, bringt jedoch hier Erfahrungen ein, die man sich nicht durch Fehlschläge selber erkaufen möchte.
Angenehm fällt auf, dass als Versionskontrolle Subversion zum Einsatz kommt – hier wird nicht aus anderen Büchern abgeschrieben und auf CVS rumgeritten, sondern aktuelle Erkenntnisse und Erfahrungen vermittelt.

Der Fokus liegt nicht darauf viel theoretischen Hintergrund zu vermitteln – in manch anderem Buch findet sich im Kapitel Versionskontrolle eine Erklärung aller Parameter und der verschiedenen GUI Versionen der Versionskontrollsoftware. Head First Software Development hilft stattdessen mit Problemen, wie sie in echten Projekten vorkommen (und da weiß ich wovon ich rede) umzugehen: Was passiert, wenn ein Commit Konflikte erzeugt? Wie geht man bei einem Merge vor, wann wird getaggt? Und – ganz wichtig – wie schreibt man gute Commit Messages, und warum sind diese unerläßlich.
Oft stand ich schon vor dem Problem, dass ich wußte, wie etwas geht – aber nicht wann etwas zum Einsatz kommen sollte. Genau diese Lücke wird in Head First Software Development angegangen – und der Entwickler ermutigt stets zu agieren. „Wenn Du ein Problem hast, warte nicht bis zum nächsten Tag (Stand-Up Meeting), sondern schnapp dir jemanden und besprich die Lage sofort“.
Einzelne Kapitel werden eher für Java Entwickler relevant sein, wenn hier Ant Building erklärt wird. (Hier wäre Maven vielleicht noch als weiterführender Hinweis schön gewesen, jedoch finde ich den „niemanden verwirren“ Ansatz im Grund besser als auf alle möglichen Dinge hinzuweisen.) Die Konzepte lassen sich natürlich auf .net, PHP oder auch grafische Projekte übertragen.
Das gleiche gilt für die Bereiche Planung, Bugfixing und Testen: Hier wird auf akademische Konzepte (ich sag nur Function-Point-Analyse) verzichtet, stattdessen erprobte Vorgehensweisen erklärt. Head First Software Development warnt auch vor Ansätzen, die einen Entwickler in die Irre führen können, wie z.B. beim Bugfixing: „Man könnte den zu einem Bug gehörigen Code fixen – aber eigentlich muß die Funktionalität hergestellt werden.“ Am Beispiel von verschiedenen Fehlertypen kommt schnell das „aha“ Erlebnis, welches ich bei der Head First Serie so sehr zu schätzen weiß.

Hilfreich, auf die reale Welt bezogen und den Fokus stehts auf der Anwendung als dem theoretischen Wissen, so läßt sich Head First Software Development charakterisieren – in meinen Augen ein Pflichtwerk für jeden, der ernsthaft Software entwickeln möchte oder muß.