ubuntuusers.de

Buchrezension: Weniger schlecht programmieren

buchrezension.png

Man sollte sich seine Ziele nie zu hoch stecken. Dann lieber die Messlatte etwas niedriger hängen und die vorhandenen Hürden nach und nach nehmen. Das haben sich auch die Autoren des Buches „Weniger schlecht programmieren“ gedacht. Anstatt gleich ein guter Programmierer zu werden, fängt man hier lieber klein an.

Cover_Weniger_schlecht_programmieren.jpg
(C) O'Reilly

Zielgruppe

Auch wenn der Titel „Weniger schlecht programmieren“ witzig klingt und auch sofort das Interesse weckt, steckt dahinter eine einfache Botschaft. Das Buch richtet sich vor allem, aber nicht nur, an Programmiereinsteiger und Hobby-Programmierer, die zwar vielleicht schon seit Ewigkeiten programmieren, aber nicht wirklich verstehen, was sie tun. Der Copy&Paste-Code aus dem Internet zusammengeklaubt, funktioniert zwar irgendwie und durch Versuch und Irrtum konnte der Code auch angepasst werden, aber so richtig hat man keine Ahnung, was man tut. Genau für diese Personen ist das Buch geschrieben.

Hintergrund hiervon sind die vier Stufen der Kompetenzentwicklung. Diese bauen sich auf von der unbewussten Inkompetenz, bei der eine Person nicht weiß, was sie nicht weiß (die bekannten „unknown unknowns“ von Donald Rumsfeld), hin zur bewussten Inkompetenz, bei der die Person immerhin weiß, was sie nicht weiß, über die bewusste Kompetenz, bei der die Person weiß, was sie weiß und es auch anwenden kann, bis man schlussendlich bei der unbewussten Kompetenz ankommt, bei der die Anwendung des eigenen Wissens ganz unbewusst geschieht und wie von Zauberhand geht.

Die Autoren Kathrin Passig und Johannes Jander haben sich ihr eigenes Ziel ebenfalls niedrig gesteckt und wollen die Leser nur von Stufe 1 auf Stufe 2 heben, wobei manchmal vielleicht sogar die Stufe 3 erreicht wird.

Inhalt

Das Inhaltsverzeichnis kann man auf der O'Reilly-Webseite nachlesen, weswegen es hier nicht wiederholt wird. Einige Kapitel und Inhalte verdienen aber besondere Beachtung.

Passig und Jander gehen auf sehr viele bekannte Konzepte und Regeln ein, die man als weniger schlechter Programmierer kennen sollte. Das geht vom KISS-Prinzip („Keep it simple stupid“) über das YAGNI-Prinzip („You Ain’t Gonna Need It“) bis zum Paretoprinzip, was einigen auch als 80/20-Regel bekannt ist, d.h. dass die letzten 20% einer Aufgabe 80% der Gesamtzeit einnehmen.

Weniger bekannt, aber ebenso wichtig ist Eagleson's Law 🇬🇧. Dies sagt aus, dass jeder selbstgeschriebene Code, den man mehr als sechs Monate nicht betrachtet hat, genauso aussieht, als hätte ihn jemand anderes geschrieben. Wer selbst schon mehrere Jahre programmiert, weiß sofort, was das bedeutet. Das ist auch der Grund, wieso die Autoren in ihren ersten drei Kapiteln so intensiv auf vernünftige Namensgebung und Kommentare eingehen. Etwas, was ziemlich oft missachtet wird – dabei ziemlich oft unbewusst.

Wer in dem Buch viele Codebeispiele sucht, wird vergebens suchen. Bereits in der Einleitung weisen die Autoren darauf hin, dass das Buch kein Kodierhandbuch ist. Ob man die Klammern nun ans Ende der Zeile oder zu Beginn der nächsten Zeile setzt (C++-Programmierer wissen, was gemeint ist) oder wie viele Leerzeichen der Code eingerückt werden soll, ist egal (Python-Programmierer dürfen jetzt widersprechen). Wichtig ist, dass es einheitlich und klar verständlich ist, was man macht.

Neben dem Text – und es ist wirklich viel Text, den die 456 Seiten enthalten – gibt es auch immer wieder kleine Anekdoten von Kathrin Passig und Johannes Jander und deren Programmierer-Freunde aus dem Alltag. Vor allem die Geschichten, bei denen etwas schief ging, regen zum Denken an, ob man selbst vielleicht einmal diesen Fehler gemacht hat – und es womöglich gar nicht bemerkte.

Beispielsweise ist die Van Halen-Anekdote sehr interessant, dass diese bei ihren Bandauftritten keine braunen M&Ms im Backstagebereich bei der Verpflegung haben wollten. Diese vertraglich festgehaltene Regel diente allein dem Zweck zu prüfen, ob die Veranstalter der Musikveranstaltung den Vertrag wirklich gelesen und vor allem bis in kleinste Detail eingehalten hatten. Wenn es braune M&Ms gab, war die Wahrscheinlichkeit hoch, dass auch beim Bühnenaufbau irgendwas (Sicherheitsrelevantes) nicht passte.

