5 Bücher die jeder Software-Entwickler kennen sollte
Ich werde immer mal wieder nach Buchempfehlungen gefragt. Passende Tipps zu geben ist nicht einfach, da je nach Arbeitsgebiet und Vorwissen ganz unterschiedliche Themen im Blickpunkt stehen. Es gibt aber einige Bücher die ich immer wieder empfehlen kann. Die darin behandelten Themen sind nicht technologiespezifisch sondern behandeln wichtige Konzepte und Techniken. Die 5 Bücher die ich hier nenne ergänzen sich, bieten aber auch für sich alleine einen Mehrwert.
Hinweis: Seit Januar 2014 gibt es hier eine aktualisierte Liste mit noch besseren Büchern.
Refactoring
Trotz seines Alters ist Refactoring nach wie vor das Standardwerk zur Restrukturierung von Code. Der ausführliche Katalog mit Strategien zur Verbesserung der Codebasis ist aus meinem täglichen Entwicklerleben nicht wegzudenken.
Dies bedeutet keinesfalls dass ich alle darin vorgestellten Methoden auswendig kenne. Aber Refactorings wie das umbenennen von Variablen oder das Extrahieren von Methoden sind Dinge die jeder beherrschen sollte. Diese sind sehr einfachen und verbessern den Code doch enorm.
(ISBN: 978-0-201-48567-7 | detaillierte Rezension)
The Art of Unit Testing
Roy Osherove liefert das aus meiner Sicht bisher beste Buch über Unit Testing. Es gibt viele Bücher die gut sind, seine Erklärung von komplexeren Themen wie dem Mocken von Abhängigkeiten ist aber immer noch unerreicht.
Das Buch bietet viele praxisrelevante Beispiele die zeigen wie man auch komplexere Bereiche testen kann. Gerade diese Teile sind in der Praxis meist der Grund weshalb man den Vorsatz Unit Tests zu schreiben aufgibt. Wie bei allem gilt aber auch hier, dass man selber denken muss und Tipps auch kritisch hinterfragen soll.
(ISBN: 978-1-933988-27-6 | detaillierte Rezension)
Dependency Injection in .Net
Wendet man Unit Tests konsequent an wird der Code oft modularer. Um diese schön getrennten Teile zu einer Anwendung kombinieren zu können fallen schnell einmal die Begriffe Dependency Injection und Inversion of Control. Das Buch von Mark Seemann liefert einem eine sehr gute Einführung und auch das nötige Hintergrundwissen um eine praxistaugliche Anwendung aufzubauen.
Mir gefällt daran das nicht nur gezeigt wird worauf man achten muss sondern auch wie man merkt dass man auf dem falschen Weg ist.
(ISBN: 978-1-935182-50-4 | detaillierte Rezension)
Clean Code
Unit Tests, Refactorings und Dependency Injection sind Techniken die den Code sauberer machen. Wenn einem diese Richtung gefällt ist Clean Code von Robert C. Martin der nächste Schritt.
Sein Buch geht den Weg weiter und verbindet verschiedenste Erkenntnisse in der Software-Entwicklung der letzten Jahre zu einem Ganzen. Bei Clean Code ist es aus meiner Sicht aber besonders wichtig das man das Ziel bei all den Regeln nicht aus den Augen verliert. Verständlicher Code sollte immer vor einer in Stein gemeisselten maximalen Anzahl Zeilen für eine Methode gehen.
(ISBN: 978-0-13-235088-4 | detaillierte Rezension)
Debug It
Trotz Unit Tests wird man immer mal wieder vor einem Bug stehen. Wer gerne alternativen zu mehrstündigen Einsätzen des Debuggers hätte sollte sich dieses Buch anschauen. Paul Butcher liefert mit seinem Buch viele Tipps und Tricks damit man bei der Bugbeseitigung nicht nur im Dunkeln herum stochert.
Das Buch zeigt was die wesentlichen Schritte der Fehlerbehebung sind und worauf man nicht verzichten darf. Ein beherzigen dieser Vorschläge kann einem Stunden bei der Fehlersuche ersparen.
(ISBN: 978-1-9343-5628-9 | detaillierte Rezension)
Soweit meine Liste von Büchern die ich als „Must-Read“ bezeichne. Ich würde mich freuen zu erfahren was andere Entwickler als unverzichtbare Bücher auflisten.