<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: TDD ist keine Wissenschaft!</title>
	<atom:link href="http://ilker.de/tdd-ist-keine-wissenschaft/feed" rel="self" type="application/rss+xml" />
	<link>http://ilker.de/tdd-ist-keine-wissenschaft</link>
	<description>Creative Computing.</description>
	<lastBuildDate>Tue, 31 Jan 2012 12:27:32 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: .NET Stories: Digitale Erfahrungen &#187; Blog Archive &#187; Auf dem Eisberg</title>
		<link>http://ilker.de/tdd-ist-keine-wissenschaft#comment-319</link>
		<dc:creator>.NET Stories: Digitale Erfahrungen &#187; Blog Archive &#187; Auf dem Eisberg</dc:creator>
		<pubDate>Thu, 01 Jul 2010 15:06:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=420#comment-319</guid>
		<description>[...] meine Perspektive eines Coding Dojo’s) schon angedeutet, dass ich mich gerade mit dem Thema TDD &amp; Planung noch deutlich sowie ausführlich äußern möchte und werde. Zurück zur [...]</description>
		<content:encoded><![CDATA[<p>[...] meine Perspektive eines Coding Dojo’s) schon angedeutet, dass ich mich gerade mit dem Thema TDD &amp; Planung noch deutlich sowie ausführlich äußern möchte und werde. Zurück zur [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ralf Westphal</title>
		<link>http://ilker.de/tdd-ist-keine-wissenschaft#comment-318</link>
		<dc:creator>Ralf Westphal</dc:creator>
		<pubDate>Sun, 22 Nov 2009 17:12:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=420#comment-318</guid>
		<description>Hallo, Ilker!

Bin ich gekränkt gewesen wegen &quot;Trara&quot; und &quot;Tamtam&quot;? Hm... vielleicht ein wenig. Mehr noch aber hat mich gestört, dass ich nicht mal verstanden habe, was du mit &quot;Trara&quot; und &quot;Tamtam&quot; überhaupt kritisiert hast. Ich habe bei dir kein Beispiel gesehen, wo du konkret benannt hättest, was denn das Zuviel an Golos und/oder meinen Ausführungen war. Dass wir überhaupt etwas gesagt haben? Dass wir die für dich falsche Terminologie benutzt haben? Dass wir ein unerhebliches Thema behandelt haben? Ich verstehe nicht, worauf du deine Kritik beziehst.

Und jetzt noch zum Zustandstestpattern: Du schreibst &quot;Ich verstehe den Beitrag “Zustand als Abhängigkeit” als eine Heranleitung zum Interaktionstest, weg vom Zustandstest.&quot; Und ich sage wieder: Nein. Ich will nicht auf den Interaktionstest hinleiten. Ich will eine Form von Zustandstest zeigen. Deshalb finde ich das auch gar nicht umständlich, sondern sehr direkt.

Der Unterschied zwischen beiden ist doch klar: Beim Zustandstest teste ich den Zustand. Haha. Das ist offensichtlich ;-) Wenn ich eine Methode auf Objekt x aufrufe und anschließend schaue, ob der Zustand von x wie gewünscht ist, dann ist das ein Zustandstest. Oder nicht? Genau das kann man mit dem Pattern, das ich dargestellt habe, machen.

Bei einem Interaktionstest befrage ich eben nicht den Zustand. Ich prüfe hingegen, wenn SUT x auf object y zugreift, ob an y die erwarteten Parameter übergeben wurden und das von y zurückgelieferte Resultat korrekt verarbeitet wurde. Und ich prüfe, ob y überhaupt aufgerufen wurde. Sowas findest du aber in meinem Posting nicht. Dazu will ich auch keine Hilfestellung geben. Ich verstehe leider nicht, wie du das also bei mir rauslesen kannst.

Einerlei.

Wir wollen dasselbe erreichen. Ist doch schön ;-)

