"Code existiert nicht in einem Vakuum" – Interview mit Kevlin Henney

Claudia Fröhling

Die W-JAX München rückt langsam näher und das Programm wächst und gedeiht. So steht unter anderem die erste Keynote der Konferenz fest: Kevlin Henney wird uns etwas über „coolen Code“ erzählen – Claudia Fröhling sprach mit ihm vorab um herauszufinden, was damit wohl gemeint sein soll, und was hinter dem Projekt „97 Things every Programmer should know“ steckt.

JAX: „97 things every Programmer should know“ – da muss man sich aber viel merken! Kannst du uns ein bisschen was über Entstehung des Projekts erzählen? Wie bist du darauf gekommen?

Kevlin Henney: Die Inspiration kam vor ein paar Jahren als ich über ein Stück Code nachdachte das ich gesehen hatte, namentlich Code, der eine falsche Annahme über Floating-point numbers machte. Ich murmelte irgendwas wie „Verdammt, das ist eins von diesen Dingen, die jeder Programmierer wissen sollte!“, was mich dann sofort an das Buch „97 Things Every Software Architect Should Know“ erinnerte. Ich war an dem Projekt beteiligt, es wurde von Richard Monson-Haefel geleitet, und ich wusste dass O’Reilly eine 97-Things-Serie veröffentlichen wollte. Mein Interesse in Programmierstile und die Möglichkeit, dieses Projekt zu machen, haben perfekt zusammengepasst.

Was mich an diesem Projekt besonders fesselte war der Ansatz von Open Source und Crowd Source beim Sammeln der Ratschläge. Im Grunde könnte zwar jeder Beliebige eine Liste seiner persönlichen 97 Ratschläge verfassen, doch diese Ratschläge wären sehr wahrscheinlich alle im selben Stil und aus derselben Perspektive geschrieben. Das würde einerseits zwar offensichtlich für Konsistenz sorgen, würde andererseits aber unvermeidbarerweise auch unterschiedliche Sichtweisen und Vielfalt verhindern. Es gibt Beiträge für „97 Things…“, auf die ich alleine nie gekommen wäre, wenn ich nur meine eigene private Liste gemacht hätte.

JAX: Im Abstract für deine Keynote „Cool Code“ sagst du, dass Programmierer selten die Möglichkeit haben, Code zu studieren, jenseits der Zeilen, die sie selbst pflegen. Warum sollten sich Programmierer deiner Meinung nach mit fremdem Code befassen?

Kevlin: Ich denke, Programmierer haben schon die Möglichkeit, aber sie erkennen oft nicht, dass sie sich bewusst die Mühe machen und diese Möglichkeit wahrnehmen müssen.

Das wichtigste beim Programmieren ist Zusammensetzung. Wie bei jeder anderen Art von „Komposition“ gibt es Lektionen zu lernen. Wie können wir uns klar und wirksam ausdrücken? Welche Idiome vereinfachen oder verkomplizieren Code? Welche Techniken machen das Unmögliche möglich oder das Schwere einfach? Die Programmierung bietet eine enorme Masse an öffentlich zugänglichem Code durch den wir erfahren können, wie andere mit ähnlichen Aufgaben umgegangen sind.

Wenn du Creative Writing studieren würdest, kämst du nicht drum herum, Werke von anderen Autoren zu lesen. Wenn du Architektur studieren würdest, müsstest du dich mit fertigen Gebäuden befassen. Wenn du Mathematik studieren würdest, würdest du dich mit Herleitungen und Techniken anderer Mathematiker auseinandersetzen. Warum sollte das bei der Programmierung anders sein? Wissensarbeit erfordert Wissen. Fertiger Code ist eine Quelle für solch ein Wissen.

JAX: Du erwähnst im Abstract auch Code-Beispiele mit historischer Bedeutung. Ich bin etwas neugierig, was das für Beispiele sein können – willst du uns vorab schon was verraten?

Kevlin: Hinter uns liegt über ein halbes Jahrhundert Code. Ein Teil dieses Codes hat die Art und Weise, wie wir programmieren und wie wir über Programmierung denken, verändert. Die Erkenntnis von John McCarthy, dass eine Sprache in sich selbst geschrieben werden kann ist heute immer noch so unfassbar und relevant wie damals, als er Lisp erfunden hat. Auch wenn es Code „des Codes wegen“ gibt, existiert der meiste Code nicht in einem Vakuum, und manch Zeile hat eine direkte Verbindung zu historischen Ereignissen außerhalb der Software-Entwicklung. Nehmen wir zum Beispiel den Code aus dem Apollo Lunar Modul: er ist öffentlich zugänglich und überraschend aufschlussreich.

Kevlin Henney is an independent consultant and trainer. His work focuses on patterns and architecture, programming techniques and languages, and development process and practice. He has been a columnist for various magazines and online publications, including The Register, Better Software, Java Report, CUJ, and C++ Report. Kevlin is co-author of two volumes in the Pattern-Oriented Software Architecture series: A Pattern Language for Distributed Computing and On Patterns and Pattern Languages. He is the editor of 97 Things Every Programmer Should Know, and also contributed to 97 Things Every Software Architect Should Know.

Geschrieben von
Claudia Fröhling
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.