best books for programmersbest books for programmers
HappyCoders Glasses

Die besten Bücher für Programmierer
(aktualisiert 2022)

Sven Woltmann
Sven Woltmann
5. Februar 2022

In diesem Artikel habe ich eine Liste der besten Software-Engineering-Bücher zusammengestellt.

Die Liste enthält Bücher über Softwaredesign, objektorientiertes Design, Softwareentwicklung und Softwaretests.

Hier geht es zu Büchern über Java im Speziellen.

Falls du etwas entspannderes suchst, findest du hier einige Romane für Nerds.

Bücher für Softwareentwickler eignen sich selten als Hörbücher, da sie oft Code-Beispiele und komplexe Diagramme enthalten. Glücklicherweise gibt es einige Ausnahmen. Ich gebe daher zu jedem Buch auch an, ob es als Hörbuch geeignet und verfügbar ist.

Der pragmatische Programmierer: Ihr Weg zur Meisterschaft

der pragmatische programmierer - david thomas andrew hunt

von Andrew Hunt und David Thomas

Link zum Buch bei Amazon

Englishes Original: The Pragmatic Programmer. From Journeyman to Master: From Journeyman to Master

Dieses Buch enthält geballte, praktische Erfahrung aus mehreren Jahrzehnten Programmierpraxis. Es beschreibt die besten Praktiken und die größten Fallstricke vieler Aspekte der Softwareentwicklung anschaulich und mit zahlreichen Praxisbeispielen. Dabei liegt der Fokus auf der Erstellung von hochqualitativen, d. h. funktionierendem, flexiblem, wiederverwendbarem und wartbarem Code.

Das Buch ist sowohl für Anfänger als auch für fortgeschrittene Programmierer geeignet.

Anfänger finden in diesem Buch wertvolles Wissen, für das sie sonst Jahre oder Jahrzehnte bräuchten, um es durch eigene Erfahrung aufzubauen (wobei das Buch diese Erfahrung natürlich nicht ersetzen kann).

Forgeschrittene können in diesem Buch ihre eigene Erfahrung in strukturierter Form wiederfinden, sie festigen und vertiefen – und sicher noch den ein oder anderen zusätzlichen Tipp mitnehmen.

Neben zahlreichen Anekdoten und Analogien enthält jeder Abschnitt praktische Übungsaufgaben mit Lösungen am Ende des Buches. Ein Buch, das jeder Programmierer gelesen haben sollte.

Geeignet als Hörbuch? Nein, aufgrund zahlreicher Codebeispiele und Übungsaufgaben.

Clean Code - Refactoring, Patterns, Testen und Techniken für sauberen Code

Clean Code deutsch - Robert C. Martin

von Robert C. Martin

Link zum Buch bei Amazon

Englisches Original: Clean Code: A Handbook of Agile Software Craftsmanship

In diesem Klassiker der Softwareentwicklungs-Bücher geht es, wie der Name schon sagt, um sauberen Code: Code, der nicht nur funktioniert, sondern vor allem gut lesbar und wartbar ist.

Dazu gehören u. a.

  • aussagekräftige Namen,
  • kurze Funktionen, die eine (und nur eine) Aufgabe auf einer einheitlichen Abstraktionsebene ausführen,
  • aussagekräftige (oder gar keine) Kommentare (im Gegensatz zu solchen, die bloß wiederholen, was der Code tut, oder – schlimmer noch – was er früher einmal getan hat),
  • ein konsistenter Code-Stil,
  • eine saubere Klassenstruktur (dieser Punkt wird ausführlicher behandelt im zuvor vorgestellten "Agile Software Development: Principles, Patterns, and Practices")
  • eine Fehlerbehandlung, die die eigentliche Businesslogik nicht verschleiert,
  • Unit-Tests, optimalerweise testgetrieben entstanden.

Die vorgestellten Prinzipien werden anhand mehrerer konkreter Java-Fallstudien erläutert.

Das Buch ist einfach zu verstehen und durch eingestreute Anekdoten unterhaltsam zu lesen. Jeder Entwickler sollte dieses Buch lesen und sich die vorgestellten Prinzipien in Fleisch und Blut übergehen lassen.