-Ralf</description>
		<content:encoded><![CDATA[<p>Hallo, Ilker!</p>
<p>Bin ich gekränkt gewesen wegen &#8220;Trara&#8221; und &#8220;Tamtam&#8221;? Hm&#8230; vielleicht ein wenig. Mehr noch aber hat mich gestört, dass ich nicht mal verstanden habe, was du mit &#8220;Trara&#8221; und &#8220;Tamtam&#8221; überhaupt kritisiert hast. Ich habe bei dir kein Beispiel gesehen, wo du konkret benannt hättest, was denn das Zuviel an Golos und/oder meinen Ausführungen war. Dass wir überhaupt etwas gesagt haben? Dass wir die für dich falsche Terminologie benutzt haben? Dass wir ein unerhebliches Thema behandelt haben? Ich verstehe nicht, worauf du deine Kritik beziehst.</p>
<p>Und jetzt noch zum Zustandstestpattern: Du schreibst &#8220;Ich verstehe den Beitrag “Zustand als Abhängigkeit” als eine Heranleitung zum Interaktionstest, weg vom Zustandstest.&#8221; Und ich sage wieder: Nein. Ich will nicht auf den Interaktionstest hinleiten. Ich will eine Form von Zustandstest zeigen. Deshalb finde ich das auch gar nicht umständlich, sondern sehr direkt.</p>
<p>Der Unterschied zwischen beiden ist doch klar: Beim Zustandstest teste ich den Zustand. Haha. Das ist offensichtlich <img src='http://ilker.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Wenn ich eine Methode auf Objekt x aufrufe und anschließend schaue, ob der Zustand von x wie gewünscht ist, dann ist das ein Zustandstest. Oder nicht? Genau das kann man mit dem Pattern, das ich dargestellt habe, machen.</p>
<p>Bei einem Interaktionstest befrage ich eben nicht den Zustand. Ich prüfe hingegen, wenn SUT x auf object y zugreift, ob an y die erwarteten Parameter übergeben wurden und das von y zurückgelieferte Resultat korrekt verarbeitet wurde. Und ich prüfe, ob y überhaupt aufgerufen wurde. Sowas findest du aber in meinem Posting nicht. Dazu will ich auch keine Hilfestellung geben. Ich verstehe leider nicht, wie du das also bei mir rauslesen kannst.</p>
<p>Einerlei.</p>
<p>Wir wollen dasselbe erreichen. Ist doch schön <img src='http://ilker.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>-Ralf</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ilker Cetinkaya</title>
		<link>http://ilker.de/tdd-ist-keine-wissenschaft#comment-317</link>
		<dc:creator>Ilker Cetinkaya</dc:creator>
		<pubDate>Wed, 18 Nov 2009 07:05:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=420#comment-317</guid>
		<description>Morgen Ralf!

&quot;Wir sind uns in der grundlegenden Sache einig: automatisiertes Testen ist wichtig, und TDD ist noch besser.&quot; -&gt; Ich gebe Dir vollkommen Recht.

Nun, dass jeder seinen eigenen Lernprozess hat ist unumstritten. Ich habe meinen, und alle anderen haben auch einen. Ich bin mir der unterschiedlichen Niveaus, Geschwindigkeiten und Herangehensweisen durchaus bewußt.

Aus Deinem Kommentar lese ich eine gekränkte Auffassung gegenüber meiner Zirkus-Metapher, die ich symbolisch für die unnötige Überzeichnung von Sachverhalten herangenommen habe. Wenn ich Dich damit verletzt haben sollte, dann tut mir das Leid. Ich möchte, dass Du erkennst dass das nicht meine Intention war. Ich gönne jedem seinen Schreibstil, genau in dem selben Maße wie Du jedem seine Meinung gönnst.

Dennoch finde ich meine Metapher treffend. Sogar &quot;Trara&quot; und &quot;Tamtam&quot; möchte ich hier stehen lassen. Es soll klarstellen, dass ich *generell* künstlich verkomplizierte Kommunikation (verbal und nonverbal) für den eigentlichen Transport der Information hinderlich finde. Der eben geschriebene Satz zum Beispiel ist künstlich komplex. Genau das selbe (nicht *ab*wertend, sondern *be*wertend) könnte ich auch so schreiben: &quot;Man kann auch einfache Sachverhalte ohne unnötigen Trara und Tamtam rüberbringen&quot;. Ist doch ok, oder was meinst Du? Klar ist es ein stückweit eine Kritik. Aber darum geht es ja. Ich möchte *konstruktive* und *wertschätzende* Kritik an *generell* künstlich verkomplizierter Kommunikation üben. Wenn das nicht so rübergekommen ist, dann hoffentlich jetzt.

Du kommentierst weiterhin (über Deine Intention Deines Beitrags):
&quot;Ja, wie überprüfe ich den Zustand eines SUT, wenn es keinen Zugriff darauf bietet? Dafür habe ich ein Pattern vorgestellt.&quot;

Nun, aus meiner Perspektive reduziert sich das auf die Testmethodik. Ob Du nun einen Interaktionstest machst (also das von Dir sog. &quot;Zustandstestpattern&quot;) oder einen Statustest, kann man Abhängig von der gegebenen Situation entscheiden. Ohne *abwertend*, aber bestimmt *bewertend* zu wirken: Ich verstehe den Beitrag &quot;Zustand als Abhängigkeit&quot; als eine Heranleitung zum Interaktionstest, weg vom Zustandstest. Zitat: &quot;Vermeiden Sie, spezielle Zugriffsmethoden für Zustand nur zum Zweck des Testens einzurichten. Allemal, wenn sie sie nicht wirklich isoliert testen können.&quot; Was ja schon mal prinzipiell gut ist. Doch ich verstehe das als eine Gegenüberstellung von Interaktionstests vs. Statustests. Noch deutlicher wird es, wenn man andere Beiträge zum Thema &quot;Interaktionstest vs. Statustest&quot; liest und vergleicht, z.B. den Klassiker von Miller (http://codebetter.com/blogs/jeremy.miller/articles/129544.aspx).

Zu &quot;TDD != Wissenschaft&quot; meinst Du:
&quot;Ist es dann aber nicht merkwürdig, dass soviele Entwickler soviele Schwierigkeiten damit haben, all das in ihre Projekte zu übernehmen?&quot;

Nein ist es nicht. Denn viele Entwickler sind noch festgefahren oder aber festgebunden. Es ist vergleichbar mit Scrum, da gebe ich Dir Recht. Ich möchte - wiederum nicht *abwertend* sondern *bewertend* als Beipiel eine Aussage von Golo nehmen:

Golo zum Thema TDD != Wissenschaft:
&quot;Ich (ich ganz persönlich) möchte mir Arbeit nur sehr ungerne öfter als ein Mal aufhalsen. Deshalb möchte ich vorher (!) wissen, worauf ich mich einlasse und mir vorher (!) ein durchdachtes Konzept erarbeiten, an dem ich mich orientieren kann.&quot;

Würde man z.B. diese Aussage aus dem Kontext von TDD rausnehmen und in den Kontext von Scrum stecken, dann wäre schnell großes Aufsehen. Denn in den agilen Methoden (sei es Managementmethode oder Softwareentwicklungsmethode) wird genau mit vielen Mitteln versucht, solche Ansichten zu vermeiden. Es heisst &quot;Embrace Change&quot;, methodisch gesehen. Es heisst &quot;Refactoring&quot;, technisch gesehen. Beide Male geht es darum, darüber nachzudenken, wie man die Dinge angehen möchte. Und beide Male geht es darum, *kein* &quot;durchdachtes&quot; Konzept *vorher* zu haben.

Es macht keinen Sinn von einem Extrem (alles durchdenken und analysieren und konzipieren und klarstellen) in das andere Extrem (drauf loslegen, keine Ahnung von den Anforderungen haben, nicht testen) zu schwenken. Agilität, methodisch und technisch, möchte uns meiner Meinung nach eine Richtschnur zur Mitte geben. TDD ist da ein sehr schönes Beispiel. Nicht einfach draufloslegen - aber eben auch nicht in Details vertiefen und verzetteln.

Abschließend:
&quot;In diesem Sinne: Lass uns – jeder auf unsere Weise – die Sache TDD voran treiben.&quot;

Gerne! Ich freue mich auf Deine weiteren Posts und Erkenntnisse. Ich freue mich auf die Coding Dojo&#039;s. Ich freue mich auf Erfahrungsberichte und Meinungen. Ich werde versuchen, meinen Beitrag zu leisten.</description>
		<content:encoded><![CDATA[<p>Morgen Ralf!</p>
<p>&#8220;Wir sind uns in der grundlegenden Sache einig: automatisiertes Testen ist wichtig, und TDD ist noch besser.&#8221; -> Ich gebe Dir vollkommen Recht.</p>
<p>Nun, dass jeder seinen eigenen Lernprozess hat ist unumstritten. Ich habe meinen, und alle anderen haben auch einen. Ich bin mir der unterschiedlichen Niveaus, Geschwindigkeiten und Herangehensweisen durchaus bewußt.</p>
<p>Aus Deinem Kommentar lese ich eine gekränkte Auffassung gegenüber meiner Zirkus-Metapher, die ich symbolisch für die unnötige Überzeichnung von Sachverhalten herangenommen habe. Wenn ich Dich damit verletzt haben sollte, dann tut mir das Leid. Ich möchte, dass Du erkennst dass das nicht meine Intention war. Ich gönne jedem seinen Schreibstil, genau in dem selben Maße wie Du jedem seine Meinung gönnst.</p>
<p>Dennoch finde ich meine Metapher treffend. Sogar &#8220;Trara&#8221; und &#8220;Tamtam&#8221; möchte ich hier stehen lassen. Es soll klarstellen, dass ich *generell* künstlich verkomplizierte Kommunikation (verbal und nonverbal) für den eigentlichen Transport der Information hinderlich finde. Der eben geschriebene Satz zum Beispiel ist künstlich komplex. Genau das selbe (nicht *ab*wertend, sondern *be*wertend) könnte ich auch so schreiben: &#8220;Man kann auch einfache Sachverhalte ohne unnötigen Trara und Tamtam rüberbringen&#8221;. Ist doch ok, oder was meinst Du? Klar ist es ein stückweit eine Kritik. Aber darum geht es ja. Ich möchte *konstruktive* und *wertschätzende* Kritik an *generell* künstlich verkomplizierter Kommunikation üben. Wenn das nicht so rübergekommen ist, dann hoffentlich jetzt.</p>
<p>Du kommentierst weiterhin (über Deine Intention Deines Beitrags):<br />
&#8220;Ja, wie überprüfe ich den Zustand eines SUT, wenn es keinen Zugriff darauf bietet? Dafür habe ich ein Pattern vorgestellt.&#8221;</p>
<p>Nun, aus meiner Perspektive reduziert sich das auf die Testmethodik. Ob Du nun einen Interaktionstest machst (also das von Dir sog. &#8220;Zustandstestpattern&#8221;) oder einen Statustest, kann man Abhängig von der gegebenen Situation entscheiden. Ohne *abwertend*, aber bestimmt *bewertend* zu wirken: Ich verstehe den Beitrag &#8220;Zustand als Abhängigkeit&#8221; als eine Heranleitung zum Interaktionstest, weg vom Zustandstest. Zitat: &#8220;Vermeiden Sie, spezielle Zugriffsmethoden für Zustand nur zum Zweck des Testens einzurichten. Allemal, wenn sie sie nicht wirklich isoliert testen können.&#8221; Was ja schon mal prinzipiell gut ist. Doch ich verstehe das als eine Gegenüberstellung von Interaktionstests vs. Statustests. Noch deutlicher wird es, wenn man andere Beiträge zum Thema &#8220;Interaktionstest vs. Statustest&#8221; liest und vergleicht, z.B. den Klassiker von Miller (<a href="http://codebetter.com/blogs/jeremy.miller/articles/129544.aspx" rel="nofollow">http://codebetter.com/blogs/jeremy.miller/articles/129544.aspx</a>).</p>
<p>Zu &#8220;TDD != Wissenschaft&#8221; meinst Du:<br />
&#8220;Ist es dann aber nicht merkwürdig, dass soviele Entwickler soviele Schwierigkeiten damit haben, all das in ihre Projekte zu übernehmen?&#8221;</p>
<p>Nein ist es nicht. Denn viele Entwickler sind noch festgefahren oder aber festgebunden. Es ist vergleichbar mit Scrum, da gebe ich Dir Recht. Ich möchte &#8211; wiederum nicht *abwertend* sondern *bewertend* als Beipiel eine Aussage von Golo nehmen:</p>
<p>Golo zum Thema TDD != Wissenschaft:<br />
&#8220;Ich (ich ganz persönlich) möchte mir Arbeit nur sehr ungerne öfter als ein Mal aufhalsen. Deshalb möchte ich vorher (!) wissen, worauf ich mich einlasse und mir vorher (!) ein durchdachtes Konzept erarbeiten, an dem ich mich orientieren kann.&#8221;</p>
<p>Würde man z.B. diese Aussage aus dem Kontext von TDD rausnehmen und in den Kontext von Scrum stecken, dann wäre schnell großes Aufsehen. Denn in den agilen Methoden (sei es Managementmethode oder Softwareentwicklungsmethode) wird genau mit vielen Mitteln versucht, solche Ansichten zu vermeiden. Es heisst &#8220;Embrace Change&#8221;, methodisch gesehen. Es heisst &#8220;Refactoring&#8221;, technisch gesehen. Beide Male geht es darum, darüber nachzudenken, wie man die Dinge angehen möchte. Und beide Male geht es darum, *kein* &#8220;durchdachtes&#8221; Konzept *vorher* zu haben.</p>
<p>Es macht keinen Sinn von einem Extrem (alles durchdenken und analysieren und konzipieren und klarstellen) in das andere Extrem (drauf loslegen, keine Ahnung von den Anforderungen haben, nicht testen) zu schwenken. Agilität, methodisch und technisch, möchte uns meiner Meinung nach eine Richtschnur zur Mitte geben. TDD ist da ein sehr schönes Beispiel. Nicht einfach draufloslegen &#8211; aber eben auch nicht in Details vertiefen und verzetteln.</p>
<p>Abschließend:<br />
&#8220;In diesem Sinne: Lass uns – jeder auf unsere Weise – die Sache TDD voran treiben.&#8221;</p>
<p>Gerne! Ich freue mich auf Deine weiteren Posts und Erkenntnisse. Ich freue mich auf die Coding Dojo&#8217;s. Ich freue mich auf Erfahrungsberichte und Meinungen. Ich werde versuchen, meinen Beitrag zu leisten.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ralf Westphal</title>
		<link>http://ilker.de/tdd-ist-keine-wissenschaft#comment-316</link>
		<dc:creator>Ralf Westphal</dc:creator>
		<pubDate>Tue, 17 Nov 2009 08:59:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=420#comment-316</guid>
		<description>Hallo, Ilker!

Wir sind uns in der grundlegenden Sache einig: automatisiertes Testen ist wichtig, und TDD ist noch besser.

Schade finde ich es daher, dass du zwischen nützlichen und hinderlichen Beiträgen zu TDD unterscheidest, die diese Grundlage nicht in Frage stellen.

Du hast deinen Weg zu TDD gefunden. Nach einem Lernprozess bist du nun auf einem Level &quot;bewusster Kompetenz&quot; angelang. Das ist toll. Und du gibst dein Wissen weiter. Noch besser. Jetzt erscheint die TDD einfach, natürlich, unverzichtbar, naheliegend. Super.

Aber dein Lernprozess ist nur deiner. Andere haben ihren eigenen. Und wenn du schreibst, du würdest das Zustandstestpattern, das ich neulich beschrieben habe, &quot;schon umsetzen&quot;, dann bedeutet das ja, dass auch du immer noch etwas lernst. Warum wetterst du also dagegen, dass z.B. Golo oder ich aus unseren Lernprozessen berichten? Warum ist das &quot;Tamtam&quot;?

Dass wir nicht in der Weise berichten, wie du es tust, liegt ja daran, dass wir anders sind. Und die Leser deiner und unserer Blogs sind wieder anders. Ist es da nicht gut, verschiedene Sichten zu bieten? Dann ist für jeden etwas dabei. Manche mögen deinen Stil, manche Golos, manche meinen. Die Welt ist bunt.

&quot;Tamtam&quot;, &quot;Trara&quot;, &quot;fesselnde Trapezschwünge&quot; empfinde ich als unnötig wertende, ja, abwertende Beschreibungen unserer Beiträge. Dass wir nicht immer einer Meinung sind, ist eine Sache. Muss ja auch nicht sein. Aus dem &quot;Aufeinanderprall&quot; unterschiedlicher Meinungen zu einer Sache, entsteht letztlich das Neue, Bessere.

Aber dann fände ich es hilfreicher, wenn du konkret auf Aussagen bezug nähmest. An einem Punkt höre ich da etwas bei dir heraus: &quot;Ich denke auch, dass [Ralf] sich selbst mit dem Beispiel des KataPotter keinen Gefallen getan hat, weil er damit sein eigentliches Ziel – nämlich die Darstellung der Vorteile von Interaktionstests gegenüber Statustests – unnötiger Weise unscharf gezeichnet hat.&quot;

Darüber können wir natürlich diskutieren. Da steckt keine Abwertung drin, sondern sachliche Kritik. Nun kann ich überlegen, ob ich es auch so sehe. Hm... Wollte ich die Vorteile von Interaktionstests gegenüber Statustests zeigen? Nein, das wollte ich nicht. Insofern glaube ich auch nicht, dass ich etwas unscharf gezeichnet habe.

Mit ging es im Gegenteil ausschließlich um Statustests. Ja, wie überprüfe ich den Zustand eines SUT, wenn es keinen Zugriff darauf bietet? Dafür habe ich ein Pattern vorgestellt. Ist das dann gleich &quot;Tamtam&quot;?

Habe ich mir mit der KataPotter keinen Gefallen getan? Das wäre nur der Fall, glaube ich, wenn darin nicht wirklich Zustand vorkäme. Tut es in meiner Lösung auch nicht - aber eben in typischen Lösungen, die ich immer wieder sehe, wenn ich die Aufgabe stelle. Deshalb, weil es so typisch ist, habe ich den typischen Fall herausgegriffen - und weil die Katas grad en vogue sind.

In Summe folge ich also - nach einiger Überlegung - deiner Kritik nicht. Dass du sie geäußert hast, finde ich aber völlig ok. Kein Problem. Nur &quot;Tamtam&quot; und &quot;Trara&quot; schmecken mir nicht.

Noch kurz zu &quot;TDD ist keine Wissenschaft&quot;: Damit hast du natürlich Recht. Eigentlich ;-) Auch Scrum ist keine Wissenschaft. Auch die CCD-Bausteine sind keine Wissenschaft.

Ist es dann aber nicht merkwürdig, dass soviele Entwickler soviele Schwierigkeiten damit haben, all das in ihre Projekte zu übernehmen?

Zurecht zu sagen &quot;TDD ist keine Wissenschaft&quot; hilft einfach nicht. Auch Fahrradfahren ist keine Wissenschaft. Einem Kind zu sagen, &quot;Stell dich nicht an, dafür musst du nicht studieren.&quot; bringt das Kind aber nicht wirklich weiter. Es muss das Fahrradfahren lernen. Auf seine Weise. Aber gern mit angemessenen Tipps und Tricks von erfahrenen Fahrradfahrern.

So ist es auch mit TDD und vielem anderen. Am Ende ist jeder allein beim Lernen - Wissenschaft hin oder her. Aber Lernen ist Veränderung. Und Veränderung ist umso schwerer, je größer Projektdruck oder geringer die Selbstlernfähigkeit. Menschen sind da ganz anders. Unternehmensmilieus sind da ganz verschieden.

Deshalb braucht es Hilfe beim Lernen. Das merken Stefan Lieser und ich in jedem Clean Code Developer Training. TDD vorstellen dauert nicht so lange. Aber TDD einüben braucht viel Zeit bei jedem Teilnehmer. Da müssen eingefahrene Gewohnheiten überwunden werden. Und da hilft dann auch die Reflexion, die dir so überflüssig erscheint.

Über TDD zu schreiben, finde ich daher wichtig. In einer der nächsten dotnetpro Ausgaben wird deshalb auch nochmal ein TDD-Einführungsartikel erscheinen - aus Anlass von ganz konkreten Problemen beim Einstieg in TDD. Warum sollen andere nicht aus den Problemen, die jemand hat, lernen? Die sind wenigstens in der Praxis entstanden, während man den Katas durchaus anlasten kann, dass sie &quot;künstliche Probleme&quot; sind.

In diesem Sinne: Lass uns - jeder auf unsere Weise - die Sache TDD voran treiben.

-Ralf</description>
		<content:encoded><![CDATA[<p>Hallo, Ilker!</p>
<p>Wir sind uns in der grundlegenden Sache einig: automatisiertes Testen ist wichtig, und TDD ist noch besser.</p>
<p>Schade finde ich es daher, dass du zwischen nützlichen und hinderlichen Beiträgen zu TDD unterscheidest, die diese Grundlage nicht in Frage stellen.</p>
<p>Du hast deinen Weg zu TDD gefunden. Nach einem Lernprozess bist du nun auf einem Level &#8220;bewusster Kompetenz&#8221; angelang. Das ist toll. Und du gibst dein Wissen weiter. Noch besser. Jetzt erscheint die TDD einfach, natürlich, unverzichtbar, naheliegend. Super.</p>
<p>Aber dein Lernprozess ist nur deiner. Andere haben ihren eigenen. Und wenn du schreibst, du würdest das Zustandstestpattern, das ich neulich beschrieben habe, &#8220;schon umsetzen&#8221;, dann bedeutet das ja, dass auch du immer noch etwas lernst. Warum wetterst du also dagegen, dass z.B. Golo oder ich aus unseren Lernprozessen berichten? Warum ist das &#8220;Tamtam&#8221;?</p>
<p>Dass wir nicht in der Weise berichten, wie du es tust, liegt ja daran, dass wir anders sind. Und die Leser deiner und unserer Blogs sind wieder anders. Ist es da nicht gut, verschiedene Sichten zu bieten? Dann ist für jeden etwas dabei. Manche mögen deinen Stil, manche Golos, manche meinen. Die Welt ist bunt.</p>
<p>&#8220;Tamtam&#8221;, &#8220;Trara&#8221;, &#8220;fesselnde Trapezschwünge&#8221; empfinde ich als unnötig wertende, ja, abwertende Beschreibungen unserer Beiträge. Dass wir nicht immer einer Meinung sind, ist eine Sache. Muss ja auch nicht sein. Aus dem &#8220;Aufeinanderprall&#8221; unterschiedlicher Meinungen zu einer Sache, entsteht letztlich das Neue, Bessere.</p>
<p>Aber dann fände ich es hilfreicher, wenn du konkret auf Aussagen bezug nähmest. An einem Punkt höre ich da etwas bei dir heraus: &#8220;Ich denke auch, dass [Ralf] sich selbst mit dem Beispiel des KataPotter keinen Gefallen getan hat, weil er damit sein eigentliches Ziel – nämlich die Darstellung der Vorteile von Interaktionstests gegenüber Statustests – unnötiger Weise unscharf gezeichnet hat.&#8221;</p>
<p>Darüber können wir natürlich diskutieren. Da steckt keine Abwertung drin, sondern sachliche Kritik. Nun kann ich überlegen, ob ich es auch so sehe. Hm&#8230; Wollte ich die Vorteile von Interaktionstests gegenüber Statustests zeigen? Nein, das wollte ich nicht. Insofern glaube ich auch nicht, dass ich etwas unscharf gezeichnet habe.</p>
<p>Mit ging es im Gegenteil ausschließlich um Statustests. Ja, wie überprüfe ich den Zustand eines SUT, wenn es keinen Zugriff darauf bietet? Dafür habe ich ein Pattern vorgestellt. Ist das dann gleich &#8220;Tamtam&#8221;?</p>
<p>Habe ich mir mit der KataPotter keinen Gefallen getan? Das wäre nur der Fall, glaube ich, wenn darin nicht wirklich Zustand vorkäme. Tut es in meiner Lösung auch nicht &#8211; aber eben in typischen Lösungen, die ich immer wieder sehe, wenn ich die Aufgabe stelle. Deshalb, weil es so typisch ist, habe ich den typischen Fall herausgegriffen &#8211; und weil die Katas grad en vogue sind.</p>
<p>In Summe folge ich also &#8211; nach einiger Überlegung &#8211; deiner Kritik nicht. Dass du sie geäußert hast, finde ich aber völlig ok. Kein Problem. Nur &#8220;Tamtam&#8221; und &#8220;Trara&#8221; schmecken mir nicht.</p>
<p>Noch kurz zu &#8220;TDD ist keine Wissenschaft&#8221;: Damit hast du natürlich Recht. Eigentlich <img src='http://ilker.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Auch Scrum ist keine Wissenschaft. Auch die CCD-Bausteine sind keine Wissenschaft.</p>
<p>Ist es dann aber nicht merkwürdig, dass soviele Entwickler soviele Schwierigkeiten damit haben, all das in ihre Projekte zu übernehmen?</p>
<p>Zurecht zu sagen &#8220;TDD ist keine Wissenschaft&#8221; hilft einfach nicht. Auch Fahrradfahren ist keine Wissenschaft. Einem Kind zu sagen, &#8220;Stell dich nicht an, dafür musst du nicht studieren.&#8221; bringt das Kind aber nicht wirklich weiter. Es muss das Fahrradfahren lernen. Auf seine Weise. Aber gern mit angemessenen Tipps und Tricks von erfahrenen Fahrradfahrern.</p>
<p>So ist es auch mit TDD und vielem anderen. Am Ende ist jeder allein beim Lernen &#8211; Wissenschaft hin oder her. Aber Lernen ist Veränderung. Und Veränderung ist umso schwerer, je größer Projektdruck oder geringer die Selbstlernfähigkeit. Menschen sind da ganz anders. Unternehmensmilieus sind da ganz verschieden.</p>
<p>Deshalb braucht es Hilfe beim Lernen. Das merken Stefan Lieser und ich in jedem Clean Code Developer Training. TDD vorstellen dauert nicht so lange. Aber TDD einüben braucht viel Zeit bei jedem Teilnehmer. Da müssen eingefahrene Gewohnheiten überwunden werden. Und da hilft dann auch die Reflexion, die dir so überflüssig erscheint.</p>
<p>Über TDD zu schreiben, finde ich daher wichtig. In einer der nächsten dotnetpro Ausgaben wird deshalb auch nochmal ein TDD-Einführungsartikel erscheinen &#8211; aus Anlass von ganz konkreten Problemen beim Einstieg in TDD. Warum sollen andere nicht aus den Problemen, die jemand hat, lernen? Die sind wenigstens in der Praxis entstanden, während man den Katas durchaus anlasten kann, dass sie &#8220;künstliche Probleme&#8221; sind.</p>
<p>In diesem Sinne: Lass uns &#8211; jeder auf unsere Weise &#8211; die Sache TDD voran treiben.</p>
<p>-Ralf</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ilker Cetinkaya</title>
		<link>http://ilker.de/tdd-ist-keine-wissenschaft#comment-315</link>
		<dc:creator>Ilker Cetinkaya</dc:creator>
		<pubDate>Mon, 16 Nov 2009 18:25:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=420#comment-315</guid>
		<description>Hi Rainer,

Ich halte Ralfs Beitrag nicht für überflüssig. Ich denke nur dass er in diesem einen Beitrag sich etwas zu kompliziert artikuliert hat. Ich denke auch, dass er sich selbst mit dem Beispiel des KataPotter keinen Gefallen getan hat, weil er damit sein eigentliches Ziel - nämlich die Darstellung der Vorteile von Interaktionstests gegenüber Statustests - unnötiger Weise unscharf gezeichnet hat.

Im Übrigen finde ich Interaktionstests auch eleganter und besser als Statustests ( http://nat.truemesh.com/archives/000356.html und http://www.martinfowler.com/articles/mocksArentStubs.html), womit ich Dir zustimme und auch &quot;Ralfs Lösung&quot; sehr gut finde und auch schon umsetze.

Ich gebe Dir noch als Anregung mit, dass jeder, der TDD wirklich einsetzt, früher oder später zum Schluss kommen wird, dass es beide Arten des Testens (also Interaktions- und Statustests) geben muss.

Um es in Ralfs Worten zu sagen: Der Zustand ist eine Abhängigkeit, der wenn möglich auch über den &quot;Wartungskonstruktor&quot; injiziert wird, um so isoliert und zielgerichtet Funktionseinheiten in das Zentrum des Zielkreuzes von Tests zu rücken. An den Endpunkten eines Dataflusses, also in der Präsentationsschicht, in der Entitäten erfasst werden, oder aber auch in der Datenzugriffsschicht, in der die Domäne Entitäten und Zustand persistiert, ist der Zustand als Abhängigkeit einer physischen Grenze erlegen. Unter anderem ist es dieser Grenzbereich, der statusbehaftetes Testen in notwendigstem Maße rechtfertigt.

Gruß,
Ilker</description>
		<content:encoded><![CDATA[<p>Hi Rainer,</p>
<p>Ich halte Ralfs Beitrag nicht für überflüssig. Ich denke nur dass er in diesem einen Beitrag sich etwas zu kompliziert artikuliert hat. Ich denke auch, dass er sich selbst mit dem Beispiel des KataPotter keinen Gefallen getan hat, weil er damit sein eigentliches Ziel &#8211; nämlich die Darstellung der Vorteile von Interaktionstests gegenüber Statustests &#8211; unnötiger Weise unscharf gezeichnet hat.</p>
<p>Im Übrigen finde ich Interaktionstests auch eleganter und besser als Statustests ( <a href="http://nat.truemesh.com/archives/000356.html" rel="nofollow">http://nat.truemesh.com/archives/000356.html</a> und <a href="http://www.martinfowler.com/articles/mocksArentStubs.html" rel="nofollow">http://www.martinfowler.com/articles/mocksArentStubs.html</a>), womit ich Dir zustimme und auch &#8220;Ralfs Lösung&#8221; sehr gut finde und auch schon umsetze.</p>
<p>Ich gebe Dir noch als Anregung mit, dass jeder, der TDD wirklich einsetzt, früher oder später zum Schluss kommen wird, dass es beide Arten des Testens (also Interaktions- und Statustests) geben muss.</p>
<p>Um es in Ralfs Worten zu sagen: Der Zustand ist eine Abhängigkeit, der wenn möglich auch über den &#8220;Wartungskonstruktor&#8221; injiziert wird, um so isoliert und zielgerichtet Funktionseinheiten in das Zentrum des Zielkreuzes von Tests zu rücken. An den Endpunkten eines Dataflusses, also in der Präsentationsschicht, in der Entitäten erfasst werden, oder aber auch in der Datenzugriffsschicht, in der die Domäne Entitäten und Zustand persistiert, ist der Zustand als Abhängigkeit einer physischen Grenze erlegen. Unter anderem ist es dieser Grenzbereich, der statusbehaftetes Testen in notwendigstem Maße rechtfertigt.</p>
<p>Gruß,<br />
Ilker</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rainer Hilmer</title>
		<link>http://ilker.de/tdd-ist-keine-wissenschaft#comment-314</link>
		<dc:creator>Rainer Hilmer</dc:creator>
		<pubDate>Mon, 16 Nov 2009 11:33:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=420#comment-314</guid>
		<description>Ach ja, noch etwas: Daß du gerade Ralfs Artikel bezgl Entkopplung von Zuständigkeiten für überflüssug hältst, kann ich auch nicht nachvollziehen. Ich finde es sehr sinnvoll, Objekte die ausschließlich für Tests existieren, aus dem Produktivecode fern zu halten, weil das Verfahren Verwirrungen vermedet. Ralfs Lösung finde ich sehr gut und ich werde sie umsetzen.
http://ralfw.blogspot.com/2009/11/zustand-als-abhangigkeit-ioc-konsequent.html</description>
		<content:encoded><![CDATA[<p>Ach ja, noch etwas: Daß du gerade Ralfs Artikel bezgl Entkopplung von Zuständigkeiten für überflüssug hältst, kann ich auch nicht nachvollziehen. Ich finde es sehr sinnvoll, Objekte die ausschließlich für Tests existieren, aus dem Produktivecode fern zu halten, weil das Verfahren Verwirrungen vermedet. Ralfs Lösung finde ich sehr gut und ich werde sie umsetzen.<br />
<a href="http://ralfw.blogspot.com/2009/11/zustand-als-abhangigkeit-ioc-konsequent.html" rel="nofollow">http://ralfw.blogspot.com/2009/11/zustand-als-abhangigkeit-ioc-konsequent.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rainer Hilmer</title>
		<link>http://ilker.de/tdd-ist-keine-wissenschaft#comment-313</link>
		<dc:creator>Rainer Hilmer</dc:creator>
		<pubDate>Mon, 16 Nov 2009 11:29:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=420#comment-313</guid>
		<description>Wo ich die Stirn runzeln mußte, war deine Bemerkung zur Reflexion.
Zitat:
Die ständige, gestelzte und wie ein Ritus sich selbst auferlegte “Tagesreflexionsprogramm” ist meines Erachtens nicht förderlich. Überspitzt betrachtet ist es genau dasselbe wie das Bart-Simpson-Einhämmerungs-Ritual “Ich werde keinen Zustand testen!” – repetitiv, jedoch nicht kognitiv.
Zitat Ende

Ich kann mir nur ein Szenario vorstellen, in dem Reflexion so ist wie du es schilderst: Man macht jeden Tag das Gleiche und lernt nichts dazu. Ich möche dich damit nicht angreifen. Ich kann mir nur, wie gesagt, keine andere Situation vorstellen.

Was die anderen Aspekte deines Artikels betrifft, schließe ich mich Golo an.</description>
		<content:encoded><![CDATA[<p>Wo ich die Stirn runzeln mußte, war deine Bemerkung zur Reflexion.<br />
Zitat:<br />
Die ständige, gestelzte und wie ein Ritus sich selbst auferlegte “Tagesreflexionsprogramm” ist meines Erachtens nicht förderlich. Überspitzt betrachtet ist es genau dasselbe wie das Bart-Simpson-Einhämmerungs-Ritual “Ich werde keinen Zustand testen!” – repetitiv, jedoch nicht kognitiv.<br />
Zitat Ende</p>
<p>Ich kann mir nur ein Szenario vorstellen, in dem Reflexion so ist wie du es schilderst: Man macht jeden Tag das Gleiche und lernt nichts dazu. Ich möche dich damit nicht angreifen. Ich kann mir nur, wie gesagt, keine andere Situation vorstellen.</p>
<p>Was die anderen Aspekte deines Artikels betrifft, schließe ich mich Golo an.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Golo Roden</title>
		<link>http://ilker.de/tdd-ist-keine-wissenschaft#comment-312</link>
		<dc:creator>Golo Roden</dc:creator>
		<pubDate>Mon, 16 Nov 2009 08:29:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=420#comment-312</guid>
		<description>Hallo Ilker,

okay - dann hatte ich Deinen Eintrag falsch interpretiert.

Dass wir gemeinsam versuchen sollten, Sachverhalte klar und einfach zu vermitteln - dem stimme ich zu. Und auch Deiner Aussage, TDD sei einfach, stimme ich zumindest in technischer Hinsicht zwar nicht immer, aber doch häufig zu.

Dabei stellt sich aber auch schon wieder die Frage: Einfach für wen? Für einen OOP- und architekturerfahrenen Entwickler sicher, für Programmiereinsteiger wird es schon wieder schwieriger: Wenn ich nämlich nicht gewöhnt bin, meinen Code sauber zu strukturieren, ihn aufzubrechen, SoC zu betreiben, ... dann wird das konsequente Einsetzen von TDD schwierig.

Das soll keine Entschuldigung sein, es nicht zu tun, und das soll auch nicht heißen, dass Einsteiger sich deshalb mit TDD nicht befassen sollten - aber der Begriff &quot;einfach&quot; ist eben relativ.

Was ich aber insbesondere nicht einfach finde, ist ein tragfähiges Konzept zu finden, für all das, was über den rein technischen Aspekt hinausgeht. Das sind dann so simple Fragen wie

- Darf / sollte ich Code anpassen, nur der Testbarkeit wegen?
- Wie organisiere ich meine Tests überhaupt, ohne den Überblick zu verlieren?
- Wo enden Unittests, wo beginnen Integrationstests?
- Woher weiß ich, dass ich alle wichtigen Fälle durch Tests abgedeckt habe?

Diese Fragen mögen abschrecken, weil sie schwierig erscheinen. Doch ich finde es wichtig, sich mit ihnen zu befassen, um ein umfassendes Bild vom Thema Unittests zu erhalten, um nicht nur zu wissen, was man machen muss, sondern auch, wie man es gut machen kann.

Und dafür sind diese Fragen meiner Meinung nach unerlässlich.

Interessant ist, dass man von 99% der Leute, mit denen man über Tests spricht, zu hören bekommt, man solle sich darüber nicht so viele Gedanken machen, oder eben - wie Roy Osherove es in seinem Buch &quot;The Art of Unit Testing&quot; geschrieben hat - &quot;Don&#039;t be silly.&quot;

Das ist aber keine Antwort, das ist eine Abfertigung. Wer - als Einsteiger oder als Profi - wissen möchte, *warum* er XYZ so und nicht anders machen sollte, der *MUSS* sich mit solchen Fragen auseinandersetzen.

Viele Grüße,


Golo</description>
		<content:encoded><![CDATA[<p>Hallo Ilker,</p>
<p>okay &#8211; dann hatte ich Deinen Eintrag falsch interpretiert.</p>
<p>Dass wir gemeinsam versuchen sollten, Sachverhalte klar und einfach zu vermitteln &#8211; dem stimme ich zu. Und auch Deiner Aussage, TDD sei einfach, stimme ich zumindest in technischer Hinsicht zwar nicht immer, aber doch häufig zu.</p>
<p>Dabei stellt sich aber auch schon wieder die Frage: Einfach für wen? Für einen OOP- und architekturerfahrenen Entwickler sicher, für Programmiereinsteiger wird es schon wieder schwieriger: Wenn ich nämlich nicht gewöhnt bin, meinen Code sauber zu strukturieren, ihn aufzubrechen, SoC zu betreiben, &#8230; dann wird das konsequente Einsetzen von TDD schwierig.</p>
<p>Das soll keine Entschuldigung sein, es nicht zu tun, und das soll auch nicht heißen, dass Einsteiger sich deshalb mit TDD nicht befassen sollten &#8211; aber der Begriff &#8220;einfach&#8221; ist eben relativ.</p>
<p>Was ich aber insbesondere nicht einfach finde, ist ein tragfähiges Konzept zu finden, für all das, was über den rein technischen Aspekt hinausgeht. Das sind dann so simple Fragen wie</p>
<p>- Darf / sollte ich Code anpassen, nur der Testbarkeit wegen?<br />
- Wie organisiere ich meine Tests überhaupt, ohne den Überblick zu verlieren?<br />
- Wo enden Unittests, wo beginnen Integrationstests?<br />
- Woher weiß ich, dass ich alle wichtigen Fälle durch Tests abgedeckt habe?</p>
<p>Diese Fragen mögen abschrecken, weil sie schwierig erscheinen. Doch ich finde es wichtig, sich mit ihnen zu befassen, um ein umfassendes Bild vom Thema Unittests zu erhalten, um nicht nur zu wissen, was man machen muss, sondern auch, wie man es gut machen kann.</p>
<p>Und dafür sind diese Fragen meiner Meinung nach unerlässlich.</p>
<p>Interessant ist, dass man von 99% der Leute, mit denen man über Tests spricht, zu hören bekommt, man solle sich darüber nicht so viele Gedanken machen, oder eben &#8211; wie Roy Osherove es in seinem Buch &#8220;The Art of Unit Testing&#8221; geschrieben hat &#8211; &#8220;Don&#8217;t be silly.&#8221;</p>
<p>Das ist aber keine Antwort, das ist eine Abfertigung. Wer &#8211; als Einsteiger oder als Profi &#8211; wissen möchte, *warum* er XYZ so und nicht anders machen sollte, der *MUSS* sich mit solchen Fragen auseinandersetzen.</p>
<p>Viele Grüße,</p>
<p>Golo</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ilker Cetinkaya</title>
		<link>http://ilker.de/tdd-ist-keine-wissenschaft#comment-311</link>
		<dc:creator>Ilker Cetinkaya</dc:creator>
		<pubDate>Mon, 16 Nov 2009 08:14:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=420#comment-311</guid>
		<description>Hi Golo,

nun, ich sage mit nichten dass Deine Gedanken überflüssig sind. Ich finde es sogar wertvoll. Du bist ein erfahrener Entwickler mit einem gewissen analytischen Niveau. Es ist immer hilfreich, sich vorab ein paar Gedanken zu machen - sei es nun über die Methodik oder über das Vorgehen selbst.

Was ich nur zum Ausdruck bringen möchte ist, dass wir gemeinsam versuchen sollten die Sachverhalte (für TDD und auch bei anderen Dingen) klar und einfach rüberzubringen. Ich kann mir gut vorstellen, dass manch einer sich beim Lesen ds einen oder anderen Posts denkt &quot;Man ist das kompliziert, dieses TDD&quot;. Dabei ist es nicht kompliziert. Es ist einfach. Das ist alles was ich sagen will.

Ich arbeite tagtäglich mit mehreren Teams zusammen und bin mir der Wichtigkeit vom Konventionen und Grundregeln bewußt. Jedoch ist es auch Fakt, dass in Teams gerne Konzeptdiskussionen zu lange dauern - ein Zeichen von zuviel &quot;Upfront Thinking&quot; (um es themenneutral auszudrücken).

Zu dem Thema Architektur von Tests und deren Anwendung gibt es viele Aspekte, einige davon müssen sicherlich vorher zu Ende gedacht sein, andere wiederum müssen es nicht. Insofern kann man TDD auch als Treiber für &quot;Decisions On Last Responsible Moments&quot; (http://www.codinghorror.com/blog/archives/000705.html) betrachten.

Auf bald,
Ilker</description>
		<content:encoded><![CDATA[<p>Hi Golo,</p>
<p>nun, ich sage mit nichten dass Deine Gedanken überflüssig sind. Ich finde es sogar wertvoll. Du bist ein erfahrener Entwickler mit einem gewissen analytischen Niveau. Es ist immer hilfreich, sich vorab ein paar Gedanken zu machen &#8211; sei es nun über die Methodik oder über das Vorgehen selbst.</p>
<p>Was ich nur zum Ausdruck bringen möchte ist, dass wir gemeinsam versuchen sollten die Sachverhalte (für TDD und auch bei anderen Dingen) klar und einfach rüberzubringen. Ich kann mir gut vorstellen, dass manch einer sich beim Lesen ds einen oder anderen Posts denkt &#8220;Man ist das kompliziert, dieses TDD&#8221;. Dabei ist es nicht kompliziert. Es ist einfach. Das ist alles was ich sagen will.</p>
<p>Ich arbeite tagtäglich mit mehreren Teams zusammen und bin mir der Wichtigkeit vom Konventionen und Grundregeln bewußt. Jedoch ist es auch Fakt, dass in Teams gerne Konzeptdiskussionen zu lange dauern &#8211; ein Zeichen von zuviel &#8220;Upfront Thinking&#8221; (um es themenneutral auszudrücken).</p>
<p>Zu dem Thema Architektur von Tests und deren Anwendung gibt es viele Aspekte, einige davon müssen sicherlich vorher zu Ende gedacht sein, andere wiederum müssen es nicht. Insofern kann man TDD auch als Treiber für &#8220;Decisions On Last Responsible Moments&#8221; (<a href="http://www.codinghorror.com/blog/archives/000705.html" rel="nofollow">http://www.codinghorror.com/blog/archives/000705.html</a>) betrachten.</p>
<p>Auf bald,<br />
Ilker</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Golo Roden</title>
		<link>http://ilker.de/tdd-ist-keine-wissenschaft#comment-310</link>
		<dc:creator>Golo Roden</dc:creator>
		<pubDate>Mon, 16 Nov 2009 07:56:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=420#comment-310</guid>
		<description>Hallo Ilker,

ehrlich gesagt kann ich Deine Aufregung nicht nachvollziehen. Du schreibst

&quot;Bei dem einen oder anderen Post kann ich mir das Kopfschütteln während des Lesens einfach nicht verkneifen. Die Spitzfindigkeit und unnötige Verkomplizierung einfacher Sachverhalte geht mir zuwider.&quot;

und deutest damit an, die Gedanken, die Ralf und ich uns machen, seien letztlich überflüssig - wir sollten statt so viel über die i-Tüpfelchen zu diskutieren uns eher daran machen, Tests einfach durchzuführen.

Einen Aspekt übersiehst Du dabei meines Erachtens allerdings: Ich (ich ganz persönlich) möchte mir Arbeit nur sehr ungerne öfter als ein Mal aufhalsen. Deshalb möchte ich vorher (!) wissen, worauf ich mich einlasse und mir vorher (!) ein durchdachtes Konzept erarbeiten, an dem ich mich orientieren kann.

Dazu zählt nun mal, gewisse Vorbehalte zu hinterfragen, offene Fragen zu klären und gegebenenfalls auch &quot;akademische&quot; Themen zu diskutieren. Nein, TDD ist keine Wissenschaft - es ist aber auch kein pragmatisches &quot;Wir legen mal irgendwie drauf los&quot; ... damit ist nämlich spätestens dann, wenn man nicht mehr alleine, sondern im Team entwickelt, niemandem mehr geholfen.

Klare Regeln helfen, sich auf das Wesentliche zu konzentrieren.

Warum ich klare Regeln für dermaßen wichtig erachte, habe ich bereits in http://www.des-eisbaeren-blog.de/post/2009/08/27/Wozu-uberhaupt-Programmierstandards.aspx und in http://www.des-eisbaeren-blog.de/post/2009/08/26/Accuracy.aspx erläutert. Man mag dies für kleinlich oder pedantisch halten - ich würde dies &quot;ordentlich&quot; nennen.

Wenn Du Dir über die Tragweite Deines Handelns (in diesem Fall der Struktur und der Architektur Deiner Tests und damit verbunden auch Deiner Anwendung) nicht im klaren bist, keine klaren Regeln definiert hast - wie willst Du dann sauber und strukturiert entwickeln?

Viele Grüße,


Golo</description>
		<content:encoded><![CDATA[<p>Hallo Ilker,</p>
<p>ehrlich gesagt kann ich Deine Aufregung nicht nachvollziehen. Du schreibst</p>
<p>&#8220;Bei dem einen oder anderen Post kann ich mir das Kopfschütteln während des Lesens einfach nicht verkneifen. Die Spitzfindigkeit und unnötige Verkomplizierung einfacher Sachverhalte geht mir zuwider.&#8221;</p>
<p>und deutest damit an, die Gedanken, die Ralf und ich uns machen, seien letztlich überflüssig &#8211; wir sollten statt so viel über die i-Tüpfelchen zu diskutieren uns eher daran machen, Tests einfach durchzuführen.</p>
<p>Einen Aspekt übersiehst Du dabei meines Erachtens allerdings: Ich (ich ganz persönlich) möchte mir Arbeit nur sehr ungerne öfter als ein Mal aufhalsen. Deshalb möchte ich vorher (!) wissen, worauf ich mich einlasse und mir vorher (!) ein durchdachtes Konzept erarbeiten, an dem ich mich orientieren kann.</p>
<p>Dazu zählt nun mal, gewisse Vorbehalte zu hinterfragen, offene Fragen zu klären und gegebenenfalls auch &#8220;akademische&#8221; Themen zu diskutieren. Nein, TDD ist keine Wissenschaft &#8211; es ist aber auch kein pragmatisches &#8220;Wir legen mal irgendwie drauf los&#8221; &#8230; damit ist nämlich spätestens dann, wenn man nicht mehr alleine, sondern im Team entwickelt, niemandem mehr geholfen.</p>
<p>Klare Regeln helfen, sich auf das Wesentliche zu konzentrieren.</p>
<p>Warum ich klare Regeln für dermaßen wichtig erachte, habe ich bereits in <a href="http://www.des-eisbaeren-blog.de/post/2009/08/27/Wozu-uberhaupt-Programmierstandards.aspx" rel="nofollow">http://www.des-eisbaeren-blog.de/post/2009/08/27/Wozu-uberhaupt-Programmierstandards.aspx</a> und in <a href="http://www.des-eisbaeren-blog.de/post/2009/08/26/Accuracy.aspx" rel="nofollow">http://www.des-eisbaeren-blog.de/post/2009/08/26/Accuracy.aspx</a> erläutert. Man mag dies für kleinlich oder pedantisch halten &#8211; ich würde dies &#8220;ordentlich&#8221; nennen.</p>
<p>Wenn Du Dir über die Tragweite Deines Handelns (in diesem Fall der Struktur und der Architektur Deiner Tests und damit verbunden auch Deiner Anwendung) nicht im klaren bist, keine klaren Regeln definiert hast &#8211; wie willst Du dann sauber und strukturiert entwickeln?</p>
<p>Viele Grüße,</p>
<p>Golo</p>
]]></content:encoded>
	</item>
</channel>
</rss>

