The Pragmatic Programmer

veröffentlicht von gngn am Sa., 29.08.2015 - 05:37
Cover

Das definitive Buch für die erfahrene Programmiererin!

"If I'm putting together a project, it's the authors of this book that I want. ... And failing that I'd settle for people who've read their book." --- Ward Cunningham (Guru für Extreme Programming und Agile Software Entwicklung)

Nicht das einzige Buch, das ein Programmierer lesen sollte - aber wenn eine schon (etwas) Erfahrene mich nach einem guten Buch fragen sollte (und er rein zufällig wenig Zeit hat).

The Pragmatic Programmer: From Journeyman to Master von Andrew Hunt und David Thomas.

Nicht über eine Sprache, eine konkrete Technik und schon gar nicht über das nächste grosse Ding. Dafür: grundlegende Herangehensweisen, Denk- & Arbeitsstrukturen, worin stecke ich sinnvollerweise wieviel Aufwand (und worin nicht), und so weiter und so fort. All das präsentiert auf eine erfrischende, eben pragmatische Art und Weise.

Nur ein paar Beispiele:

  • DRY – Don't Repeat Yourself
    auch the Evil of duplication genannt. Jede doppelt vorhandene Information birgt die Gefahr, dass sie eben nicht mehr identisch bleibt (Caching lässt grüßen).
    Beim Programmieren gibt es nur drei Zahlen: null, eins, viele.
  • There Are No Final Decisions
    Nicht in Stein gemeißelt sind unsere Entscheidungen, sondern in den Sandstrand geschrieben...
  • Tracer Bullets
    Umreiße dein Projekt, so dass wesentliche Strukturen schnell erkennbar sind und zeige die möglichst früh und möglichst oft dem Kunden (hier grüßt mal wieder Extreme Programming und Agile Software Entwicklung)
  • Program Close to the Problem Domain
    Entwickle mit den Begriffen und der Sprache des Kunden - sonst redet ihr nur aneinander vorbei
  • Iterate the Schedule with the Code
    Im Laufe eines Projekts passt sich mit neuen Ansprüchen & Erkenntnissen eben öfter auch die Projektlaufzeit an (auch wenn Projektleiter & Co sowas nicht hören wollen)
  • Keep Knowledge in Plain Text
    aka The power of plain text: reiner Text bleibt immer lesbar, durchsuchbar, automatisiert durchsuchbar
  • Use the Power of Command Shells
    grep und find sind deine Freunde
  • Use a Single Editor Well
    Lerne einen Editor wirklich und nutze ihn. Auch wenn es in meinem Fall zwei Editoren sind (Eclipse, demnächst wohl ​PhpStorm und Ultra Edit) - eben pragmatisch ;)
  • Always Use Source Code Control
    Immer. Doch.
  • Don't Panic When Debugging
    Und immer ein Handtuch parat haben
  • The compiler isn't broken
    Nein, sehr wahrscheinlich ist nicht der Compiler, das Betriebssystem, der Server, ... Schuld - sondern dein selbstgeschriebener Code macht eben doch nicht ganz, was du wolltest. (Im orginal heißt es "select" isn't broken, ein Unix-Systemaufruf, der Infos zu File-Deskriptoren liefert. Auch nicht unbedingt das aktuellste Beispiel...)
  • Learn a Text Manipulation Language
    Programmieren arbeitet mit Text. Wir programmieren. Ein guter Grund, Texte mit Perl, awk oder sed zu behandeln. Und warum ich trotz fortgeschrittenem Drupalism immer Perlista bleiben werde.
  • You Can't Write Perfect Software
    Leider. Lebe damit und bereite dich, deinen Code und deine Kunden darauf vor.

Das Buch hat unbestritten ein Paar Jährchen auf dem Buckel; im Anhang wird bei Revisionskontrolle weder svn (2000) noch git (2005) erwähnt (beides gab's 1999 einfach noch nicht). Die dargestellten Probleme plagen uns aber immer noch und die Lösungsansätze sind immer noch treffend und sinnvoll.

Exkurs: Die einzige Stelle, mit der ich nicht so 100-prozentig übereinstimme, ist der Bezug auf die Broken-Windows-Theorie. Ich würde pragmatischer als die Autoren abschätzen, was da zerbrochen ist und ob der Aufwand im Verhältnis zum Gewinn steht. Aber ich stimme auch nicht mit der zugrundeliegenden politischen Theorie überein (Kritik zum Beispiel hier).
Ach ja: Tracer Bullets ist auch nicht die schönste aller Metaphern, aber wenigsten inhaltlich richtig.

Zurück zum Buch. Nur noch ein paar weitere der aufgeführten Tipps (hey, das soll ja eine Lese-Empfehlung sein und keine Zusammenfassung):

  • Design with Contracts (danke an Bertrand Meyer und Eiffel)
  • Use Assertions to Prevent the Impossible
  • Gently Exceed Your Users' Expectations
  • Test Your Software, or Your Users Will (inklusive einer Empfehlung für automatisiertes Testen mit Perl - ich liebe dieses Buch!)
  • Test Early. Test Often. Test Automatically

Eine vollständige Liste der Tipps bietet eine dem Buch beigelegte Karte, the Pragmatic Programmer Quick Reference Guide.

Soweit ich weiß, gibt es keine deutsche Übersetzung - aber hey, mit englischer Fachliteratur sollten wir eh alle klar kommen ;)

 

Addison Wesley; 1999; ISBN 0-201-61622-X

The Pragmatic Bookshelf (aber dass Pragmatiker dich zwingen wollen, Javascript anzuschalten ... hätte ich nicht erwartet)

Bei amazon (aber hey, du kannst es auch in Buchladen deines Vertrauens bestellen!)

 

 

Neuen Kommentar hinzufügen