Das Kapitel über Concurrency ist leider stark vereinfacht darstellt (ohne auf diese Tatsache hinzuweisen). Moderne Optimierungen wie Instruction Reordering und CPU-Cache-Effekte, werden nicht angesprochen. So kann sich der Leser nach Lektüre dieses Kapitels schnell in trügerischer Sicherheit wähnen und subtile Bugs produzieren, die im Nachhinein nur sehr schwer zu finden sind.

Um Sicherheit im Umgang mit Concurrency zu gewinnen, lege ich jedem Java-Entwickler Brian Goetz' "Java Concurrency in Practice" ans Herz.

Zum Schluss noch ein persönlicher Tipp zum Thema Code Style: Erfindet keinen eigenen Style. Erspart euch die zahllosen Diskussionen im Team und nehmt stattdessen einen existierenden, möglichst weit verbreiteten Stil, für den es Dokumentation, Checker, Formatierer und IDE-Plugins gibt. Ein gutes Beispiel ist Google’s Java Style Guide und die zugehörigen Tools.

Geeignet als Hörbuch? Nein! Auch wenn es dieses Buch unerklärlicherweise als Hörbuch gibt, ist es aufgrund der zahlreichen Code-Beispiele nicht als solches geeignet.

Design Patterns: Entwurfsmuster als Elemente wiederverwendbarer objektorientierter Software

design patterns - entwurfsmuster - erich gamma

von Erich Gamma, Richard Helm, Ralph E. Johnson, John Vlissides

Link zum Buch bei Amazon

Englishes Original: Design Patterns: Elements of Reusable Object-Oriented Software

Diesen Klassiker sollte eigentlich jeder Programmierer gelesen haben. „Eigentlich“, weil es sehr akademisch geschrieben und daher schwer zu lesen ist – insbesondere wenn man es als nicht Muttersprachler in der Originalausgabe liest.

Es beschreibt einige der wichtigsten Entwurfsmuster (wenn nicht die wichtigsten überhaupt) und ihre Beziehungen zueinander sehr detailliert.

Man merkt, dass das Buch schon 25 Jahre alt ist: die Codebeispiele sind aus heutiger Sicht teilweise veraltet und moderne Aspekte wie Concurrency werden komplett ignoriert. Dennoch sollte jeder Programmierer dieses Werk im Bücherregal haben und die klassischen 23 Entwurfsmuster kennen, erkennen und anwenden können.

Wer es etwas praktischer mag, dem kann ich den Online-Kurs „Java Design Patterns“ von Dr. Heinz Kabutz, dem Autor des bekannten JavaSpecialists‘ Newsletters, empfehlen.

Geeignet als Hörbuch? Nein, aufgrund zahlreicher Codebeispiele und Diagramme.

Clean Architecture - Gute Softwarearchitekturen: Das Praxis-Handbuch für professionelles Softwaredesign. Regeln und Paradigmen für effiziente Softwarestrukturierung.

clean architecture deutsch - robert c. martin

von Robert C. Martin

Link zum Buch bei Amazon

Englisches Original: Clean Architecture: A Craftsman's Guide to Software Structure and Design: A Craftsman's Guide to Software Structure and Design

Eine gute Architektur zeichnet sich laut Uncle Bob dadurch aus, dass Software mit minimalem Aufwand an neue und sich ändernde Anforderungen angepasst werden kann – und damit eine lange und profitable Lebensdauer hat.

Zunächst gibt das Buch eine Einführung in die Grundprinzipien des Software-Designs (SOLID-Prinzipien), Prinzipien des Komponentendesigns (Kohäsion und Kopplung) und Metriken zur Bewertung des Designs (Efferente und Afferente Kopplung, Instabilität, Abstraktheit). Alle Prinzipien und Metriken hat Uncle Bob bereits 2002 in “Agile Software Development: Principles, Patterns, and Practices” beschrieben; größtenteils wurden vollständige Abschnitte einfach übernommen.

Der Schwerpunkt des Buchs liegt auf der Herleitung und Beschreibung der von Uncle Bob so bezeichneten “Clean Architecture”:

