<?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: Roy Osherove&#8217;s TDD Kata: My first attempt</title>
	<atom:link href="http://www.markhneedham.com/blog/2009/12/25/roy-osheroves-tdd-kata-my-first-attempt/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.markhneedham.com/blog/2009/12/25/roy-osheroves-tdd-kata-my-first-attempt/</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: &#8220;Code Katas&#8221;, Scott Wallace &#124; some assembly required, batteries not included</title>
		<link>http://www.markhneedham.com/blog/2009/12/25/roy-osheroves-tdd-kata-my-first-attempt/comment-page-1/#comment-125653</link>
		<dc:creator>&#8220;Code Katas&#8221;, Scott Wallace &#124; some assembly required, batteries not included</dc:creator>
		<pubDate>Wed, 12 Oct 2011 12:02:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=1975#comment-125653</guid>
		<description>[...] http://www.markhneedham.com/blog/2009/12/25/roy-osheroves-tdd-kata-my-first-attempt/    LD_AddCustomAttr(&quot;AdOpt&quot;, &quot;1&quot;); LD_AddCustomAttr(&quot;Origin&quot;, &quot;other&quot;); LD_AddCustomAttr(&quot;theme_bg&quot;, &quot;ffffff&quot;); LD_AddCustomAttr(&quot;theme_border&quot;, &quot;cccccc&quot;); LD_AddCustomAttr(&quot;theme_text&quot;, &quot;333333&quot;); LD_AddCustomAttr(&quot;theme_link&quot;, &quot;0060ff&quot;); LD_AddCustomAttr(&quot;theme_url&quot;, &quot;df0000&quot;); LD_AddCustomAttr(&quot;LangId&quot;, &quot;1&quot;); LD_AddCustomAttr(&quot;Autotag&quot;, &quot;technology&quot;); LD_AddCustomAttr(&quot;Tag&quot;, &quot;agile&quot;); LD_AddCustomAttr(&quot;Tag&quot;, &quot;brown-bag-lunch-video&quot;); LD_AddCustomAttr(&quot;Tag&quot;, &quot;design&quot;); LD_AddCustomAttr(&quot;Tag&quot;, &quot;programming&quot;); LD_AddSlot(&quot;wpcom_below_post&quot;); LD_GetBids();  Like this:LikeBe the first to like this post.   This entry was posted in Agile, Brown bag lunch video, Design, programming. Bookmark the permalink.    &#8592; Code Quality, Sufficient&#160;Design &#8220;It does get in&#8221; .. Stop Press: Cyclomatic complexity does&#160;matter &#8594; [...]</description>
		<content:encoded><![CDATA[<p>[...] <a href="http://www.markhneedham.com/blog/2009/12/25/roy-osheroves-tdd-kata-my-first-attempt/" rel="nofollow">http://www.markhneedham.com/blog/2009/12/25/roy-osheroves-tdd-kata-my-first-attempt/</a>    LD_AddCustomAttr(&quot;AdOpt&quot;, &quot;1&quot;); LD_AddCustomAttr(&quot;Origin&quot;, &quot;other&quot;); LD_AddCustomAttr(&quot;theme_bg&quot;, &quot;ffffff&quot;); LD_AddCustomAttr(&quot;theme_border&quot;, &quot;cccccc&quot;); LD_AddCustomAttr(&quot;theme_text&quot;, &quot;333333&quot;); LD_AddCustomAttr(&quot;theme_link&quot;, &quot;0060ff&quot;); LD_AddCustomAttr(&quot;theme_url&quot;, &quot;df0000&quot;); LD_AddCustomAttr(&quot;LangId&quot;, &quot;1&quot;); LD_AddCustomAttr(&quot;Autotag&quot;, &quot;technology&quot;); LD_AddCustomAttr(&quot;Tag&quot;, &quot;agile&quot;); LD_AddCustomAttr(&quot;Tag&quot;, &quot;brown-bag-lunch-video&quot;); LD_AddCustomAttr(&quot;Tag&quot;, &quot;design&quot;); LD_AddCustomAttr(&quot;Tag&quot;, &quot;programming&quot;); LD_AddSlot(&quot;wpcom_below_post&quot;); LD_GetBids();  Like this:LikeBe the first to like this post.   This entry was posted in Agile, Brown bag lunch video, Design, programming. Bookmark the permalink.    &larr; Code Quality, Sufficient&nbsp;Design &#8220;It does get in&#8221; .. Stop Press: Cyclomatic complexity does&nbsp;matter &rarr; [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Needham</title>
		<link>http://www.markhneedham.com/blog/2009/12/25/roy-osheroves-tdd-kata-my-first-attempt/comment-page-1/#comment-29332</link>
		<dc:creator>Mark Needham</dc:creator>
		<pubDate>Thu, 31 Dec 2009 16:55:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=1975#comment-29332</guid>
		<description>Hey Thomas,

Yeh the SubString solution certainly doesn&#039;t work once you&#039;ve driven out an example with 2 digit numbers but it does work if you only have single digit numbers which is what I did for my first example. It&#039;s totally position related as you point out. If we&#039;re building incrementally then it seems like it&#039;s a step we should be looking to take.

I haven&#039;t done the second part of the exercise which you describe but it does feel like the Calculator class does too much even in the state that I&#039;ve got it in. There are a few responsibilities which don&#039;t belong there. 

Did you post up your final solution anywhere?</description>
		<content:encoded><![CDATA[<p>Hey Thomas,</p>
<p>Yeh the SubString solution certainly doesn&#8217;t work once you&#8217;ve driven out an example with 2 digit numbers but it does work if you only have single digit numbers which is what I did for my first example. It&#8217;s totally position related as you point out. If we&#8217;re building incrementally then it seems like it&#8217;s a step we should be looking to take.</p>
<p>I haven&#8217;t done the second part of the exercise which you describe but it does feel like the Calculator class does too much even in the state that I&#8217;ve got it in. There are a few responsibilities which don&#8217;t belong there. </p>
<p>Did you post up your final solution anywhere?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas Eyde</title>
		<link>http://www.markhneedham.com/blog/2009/12/25/roy-osheroves-tdd-kata-my-first-attempt/comment-page-1/#comment-29192</link>
		<dc:creator>Thomas Eyde</dc:creator>
		<pubDate>Wed, 30 Dec 2009 02:25:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=1975#comment-29192</guid>
		<description>I decided to code my way through the whole kata before I commented.

First of all, I will say that your SubString solution is simple, but incorrect. It relates to positional data and not the separator at all. It will choke on two digit numbers.

Then I have to agree with Michael, that the next simple step can very well be the generic solution. If you have done these kinds of things before, you better know the generic solution already.

So to my experiences with this kata: 3 times did I experience that my next test was already covered. I don&#039;t see that as a bad thing, but as a reminder to investigate why that is.

At one point I discovered my multi-separator algorithm succeeded of the wrong reason: It treated each character as a separator, so that [*][%] was treated as 4 separators, not two, because there are 4 distinct characters present.

Introducing multi-separators was also the point where I had to rethink and refactor my approach, and I spent just as much time implementing this one test as all the previous.

At the end, with all tests passing, I had this one giant Calculator class which did more than its share of responsibilities.

The final refactoring also took nearly as much time as all the coding preceding it. The final code had more classes and looked cleaner, but if this were a real life project, I would defer the last refactoring until I actually needed to change the code.

The single calculator-class solution wasn&#039;t that bad, but it contained a lot of small static helper methods which had nothing to do with the actual calculation.</description>
		<content:encoded><![CDATA[<p>I decided to code my way through the whole kata before I commented.</p>
<p>First of all, I will say that your SubString solution is simple, but incorrect. It relates to positional data and not the separator at all. It will choke on two digit numbers.</p>
<p>Then I have to agree with Michael, that the next simple step can very well be the generic solution. If you have done these kinds of things before, you better know the generic solution already.</p>
<p>So to my experiences with this kata: 3 times did I experience that my next test was already covered. I don&#8217;t see that as a bad thing, but as a reminder to investigate why that is.</p>
<p>At one point I discovered my multi-separator algorithm succeeded of the wrong reason: It treated each character as a separator, so that [*][%] was treated as 4 separators, not two, because there are 4 distinct characters present.</p>
<p>Introducing multi-separators was also the point where I had to rethink and refactor my approach, and I spent just as much time implementing this one test as all the previous.</p>
<p>At the end, with all tests passing, I had this one giant Calculator class which did more than its share of responsibilities.</p>
<p>The final refactoring also took nearly as much time as all the coding preceding it. The final code had more classes and looked cleaner, but if this were a real life project, I would defer the last refactoring until I actually needed to change the code.</p>
<p>The single calculator-class solution wasn&#8217;t that bad, but it contained a lot of small static helper methods which had nothing to do with the actual calculation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The Morning Brew - Chris Alcock &#187; The Morning Brew #506</title>
		<link>http://www.markhneedham.com/blog/2009/12/25/roy-osheroves-tdd-kata-my-first-attempt/comment-page-1/#comment-29154</link>
		<dc:creator>The Morning Brew - Chris Alcock &#187; The Morning Brew #506</dc:creator>
		<pubDate>Tue, 29 Dec 2009 11:58:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=1975#comment-29154</guid>
		<description>[...] Roy Osherove&#8217;s TDD Kata: My first attempt - Mark Needham shares his thoughts on his first attempt at the Roy Osherove TDD Kata problem, talking about going mouseless and his struggles with doing the smallest possible step [...]</description>
		<content:encoded><![CDATA[<p>[...] Roy Osherove&#8217;s TDD Kata: My first attempt &#8211; Mark Needham shares his thoughts on his first attempt at the Roy Osherove TDD Kata problem, talking about going mouseless and his struggles with doing the smallest possible step [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael L Perry</title>
		<link>http://www.markhneedham.com/blog/2009/12/25/roy-osheroves-tdd-kata-my-first-attempt/comment-page-1/#comment-28952</link>
		<dc:creator>Michael L Perry</dc:creator>
		<pubDate>Fri, 25 Dec 2009 17:13:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=1975#comment-28952</guid>
		<description>I have a hard time seeing the smallest possible step as well. I, like you, tend to find a more general solution.

I believe that this is the core of the argument against TDD. While some find it more natural to gradually evolve a correct solution, others prefer to reason through the whole problem and solve it once.

It is not incorrect to write a complete algorithm the first time. There is a time for evolutionary coding and a time for revolutionary coding. Each person must find their own balance.</description>
		<content:encoded><![CDATA[<p>I have a hard time seeing the smallest possible step as well. I, like you, tend to find a more general solution.</p>
<p>I believe that this is the core of the argument against TDD. While some find it more natural to gradually evolve a correct solution, others prefer to reason through the whole problem and solve it once.</p>
<p>It is not incorrect to write a complete algorithm the first time. There is a time for evolutionary coding and a time for revolutionary coding. Each person must find their own balance.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