Sehr interessant sind die Kapitel „Hilfe suchen“ und „Lizenz zum Helfen“. Das erste beschäftigt sich mit dem Thema, wie man richtig fragt, wenn man ein Problem hat. Das Thema ist deshalb interessant, weil es nicht nur für Programmierer relevant ist, sondern für jeden, der ein Problem hat. Viel zu oft schreibt man als Fehlerbeschreibung „Geht nicht!“ und ärgert sich dann darüber, dass einem keiner helfen will. Umgekehrt geht das zweite Kapitel darauf ein, wie man sich als Helfer zu verhalten hat, wenn man nicht gleich als arrogantes Arschloch herüberkommen will, das nur „RTFM“ durch die Gegend blökt oder penibel die Rechtschreibfehler eines Fragenden korrigiert.

Allen Nutzern und Helfern bei ubuntuusers.de kann man diese 21 Seiten wirklich nur empfehlen, um zu einem angenehmen Arbeitsklima zu finden. Interessant ist an der Stelle auch ein in Ubuntu ehemals vorhandener Bug, auf den im Buch hingewiesen wird. Wegen des Bugs wurde der Inhalt der Festplatte eines Nutzers gelöscht, weil dieser ein Skript „falsch“ – nämlich manuell – aufrief. Die Reaktion des Maintainers und die dazugehörige Diskussion kann man in Launchpad 🇬🇧 nachlesen.

Weitere interessante Kapitel sind die zum Unit-Testing und Refactoring. Auch auf Datenbanken und deren spezielle Probleme beim Programmieren und Benutzen wird eingegangen, sodass sich nicht nur Nutzer „klassischer“ Programmiersprachen durch das Buch angesprochen fühlen sollten.

Fazit

Schriftstellerin Kathrin Passig ist keine Unbekannte für die, die sich in der digitalen Welt heimisch fühlen. Dementsprechend ist es klar, dass sie weiß, wie man Inhalte vermitteln kann. Auch wenn sie selbst etwas programmiert, ist Johannes Jander der Software-Entwickler, der die Fehler gemacht hat, die man als schlechter Programmierer so machen kann. Zusammen ergibt sich ein wirklich gutes Team, dass zwischen interessanten, unterhaltsamen und lehrreichen Absätzen wechselt.

Sehr gut ist auch, dass das Buch von zwei deutschsprachigen Autoren geschrieben wurde, die auf einige Eigenheiten bei der Programmierung in deutscher Sprache eingehen. Sei es die Wahl der Sprache in den Kommentaren oder der Hinweis auf Unicode – etwas, womit sich viele englischsprachige Entwickler nicht herumschlagen (müssen), es aber vielleicht manchmal doch besser tun sollten.

Wichtig ist, was auch die Autoren im Buch erwähnen, dass viele Hinweise und Tipps nicht in der ganzen Fachwelt so gesehen werden. Es gibt viele Diskussionen (vor allem bei Namenskonventionen, was z.B. die Länge oder Aussehen von Methodennamen angeht) unter Programmierern und jeder hat da wohl seine eigene Meinung und Stil. Als Leser sollte man also immer im Hinterkopf haben, dass es nicht die eine Wahrheit gibt, wenn es ums Programmieren geht.

Etwas übertrieben sind vielleicht die vielen Hinweise auf Versionskontrollsysteme. In fast jedem Kapitel betonen die Autoren, dass ein Versionskontrollsystem nahezu unumgänglich ist. Sicherlich ist es hilfreich, aber oft ist die Einrichtung vor allem für Programmieranfänger auf der Kompetenzstufe 1 so komplex, dass dies übertrieben wirkt.

Insgesamt ist „Weniger schlecht programmieren“ ein sehr unterhaltsames Buch, auch wenn man selbst schon mehrere Jahre im Geschäft ist. Vor allem, wenn man sich für einen guten Programmierer hält, sollte man einmal einen Blick hinein werfen. Man kann immer noch etwas lernen. ☺ Zum Ende flaut das Buch etwas ab, da sehr viele Themen aufgenommen werden, die sicherlich wichtig sind, aber nicht ganze Kapitel einnehmen könnte. Das wirkt dann teilweise etwas zusammengeschustert – so wie einige Misc-Klassen auf der Arbeit. Auf der anderen Seite kann man die für einen uninteressanten bzw. nicht passenden Passagen so schneller überblättern.

Buchinformationen
Titel: Weniger schlecht programmieren
Autor: Kathrin Passig und Johannes Jander
Verlag: O'Reilly, Dezember 2013
Umfang: 456 Seiten
ISBN: 978-3-89721-567-2
Preis: 24,90 €