Im Kern der Software stehen die fachlichen Komponenten, wie Entitäten und Anwendungsfälle. Diese werden klar abgegrenzt von sogenannten "sekundären Komponenten" – technischen Implementierungsdetails wie Datenbanken, Benutzeroberflächen oder Frameworks. Alle Abhängigkeiten fließen von den technischen Details zum Kern. Erreicht wird dies durch Dependency Inversion an den Komponentengrenzen.

Die Entkopplung erleichtert das Testen von Komponenten. Technologieentscheidungen (z. B. welche Persistenztechnologie oder welches Dependency Injection Framework verwendet werden soll) können aufgeschoben – oder später im Projekt relativ einfach revidiert werden.

Zahlreiche Praxisbeispiele helfen beim Verständnis der Theorie. Und wie alle Bücher von Uncle Bob ist auch dieses mit zahlreichen Anekdoten aus dem Berufsleben des Autors – bis zurück in die 1970er-Jahre – gespickt. Diese Anekdoten sind nicht nur unterhaltsam, sondern helfen auch, den langen evolutionären Weg zur modernen Softwarearchitektur zu verstehen.

Alle Softwarearchitektinnen und -architekten, Programmiererinnen und Programmierer sollten “Clean Architecture” gelesen haben – nicht nur, um moderne Softwarearchitekturen zu implementieren – sondern auch die theoretischen Grundlagen dahinter zu verstehen.

Geeignet als Hörbuch? Nein, aufgrund zahlreicher Diagramme und Codebeispiele.

Refactoring: Wie Sie das Design bestehender Software verbessern

Refactoring deutsch - Martin Fowler

von Martin Fowler

Link zum Buch bei Amazon

Englisches Original: Refactoring: Improving the Design of Existing Code

Mit diesem Klassiker der Softwareentwicklung hat Martin Fowler 1999 das Thema "Refactoring", das damals schon in der SmallTalk-Community bekannt war, einer breiten Entwicklergemeinde vorgestellt.

Das Buch beschreibt zunächst die grundlegenden Prinzipien des Refactorings und stellt diese an einem einführenden Beispiel anschaulich dar.

Anlass für ein Refactoring ist in der Regel ein "Code Smell", also Code, der zwar funktioniert, aber schwer zu lesen und zu warten ist. Durch die Benennung und Beschreibung weit verbreiteter Code Smells hat Fowler auch diese der Entwicklergemeinde bekannt gemacht.

Der größte Teil des Buches besteht aus einem Katalog von über 60 Refactorings. Für jedes Refactoring beschreibt der Autor die Motivation (d.h. die Situation, in der es anzuwenden ist), erklärt die Funktionalität Schritt für Schritt und demonstriert sie anschaulich anhand von Code-Beispielen in JavaScript.

Hier werden die Änderungen der zweiten Ausgabe deutlich: Fowler hat das Buch nicht bloß oberflächlich aufpoliert, sondern den gesamten Katalog umfangreich aktualisiert. So hat er Refactorings umbenannt, konsolidiert, hinzugefügt und die Java-Beispiele durch JavaScript-Varianten ersetzt. Wenn sich Unterschiede durch die Verwendung von schwach bzw. stark typisierten Programmiersprachen ergeben, gibt er entsprechende Hinweise.

"Refactoring" ist keine leichte Kost (bei den fortgeschrittenen Refactorings musste ich immer wieder eine Pause einlegen) – dennoch halte ich es für eine zeitlose Pflichtlektüre für alle Softwareentwickler.

Für Anfänger ist es ein hervorragender Einstieg in das Thema. Und Profis, für die Refactoring seit Jahren zum TDD-Zyklus gehört und die jeden Refactoring-Shortcut ihrer IDE auswendig kennen, werden das ein oder andere neue Refactoring kennenlernen – bzw. feststellen, dass Refactorings, die sie intuitiv durchgeführt haben, auch einen Namen und einen formalen Prozess haben.

Geeignet als Hörbuch: Nein, und zum Glück ist es auch nicht als solches erhältlich.

Domain-Driven Design: Tackling Complexity in the Heart of Software

domain driven design - eric evans

von Eric Evans

Link zum Buch bei Amazon

