<?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: Big leaps and small steps</title>
	<atom:link href="http://www.markhneedham.com/blog/2009/12/10/tdd-big-leaps-and-small-steps/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.markhneedham.com/blog/2009/12/10/tdd-big-leaps-and-small-steps/</link>
	<description>Thoughts on Software Development</description>
	<lastBuildDate>Sat, 11 Feb 2012 23:17:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Mark Needham</title>
		<link>http://www.markhneedham.com/blog/2009/12/10/tdd-big-leaps-and-small-steps/comment-page-1/#comment-28213</link>
		<dc:creator>Mark Needham</dc:creator>
		<pubDate>Sat, 12 Dec 2009 10:19:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=1910#comment-28213</guid>
		<description>Hey Mathias,

I shall try!

From what I recall we were actually struggling a bit just to come up with a solution at all. 

What made it hard was that we ended up having to write a functional test that effectively solved the whole problem for one set of inputs and we found it quite difficult to find some small steps to incrementally work up to that.

We managed to create a domain model to represent the problem but to actually even get a simple route calculated I felt that we were at the stage where we needed to go and read up on the algorithm and work out how you calculate the distances between two different nodes.

Cheers, Mark</description>
		<content:encoded><![CDATA[<p>Hey Mathias,</p>
<p>I shall try!</p>
<p>From what I recall we were actually struggling a bit just to come up with a solution at all. </p>
<p>What made it hard was that we ended up having to write a functional test that effectively solved the whole problem for one set of inputs and we found it quite difficult to find some small steps to incrementally work up to that.</p>
<p>We managed to create a domain model to represent the problem but to actually even get a simple route calculated I felt that we were at the stage where we needed to go and read up on the algorithm and work out how you calculate the distances between two different nodes.</p>
<p>Cheers, Mark</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mathias</title>
		<link>http://www.markhneedham.com/blog/2009/12/10/tdd-big-leaps-and-small-steps/comment-page-1/#comment-28197</link>
		<dc:creator>Mathias</dc:creator>
		<pubDate>Fri, 11 Dec 2009 21:11:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=1910#comment-28197</guid>
		<description>Mark,
Can you elaborate on the traveling salesman case? Specifically, in the exercise, are you trying to find the optimal solution, or to find a sub-optimal but computationally efficient solution? And what made it hard?
I am curious about this, because most of my code is math-oriented, and I am a long-time fan of TDD, which in general I found to be a good match, but in some cases, on algorithms, it just doesn&#039;t flow at all, so I am very interested in figuring out patterns or symptoms that indicate a rough road ahead!</description>
		<content:encoded><![CDATA[<p>Mark,<br />
Can you elaborate on the traveling salesman case? Specifically, in the exercise, are you trying to find the optimal solution, or to find a sub-optimal but computationally efficient solution? And what made it hard?<br />
I am curious about this, because most of my code is math-oriented, and I am a long-time fan of TDD, which in general I found to be a good match, but in some cases, on algorithms, it just doesn&#8217;t flow at all, so I am very interested in figuring out patterns or symptoms that indicate a rough road ahead!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Needham</title>
		<link>http://www.markhneedham.com/blog/2009/12/10/tdd-big-leaps-and-small-steps/comment-page-1/#comment-28143</link>
		<dc:creator>Mark Needham</dc:creator>
		<pubDate>Thu, 10 Dec 2009 18:48:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=1910#comment-28143</guid>
		<description>Hey Gary,
Yeh I saw that post as well, was trying to work out how I could work it into this one but I didn&#039;t quite figure out how to! 

That&#039;s a pretty good summary though and I like the idea that sometimes we can&#039;t TDD it to start with but maybe later we can come back and do that. Hadn&#039;t quite connected that bit - neat.

Cheers, Mark</description>
		<content:encoded><![CDATA[<p>Hey Gary,<br />
Yeh I saw that post as well, was trying to work out how I could work it into this one but I didn&#8217;t quite figure out how to! </p>
<p>That&#8217;s a pretty good summary though and I like the idea that sometimes we can&#8217;t TDD it to start with but maybe later we can come back and do that. Hadn&#8217;t quite connected that bit &#8211; neat.</p>
<p>Cheers, Mark</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gary Bernhardt</title>
		<link>http://www.markhneedham.com/blog/2009/12/10/tdd-big-leaps-and-small-steps/comment-page-1/#comment-28142</link>
		<dc:creator>Gary Bernhardt</dc:creator>
		<pubDate>Thu, 10 Dec 2009 18:02:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=1910#comment-28142</guid>
		<description>I&#039;m sure you saw it already, but the next post on my blog, &quot;The Limits of TDD&quot;, addressed this issue, as well as other complaints that came up in the comments. At the end, I conclude:

&quot;&quot;&quot;
Many complaints about TDD are complaints that it doesn&#039;t solve some problem. These are not problems with TDD – it&#039;s not supposed to solve every problem!

Dynamic languages don&#039;t make coffee, continuous integration doesn&#039;t shine shoes, and TDD doesn&#039;t make code scale. It&#039;s simply the basis of a solid, disciplined process for building software – a beginning, not an end.
&quot;&quot;&quot;

In cases where I don&#039;t know where I&#039;m going (like templates), I certainly don&#039;t TDD. If it&#039;s code, I&#039;ll come back and TDD it once I understand it (making the original a spike).

In cases where I know exactly where I&#039;m going (like known algorithms), I&#039;ll still TDD a naive solution, as I did in the post you link to. Then I&#039;ll use the resulting test suite as a safety net to refactor to the standard solution (e.g., iterative rather than recursive Fibonacci). In these cases, I still get the test coverage benefits of TDD, but the design benefits aren&#039;t relevant.

Thanks, Mark. I liked this post. :)</description>
		<content:encoded><![CDATA[<p>I&#8217;m sure you saw it already, but the next post on my blog, &#8220;The Limits of TDD&#8221;, addressed this issue, as well as other complaints that came up in the comments. At the end, I conclude:</p>
<p>&#8220;&#8221;"<br />
Many complaints about TDD are complaints that it doesn&#8217;t solve some problem. These are not problems with TDD – it&#8217;s not supposed to solve every problem!</p>
<p>Dynamic languages don&#8217;t make coffee, continuous integration doesn&#8217;t shine shoes, and TDD doesn&#8217;t make code scale. It&#8217;s simply the basis of a solid, disciplined process for building software – a beginning, not an end.<br />
&#8220;&#8221;"</p>
<p>In cases where I don&#8217;t know where I&#8217;m going (like templates), I certainly don&#8217;t TDD. If it&#8217;s code, I&#8217;ll come back and TDD it once I understand it (making the original a spike).</p>
<p>In cases where I know exactly where I&#8217;m going (like known algorithms), I&#8217;ll still TDD a naive solution, as I did in the post you link to. Then I&#8217;ll use the resulting test suite as a safety net to refactor to the standard solution (e.g., iterative rather than recursive Fibonacci). In these cases, I still get the test coverage benefits of TDD, but the design benefits aren&#8217;t relevant.</p>
<p>Thanks, Mark. I liked this post. <img src='http://www.markhneedham.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Carlton</title>
		<link>http://www.markhneedham.com/blog/2009/12/10/tdd-big-leaps-and-small-steps/comment-page-1/#comment-28140</link>
		<dc:creator>David Carlton</dc:creator>
		<pubDate>Thu, 10 Dec 2009 17:04:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=1910#comment-28140</guid>
		<description>One thing I&#039;ve noticed when trying to learn Haskell is that I&#039;m having a hard time doing TDD properly - I keep on needing to make larger leaps of inspiration than I&#039;m used to or comfortable with.  I&#039;m trying to figure out how much of this is the &quot;TDD is hard for deriving algorithms, and functional programming is more about the algorithms&quot; problem, and how much is just needing to learn a different collection of refactorings.  (I&#039;m positive that the latter is at least part of the mix.)

I&#039;m trying to be more conscious about finding small refactorings to do; one first attempt is here: http://malvasiabianca.org/archives/2009/12/small-steps-in-haskell/  (With a bit more explanation in the comments.) I&#039;m pretty curious how this will turn out as I go farther along with the language.</description>
		<content:encoded><![CDATA[<p>One thing I&#8217;ve noticed when trying to learn Haskell is that I&#8217;m having a hard time doing TDD properly &#8211; I keep on needing to make larger leaps of inspiration than I&#8217;m used to or comfortable with.  I&#8217;m trying to figure out how much of this is the &#8220;TDD is hard for deriving algorithms, and functional programming is more about the algorithms&#8221; problem, and how much is just needing to learn a different collection of refactorings.  (I&#8217;m positive that the latter is at least part of the mix.)</p>
<p>I&#8217;m trying to be more conscious about finding small refactorings to do; one first attempt is here: <a href="http://malvasiabianca.org/archives/2009/12/small-steps-in-haskell/" rel="nofollow">http://malvasiabianca.org/archives/2009/12/small-steps-in-haskell/</a>  (With a bit more explanation in the comments.) I&#8217;m pretty curious how this will turn out as I go farther along with the language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tweets that mention TDD: Big leaps and small steps at Mark Needham -- Topsy.com</title>
		<link>http://www.markhneedham.com/blog/2009/12/10/tdd-big-leaps-and-small-steps/comment-page-1/#comment-28132</link>
		<dc:creator>Tweets that mention TDD: Big leaps and small steps at Mark Needham -- Topsy.com</dc:creator>
		<pubDate>Thu, 10 Dec 2009 12:19:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=1910#comment-28132</guid>
		<description>[...] This post was mentioned on Twitter by Mark Needham, Tobias Svensson. Tobias Svensson said: RT @markhneedham: tdd - big leaps and small steps http://bit.ly/8SnS6I [...]</description>
		<content:encoded><![CDATA[<p>[...] This post was mentioned on Twitter by Mark Needham, Tobias Svensson. Tobias Svensson said: RT @markhneedham: tdd &#8211; big leaps and small steps <a href="http://bit.ly/8SnS6I" rel="nofollow">http://bit.ly/8SnS6I</a> [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

