TDD erfolgreich missverstehen

Die Debatte über Test-Driven Development ist wieder aufgelebt. Ursache waren diverse provokative Äußerungen von David Heinemeier Hansson (DHH). Daraufhin hat sich Martin Fowler der Sache angenommen und eine durchaus interessante Diskussion mit Kent Beck und David Heinemeier Hansson geführt.

So weit, so positiv. Erwartungsgemäß hat DHH aber auch viel Applaus von Bloggern bekommen, die das Thema im besten Fall nur oberflächlich verstanden haben – von diesen “Hab’ ich doch schon immer gewusst”-Posts habe ich mal exemplarisch einen herausgegriffen, der mir besonders aufgestoßen ist.

Schon sprachlich ist der Post alles andere als gelungen. Es geht los mit dieser kuriosen Begriffsdefinition:

TDD are the initials of Test Driven Development. [...] TDD is more than writing tests. TDD is about writing tests first before you write every single component of your project.

Weiterlesen..

Rezension – The Fountainhead

Kürzlich hatte ich die Gelegenheit, das Buch The Fountainhead von Ayn Rand zu lesen (deutsch: Der ewige Quell). Rand gilt als großes Vorbild vieler neokonservativer Amerikaner und hat auch viele prominente Fans, darunter auch der frühere Fed-Chef Alan Greenspan. Wie ist die Anziehungskraft dieses Buches zu erklären?

Weiterlesen..

Yes we can – Kleinigkeiten

Zum Thema Englisch habe ich lange nichts mehr geschrieben. Also wird es Zeit für ein paar amüsante, aber durchaus praxisrelevante Kleinigkeiten. Oft geht es sogar nur um einen Buchstaben, der aber schon alles auf den Kopf stellen kann.

Zuerst der “Anwendungsfall”: Nach vollbrachtem Tagwerk wollen wir etwas essen (gehen). Vielleicht wollen wir auch einen (englischsprachigen) Kollegen fragen, ob er mitkommt. Was ist das englische Wort für Abendessen? Richtig, dinner — nicht zu verwechseln mit dem diner, das ist meistens die essende Person (deshalb heißt das von Edsger Dijkstra gestellte Problem der speisenden Philosophen im Englischen auch dining philosophers problem).

An Ort und Stelle warten wir auf den Kellner (we are waiting for him). Der Kellner bedient uns (he is waiting on us). Die falsche Präposition kann ein Verb im Englischen total verändern. Wer einfach mal put im Lexikon (oder bei Leo) nachschlägt, bekommt vielleicht schon das kalte Grausen (so ging es mir jedenfalls).

Vielleicht sind wir auch auf Geschäftsreise und steigen noch in einem Hotel ab. Wir tragen vielleicht auch einen Anzug (suit), und werden einquartiert in eine suite … wow! Aber Moment, suite im Englischen ist nicht unbedingt äquivalent zur Suite im Deutschen: Im Englischen wird auch ein versifftes Appartment zum Mieten, was aus mehreren Zimmern besteht, schon mal als suite bezeichnet. Überhaupt suggeriert das Wort suite Zusammengehörigkeit, das Zusammenfassen von Dingen, die logisch (oder praktisch oder marketingtechnisch) irgendwie zusammenzugehören scheinen: Man denke an product suite, test suite. Sweet, oder? Und genauso wird es auch ausgesprochen. Suit (“sjuuut”) suggeriert hingegen einzwängen, (ein-)passen. Eine test suite ist also sweet, nicht “sjuuut” (jedes Mal, wenn ein Deutscher test sjuuut sagt, stirbt irgendwo auf den Weltmeeren ein Segler).

Suit und suite sind also zwei unterschiedliche Dinge. Apropos unterschiedlich: Da gibt es noch ein Synonym lateinischen Ursprungs dazu: Separat. Mit ganz vielen a. Ditto im Englischen (separate(ly)). Bitte nicht seperate!

So ein gemeiner kleiner Buchstabe kann also viel ausmachen. Auf einem koreanischen peer-to-peer-Kabel habe ich mal was von “pear-to-pear” gelesen (womit wir wieder beim Essen wären). Der TCP dump wird auch mal zum TCP dumb.

Aber das ist alles nur die Spitze des Eisbergs. Bestimmt kennt ihr noch mehr Beispiele in der Praxis. Für heute soll es erstmal gut sein…

 

Porträt Robert Lauervon Robert Lauer. Robert ist seit Februar 2011 als Senior Software Engineer bei der Accelerated Solutions GmbH unterwegs. Seine aktuellen Schwerpunkte sind Test-Driven Development und Domain Specific Languages (DSLs).

TDD Design Metaphor Considered Harmful

One of the essential features of Test-Driven Development (TDD) is that you write (failing) tests before you write production code.

Obviously, this confuses people. When I started out with TDD it confused me just like anyone else who first sets foot on this new territory. Does it matter when I write tests? Can’t I just write the tests right after writing the code? As it turns out, yes, it does.

Weiterlesen..