Eric Evans beschreibt in seinem Klassiker einen bahnbrechenden Ansatz der Softwareentwicklung, dessen Kernelement ein objektorientiertes Modell ist, welches das fachliche – also das in den Geschäftsabteilungen eines Unternehmens verwendete – in der Regel nicht formell definierte – Modell möglichst originalgetreu abbildet.

Die Entwicklung und Pflege eines solchen Modells erfordert eine enge Zusammenarbeit zwischen IT- und Fachabteilungen. Die Schaffung einer gemeinsamen, eindeutigen Sprache – der “ubiquitous language” – ermöglicht eine Kommunikation ohne Mehrdeutigkeiten und Missverständnisse.

Domänenmodell und enge Zusammenarbeit führen letztendlich zu einer Anwendung, die genau das tut, was sich die Fachabteilung von ihr erhofft hat – und die sich leicht an neue Anforderungen anpassen lässt.

Das Buch zeigt – unterstützt durch zahlreiche anschauliche Beispiele – einen systematischen Weg von den fachlichen Anforderungen hin zum detaillierten technischen Modell. Es bedient sich dabei eines Repertoires technischer Bausteinen – wie Entities, Value Objects, Aggregates, Services, Repositories und Factories – sowie übergeordneter Konzepten wie Bounded Context und Context Map, Shared Kernel und Anticorruption Layer sowie Core- und Subdomains, um nur die bekanntesten zu nennen.

Das Buch ist eines der wichtigsten in der Softwareentwicklung und auch nach zwei Jahrzehnten noch topaktuell. Es ist allerdings keine leichte Lektüre – idealerweise sollte man einige Jahre an Programmiererfahrung mitbringen und sich für das Durcharbeiten ein paar Wochen Zeit nehmen. Die investierte Zeit und Mühe werden sich lohnen und dich auf eine neue Ebene der Softwareentwicklung heben.

Geeignet als Hörbuch: Nein.

Clean Coder: Verhaltensregeln für professionelle Programmierer

Clean Coder deutsch - Robert C. Martin

von Robert C. Martin

Link zum Buch bei Amazon

Englisches Original: The Clean Coder: A Code of Conduct for Professional Programmers

Ausnahme-Programmierer ist nicht gleichzusetzen mit Profi.

In "Clean Coder" beschreibt der Software-Experte Robert "Uncle Bob" Martin die Denk- und Verhaltensweisen, die abseits des Schreibens von Code notwendig sind, um ein professioneller Programmierer zu werden.

Er gibt sowohl Anfängern als auch fortgeschrittenen Programmierern zahlreiche praktische Ratschläge, wie zum Beispiel:

  • Wie verhält man sich professionell unter Druck?
  • Wie reagiert man, wenn der Chef verlangt, dass eine Aufgabe schneller erledigt wird, als man es für möglich hält?
  • Wie kann man den Aufwand überhaupt verlässlich abschätzen?
  • Welche Tests sollte man schreiben, und wann?
  • Wie verhält man sich professionell gegenüber seinen Teamkollegen?

Man merkt, dass der Autor aus einem hart erarbeiteten Erfahrungsschatz schöpft. Dabei muss man keineswegs immer mit ihm übereinstimmen.

Ich denke zum Beispiel nicht, dass der Flow-Zustand mehr Nachteile als Vorteile hat. Ich komme durchaus auch beim Pair Programming in den Flow. Und es ist in Ordnung, allein im Flow eine Lösung zu finden und diese dann im Pair nachzuprogrammieren.

Das Buch enthält viele persönliche, unterhaltsame Anekdoten aus Bobs langer Karriere. Für jüngere Leser könnten die Geschichten aus den 60er und 70er Jahren, als man noch mit Lochkarten und Teleprintern arbeitete, allerdings etwas zu antiquiert sein ;)

Als Hörbuch geeignet? Ja! Dies ist eines der wenigen Programmierbücher über Praktiken jenseits des eigentlichen Codes. Du wirst in diesem Buch keine einzige Zeile Programmcode und kein einziges UML-Diagramm finden. Es ist daher absolut als Hörbuch geeignet.

Effektives Arbeiten mit Legacy Code. Refactoring und Testen bestehender Software

effektives arbeiten mit legacy code - michael feathers

von Michael C. Feathers

Link zum Buch bei Amazon

Englisches Original: Working Effectively With Legacy Code

Dass Tests wichtig sind, und dass Test-Driven-Development zu gut getesteter, gut strukturierter Software führt, weiß heutzutage jeder Programmierer. Leider war das nicht immer der Fall. Und so stehen wir oft vor der Herausforderung, ein System ohne Tests – ein also ein “Legacy System” nach Michael Feathers Definition – weiterzuentwickeln.

Doch wie gehen wir vor, wenn wir keine Testabdeckung haben, um sicherzustellen, dass unsere Änderungen nichts kaputt machen? Und wenn wir andererseits diese Tests nicht schreiben können, weil der Code zu komplex ist, viel zu viele Abhängigkeiten enthält und Logik und Präsentation miteinander verwoben sind?

Was können wir tun, wenn wir die zu testende Klasse nicht instanziieren können, weil wir ihrem Konstruktor ein Objekt übergeben müssen, das wir nicht einfach erzeugen können? Oder wenn die zu testende Methode auf die Datenbank zugreift – obwohl dieser Datenbankzugriff für die Funktionalität, die wir testen wollen, nicht notwendig ist?

Dieses Buch enthält einen Katalog von Mechanismen, um diese Abhängigkeiten zu lokalisieren und aufzubrechen. Und um den Code entsprechend zu modularisieren, wobei Modulgrenzen geschaffen werden – sogenannte “Seams” (deutsch: “Nähte”), an denen wir mit unseren Unit-Tests ansetzen können.

Die vorgestellten Strategien erlauben Änderungen mit minimalen Risiken. Die Refactoring-Features moderner IDEs erlauben es viele dieser Änderungen vollautomatisch durchzuführen. Änderungen, die es dann erlauben erste Tests zu implementieren, um darauf aufbauend weitreichendere Refactorings durchzuführen, die letztendlich die Codebasis in ein besseres Design überführen.

Der Autor erklärt alle Strategien anhand hervorragender, praxisnaher Beispiele, die hauptsächlich in Java und C++ geschrieben sind.

Leider wurde das Buch seit 15 Jahren nicht aktualisiert. Vor allem unerfahrene Programmierer sollten darauf achten, nicht jede Strategie dogmatisch umzusetzen. Für einige Mechanismen gibt es heutzutage bessere Alternativen; einige der Praktiken führen zu schlechterem, statt zu besserem Code; und das Thema Threadsicherheit – ein Kernthema in den meisten heutigen Unternehmensanwendungen – wird völlig außer Acht gelassen.

Beispielsweise braucht man heutzutage nicht mehr für jede zu mockende Klasse ein Interface. Mockito kann problemlos Klassen mocken, also Abhängigkeiten auflösen ohne ein Interface zu extrahieren. Und wer doch ein Interface extrahiert, beachte dabei bitte das Interface Segregation Principle! Die Aussage des Autors, "it's nice to have an interface that covers all of the public methods of a class" (S. 366), steht leider in krassem Widerspruch dazu.

Den Aufruf abstrakter Methoden aus einem Konstruktor heraus ("Extract and override factory method") sollte man besser vermeiden, wenn man nicht plötzlich einem nur teilweise initialisierten Objekt gegenüberstehen möchte. Aus gutem Grund verbietet C++ diese Praktik. Fünfundfünfzig Seiten nach der Einführung dieser Strategie rät der Autor schließlich vor deren Einsatz auch in Java ab.

Multithreading ist in fast keinem der älteren Klassiker ein Thema. Heutzutage kommt kein Programmierer mehr daran vorbei. Wenn du eine Klasse mit Strategien wie "Break Out Method Object" extrahierst, solltest du daher unbedingt einen Hinweis anbringen, dass die Klasse nicht threadsicher ist. (Alternativ kannst du Instanzvariablen durch geeignete Lock-Mechanismen schützen.)

Trotz der genannten altersbedingten Schwächen kann ich das Buch jedem Programmierer empfehlen, der mit Legacy-Code arbeiten muss. Erfahrene Programmierer haben sicherlich die eine oder andere Strategie schon einmal intuitiv angewendet. Andere Techniken mögen neu sein. So oder so, die Formalisierung hilft, die Strategien zu festigen, und ihre Namen verbessern die Kommunikation im Team.

Behalte nur zwei Dinge im Hinterkopf: Das Buch ist 15 Jahre alt, und für jede Regel gibt es eine Ausnahme!

Geeignet als Hörbuch? Nein, aufgrund zahlreicher Codebeispiele.

Extreme Programming: Das Manifest

extreme programming - das manifest - kent beck

von Kent Beck und Cynthia Andres

Link zum Buch bei Amazon

Englisches Original: Extreme Programming Explained: Embrace Change

In diesem bahnbrechenden Klassiker von 1999 und 2005 (2. Auflage, komplett überarbeitet mit Erkenntnissen aus fünf Jahren) stellt Kent Beck das von ihm entwickelte “Extreme Programming” vor.

Was für heutige Softwareentwickler nach gesundem Menschenverstand klingt, war damals revolutionär und hat die Art und Weise, wie wir Software entwickeln, grundlegend verändert. XP hat dazu geführt, dass wir Software mit besserer Qualität, in kürzerer Zeit, zu geringeren Kosten und mit höherer Kundenzufriedenheit entwickeln als noch vor zwanzig Jahren.

Das Buch stellt die – aus damaliger Sicht radikalen – Grundwerte und Prinzipien von XP vor – sowie die Praktiken, mit denen diese Grundwerte und Prinzipien in die Tat umgesetzt werden. Dazu gehören User Stories und inkrementelles Design, testgetriebene Entwicklung, kontinuierliche Integration mit schnellen Builds und Feedback sowie Pair Programming.

Was in den Anfängen der agilen Softwareentwicklung ein inspirierendes Buch für alle Programmierer gewesen sein muss, ist auch heute noch interessant. Es ist ein Geschichtsbuch, das uns in eine Zeit versetzt, in der XP, der Ursprung der modernen agilen Methoden, geboren wurde.

Geeignet als Hörbuch? Es wäre als Hörbuch geeignet, ist als solches allerdings nicht verfügbar.

Soft Skills: The Software Developer's Life Manual

soft skills - john sonmez

von John Sonmez

Link zum Buch bei Amazon

In diesem Buch gibt Entwickler und Life Coach John Sonmez hilfreiche Tipps zum Aufbau von Soft Skills, die ein Entwickler haben sollte, und die zu einem zufriedenstellenderen Leben als professioneller Softwareentwickler führen.

Es geht um die Themen Karriereentwicklung, Eigenvermarktung, Lernen, Produktivität, Investmentstrategien und finanzielle Sicherheit, Fitness und mentale Gesundheit – alles aus der Perspektive eines Softwareentwicklers.

Wer zur Abwechslung gerne einmal ein Buch für Programmierer ohne Quellcode und Diagramme lesen möchte, dem kann ich dieses Buch empfehlen.

Geeignet als Hörbuch? Ja, absolut. Besonders gefällt mir, dass John Sonmez seine Bücher selbst liest und immer wieder ein paar Absätze einstreut, die nicht im Buch vorhanden sind, z. B. wenn es zu einem Thema Neues zu sagen gibt.

Clean Craftsmanship: Best Practices, Standards und Ethik für die Softwareentwicklung

Clean Craftsmanship deutsch - Robert C. Martin

von Robert C. Martin

Link zum Buch bei Amazon

Englisches Original: Clean Craftsmanship: Disciplines, Standards, and Ethics

In seinem neuesten Buch erklärt uns Onkel Bob die grundlegenden Praktiken und Prinzipien des Software-Handwerks, die jeder professionelle Programmierer kennen und befolgen sollte.

Das Buch besteht aus drei Teilen:

Teil 1, “Disziplin”, beschreibt fünf Kerndisziplinen des Extreme Programming (XP): Testgetriebene Entwicklung (TDD), Refactoring, einfaches Design, Pair Programmierung und Akzeptanztests.

TDD nimmt fast die Hälfte des Buches ein. Onkel Bob lässt uns über seine Schulter blicken, während er testgetrieben mehrere Katas löst (auch als Videos verfügbar).

In Teil 2, "Standards", geht es darum, wie man kontinuierlich hohe Produktivität mit stabiler Qualität in Einklang bringt; es geht um Aufwandsschätzungen in Form von Wahrscheinlichkeitsverteilungen und um den Mut, Nein zu sagen, wenn der Chef uns seinen unrealistischen Zeitplan aufzwingen will.

In Teil 3, "Ethik", geht es um unsere Verantwortung gegenüber unseren Usern, unseren Kollegen und Managern, der Gesellschaft und – nicht zuletzt – uns selbst. Indem wir konsequent robusten und effektiven Code schreiben, wenden wir Schaden ab und schaffen Vertrauen in unsere Arbeit.

Wie alle Bücher von Onkel Bob ist auch dieses sehr zu empfehlen. Es ist leicht zu lesen und wird wie immer durch historische Hintergründe und viele persönliche Anekdoten des Autors aufgelockert (die sich allerdings in seinen Werken wiederholen).

Als Hörbuch geeignet? Das Buch ist derzeit nicht als Hörbuch erhältlich. Sollte sich dies ändern (andere Werke von Onkel Bob sind als Hörbücher erhältlich), würde ich aufgrund der zahlreichen Codebeispiele und Diagramme in Teil 1 (der immerhin zwei Drittel des Buches umfasst) davon abraten.

The Passionate Programmer - Der leidenschaftliche Programmierer: Wie Programmierer ihre berufliche Laufbahn erfolgreich gestalten

the passionate programmer - der leidenschaftliche programmierer - chad fowler deutsch

von Chad Fowler

Link zum Buch bei Amazon

Englisches Original: The Passionate Programmer: Creating a Remarkable Career in Software Development

Dieses Buch gibt Softwareentwicklern zahlreiche hilfreiche und praktische Tipps für beruflichen Erfolg und Karriereentwicklung.

Der Autor beschreibt, welche technischen Fähigkeiten du als Programmierer haben solltest, wie du dich technisch weiterentwickeln solltest, aber auch wie du deinen Karriereweg nicht dem Zufall überlässt, sondern deine persönliche Entwicklung selbst in die Hand nimmst, eigene Ziele verfolgst und motiviert bleibst diese zu realisieren.

Dazu geht er inbesondere darauf ein, wie du dich als Programmierer vermarktest und gibt zahlreiche kurze Handlungsempfehlungen.

Geeignet als Hörbuch? Ja, allerdings ist das Buch aktuell nicht als Hörbuch verfügbar.

Clean Agile: Die Essenz der agilen Softwareentwicklung

Clean Agile deutsch - Robert C. Martin

von Robert C. Martin

Link zum Buch bei Amazon

Englisches Original: Clean Agile: Back to Basics

Im Februar 2001 trafen sich 17 Programmierer – unter ihnen Robert C. Martin, alias Uncle Bob – um verschiedene leichtgewichtige Softwareentwicklungsprozesse (XP, Scrum und andere) auf einen gemeinsamen Nenner zu bringen. Heraus kam das inzwischen weltberühmte Agile Manifest.

Doch das, was viele heute als "agil" bezeichnen – mit seinem übermäßigen Fokus auf Prozessen, aber vernachlässigten technischen Praktiken – ist weit entfernt von dem, was die Schöpfer damals im Sinn hatten.

Die Mission diesen Buches ist es, die Fakten richtig zu stellen und einen Überblick über die ursprünglichen agilen Ansichten, Ideen, Werte und Prinzipien zu geben.

Uncle Bob schreibt – wie immer – locker und unterhaltsam und rundet die historischen Erzählungen mit zahlreichen persönlichen Anekdoten ab.

Eine klare Empfehlung für jeden Programmierer.

Als Hörbuch geeignet? Ja! Es gibt im ganzen Buch keine Zeile Code und nur zwei beispielhafte Diagramme: ein Velocity- und ein Burn-Down-Chart. Beides kann man schnell googeln.

The Complete Software Developer’s Career Guide

The Complete Software Developer's Career Guide - John Sonmez

von John Sonmez

Link zum Buch bei Amazon

Dieses Buch ist ein umfangreicher Ratgeber für eine erfolgreiche Karriere in der Softwareentwicklung.

Es beantwortet Fragen aus allen Stufen der Entwicklerkarriere: Wie starte ich meine Karriere? Wie bekomme ich eine Job? In welche Richtung kann und sollte ich mich spezialisieren? Wie gehe ich mit Vorgesetzten und Kollegen um? Wie verdiene ich mir eine Beförderung? Wie entwickle ich mich selbst weiter?

Das Buch ist einfach und unterhaltsam geschrieben, mit persönlichen Anekdoten angereichert und insgesamt sehr angenehm zu lesen.

Geeignet als Hörbuch? Ja, absolut. Besonders gefällt mir, dass John Sonmez seine Bücher selbst liest und immer wieder ein paar Absätze einstreut, die nicht im Buch vorhanden sind, z. B. wenn es zu einem Thema Neues zu sagen gibt.

Growing Object-Oriented Software, Guided by Tests

Growing Object-Oriented Software, Guided by Tests - Steve Freeman, Nat Pryca

von Steve Freeman und Nat Pryce

Link zum Buch bei Amazon

Dieses Buch gibt eine praktische Einführung in Test-Driven Development (TDD) – insbesondere in objektorientierter Programmierung.

Die Autoren (von denen einer der Entwickler von jMock ist) erklären, wie Unit Tests und Mock-Objekte zu einem sauberen, objektorientierten Design mit zuverlässigem und wartbaren Code führen.

In einer Fallstudie entwerfen und implementieren sie dazu testgetrieben ein Auktionssystem in Java.

Ich empfehle dieses Buch insbesondere jedem Java-Programmierer. Wenn Du einmal erlebt hast, wie Tests zu eleganterem Design und Code führen, wirst Du nie wieder ohne entwickeln wollen.

Geeignet als Hörbuch? Nein, aufgrund zahlreicher Codebeispiele.

Agile Software Development: Principles, Patterns, and Practices

Agile Software Development - Principles, Patterns, and Practices - Robert C. Martin

von Robert C. Martin

Link zum Buch bei Amazon

In diesem exzellenten Buch erklärt Robert C. Martin, auch bekannt als "Uncle Bob", Mitautor des agilen Manifests, die Kernkonzepte agiler Softwareentwicklung, von Extreme Programming (XP) und von "Test-First Design" (den Vorläufer von Test-Driven Design).

Er zeigt, wie man durch agiles Design und die Anwendung der SOLID-Prinzipien sauberen, wartbaren, objekt-orientierten Code schreibt.

Er demonstriert diese Prinzipien und die Anwendung bekannter Entwurfsmuster anhand dreier in C++ und Java entwickelter Fallstudien. Ich empfehle jedem Programmierer diese Fallstudien intensiv zu studieren und selbst zu implementieren.

Das Buch ist von 2002 und mittlerweile in einer neueren Auflage von 2013 verfügbar, die ich allerdings noch nicht gelesen habe.

Geeignet als Hörbuch? Absolut nicht! Das Buch ist voll von Quellcode und UML-Diagrammen, die für das Verständnis dieses Buchs unerlässlich sind.

Pattern Hatching: Design Patterns Applied

Pattern Hatching - Design Patterns Applied

von John Vlissides

Link zum Buch bei Amazon

Dieses Buch von einem der vier Autoren des Klassikers „Design Patterns“ gibt Einblicke in den Entwicklungsprozess und beschreibt die zehn größten Missverständnisse über Design Patterns.

Häufig verwendete Entwurfsmuster werden am praktischen Beispiel erläutert – im Gegensatz zu der sehr akademischen Herangehensweise im Klassiker. Es werden Variationen von etablierten Mustern vorgestellt, sowie zwei gänzlich neue Entwurfsmuster.

Man muss dieses Buch nicht unbedingt gelesen haben, doch für mich war es nach dem Durcharbeiten von „Design Patterns“ eine sehr angenehme und deutlich leichter verdauliche Lektüre.

Geeignet als Hörbuch? Nein, aufgrund zahlreicher Codebeispiele und Diagramme.