<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Purposeful Software Development</title>
	<atom:link href="http://blog.saadware.com/2008/07/02/purposeful-software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.saadware.com/2008/07/02/purposeful-software-development/</link>
	<description>writings by scott saad</description>
	<lastBuildDate>Fri, 11 Sep 2009 03:13:18 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Scott</title>
		<link>http://blog.saadware.com/2008/07/02/purposeful-software-development/#comment-24</link>
		<dc:creator>Scott</dc:creator>
		<pubDate>Mon, 07 Jul 2008 23:22:20 +0000</pubDate>
		<guid isPermaLink="false">http://saadware.wordpress.com/?p=18#comment-24</guid>
		<description>Hi Philip,

Yes, we did have a form of automated unit testing, where all tests that we had written would run with our automated build system. The practice of writing our tests first prior to actually developing production code was something that was done only once in a great while. 

Thanks for the generous comment on the post. 

Happy coding!
Scott</description>
		<content:encoded><![CDATA[<p>Hi Philip,</p>
<p>Yes, we did have a form of automated unit testing, where all tests that we had written would run with our automated build system. The practice of writing our tests first prior to actually developing production code was something that was done only once in a great while. </p>
<p>Thanks for the generous comment on the post. </p>
<p>Happy coding!<br />
Scott</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Philip Schwarz</title>
		<link>http://blog.saadware.com/2008/07/02/purposeful-software-development/#comment-23</link>
		<dc:creator>Philip Schwarz</dc:creator>
		<pubDate>Mon, 07 Jul 2008 21:07:28 +0000</pubDate>
		<guid isPermaLink="false">http://saadware.wordpress.com/?p=18#comment-23</guid>
		<description>Scott,

You said:

&lt;i&gt;I had worked with a team that practiced a modified form of Extreme Programming. In this version, there was no pair programming, there was no test-driven development. &lt;/i&gt;

OK, there was no TDD. Was there any automated unit testing?

BTW: nice post.  Really liked reading about your experience in applying TDD.

Philip

Philip</description>
		<content:encoded><![CDATA[<p>Scott,</p>
<p>You said:</p>
<p><i>I had worked with a team that practiced a modified form of Extreme Programming. In this version, there was no pair programming, there was no test-driven development. </i></p>
<p>OK, there was no TDD. Was there any automated unit testing?</p>
<p>BTW: nice post.  Really liked reading about your experience in applying TDD.</p>
<p>Philip</p>
<p>Philip</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott</title>
		<link>http://blog.saadware.com/2008/07/02/purposeful-software-development/#comment-22</link>
		<dc:creator>Scott</dc:creator>
		<pubDate>Mon, 07 Jul 2008 17:30:24 +0000</pubDate>
		<guid isPermaLink="false">http://saadware.wordpress.com/?p=18#comment-22</guid>
		<description>Thanks for the comment Phillip. I&#039;m not sure I understand your question/comment. The post is not saying that TDD is bad or useless. I completely agree that it&#039;s an essential part of XP. I was just trying to say that sometimes we forget why we are testing because we fall into habits that make it more of a ritual than something useful.

Please let me know if I can clarify anything if it doesn&#039;t make sense.</description>
		<content:encoded><![CDATA[<p>Thanks for the comment Phillip. I&#8217;m not sure I understand your question/comment. The post is not saying that TDD is bad or useless. I completely agree that it&#8217;s an essential part of XP. I was just trying to say that sometimes we forget why we are testing because we fall into habits that make it more of a ritual than something useful.</p>
<p>Please let me know if I can clarify anything if it doesn&#8217;t make sense.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Philip Schwarz</title>
		<link>http://blog.saadware.com/2008/07/02/purposeful-software-development/#comment-21</link>
		<dc:creator>Philip Schwarz</dc:creator>
		<pubDate>Sat, 05 Jul 2008 19:56:12 +0000</pubDate>
		<guid isPermaLink="false">http://saadware.wordpress.com/?p=18#comment-21</guid>
		<description>Scott,

you said: &lt;i&gt;...a modified form of Extreme Programming. In this version, there was no pair programming, there was no test-driven development. &lt;/i&gt;

Was there any automated unit testing?

you said: &lt;i&gt;There were user stories, iterative development, refactoring, etc. With this new team I decided that I would give this TDD a try as I was hearing that a big piece of the agile benefit(s) were being missed by not unit testing.&lt;/i&gt;

Do you mean by not doing automated unit testing?

Automated testing is an essential part of XP because it is needed to guarantee the key technical premise of XP: that it is possible to experience a flattened cost of change curve. Let me explain with a collage of excerpts from Kent Beck&#039;s &lt;a href=&quot;http://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0201616416&quot; rel=&quot;nofollow&quot;&gt;Extreme Programming Explained&lt;/a&gt; (1st edition):

Traditional approaches to software development are careful to make big decisions early and little decisions later.
XP is an entirely different approach to software development that makes each decision quickly, but backs each decision with automated tests, and that prepares you to improve the design of the software (refactor) when you learn a better way to design it.

The XP approach is not possible if the cost of changing a program rises exponentially over time, a universal assumption of software engineering, but it is possible if the cost of change rises slowly over time, eventually reaching an asymptote.

XP says that with a combination of technology and programming practices, it is possible to experience a curve that is the opposite of the exponential cost of change curve: a flattened cost of change curve.

Here are the practices:

* A simple design, with no extra design elements no ideas that weren&#039;t used yet but were expected to be used in the future.
* Automated tests, so we had confidence we would know if we accidentally changed the existing behavior of the system.
* Lots of practice in modifying the design, so when the time came to change the system, we weren&#039;t too afraid to try it.

With these elements in place—simple design, tests, and an attitude of constant refinement of the design we experience the flattened curve, and so the XP approach to software development becomes viable.</description>
		<content:encoded><![CDATA[<p>Scott,</p>
<p>you said: <i>&#8230;a modified form of Extreme Programming. In this version, there was no pair programming, there was no test-driven development. </i></p>
<p>Was there any automated unit testing?</p>
<p>you said: <i>There were user stories, iterative development, refactoring, etc. With this new team I decided that I would give this TDD a try as I was hearing that a big piece of the agile benefit(s) were being missed by not unit testing.</i></p>
<p>Do you mean by not doing automated unit testing?</p>
<p>Automated testing is an essential part of XP because it is needed to guarantee the key technical premise of XP: that it is possible to experience a flattened cost of change curve. Let me explain with a collage of excerpts from Kent Beck&#8217;s <a href="http://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0201616416" rel="nofollow">Extreme Programming Explained</a> (1st edition):</p>
<p>Traditional approaches to software development are careful to make big decisions early and little decisions later.<br />
XP is an entirely different approach to software development that makes each decision quickly, but backs each decision with automated tests, and that prepares you to improve the design of the software (refactor) when you learn a better way to design it.</p>
<p>The XP approach is not possible if the cost of changing a program rises exponentially over time, a universal assumption of software engineering, but it is possible if the cost of change rises slowly over time, eventually reaching an asymptote.</p>
<p>XP says that with a combination of technology and programming practices, it is possible to experience a curve that is the opposite of the exponential cost of change curve: a flattened cost of change curve.</p>
<p>Here are the practices:</p>
<p>* A simple design, with no extra design elements no ideas that weren&#8217;t used yet but were expected to be used in the future.<br />
* Automated tests, so we had confidence we would know if we accidentally changed the existing behavior of the system.<br />
* Lots of practice in modifying the design, so when the time came to change the system, we weren&#8217;t too afraid to try it.</p>
<p>With these elements in place—simple design, tests, and an attitude of constant refinement of the design we experience the flattened curve, and so the XP approach to software development becomes viable.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott</title>
		<link>http://blog.saadware.com/2008/07/02/purposeful-software-development/#comment-20</link>
		<dc:creator>Scott</dc:creator>
		<pubDate>Thu, 03 Jul 2008 14:47:57 +0000</pubDate>
		<guid isPermaLink="false">http://saadware.wordpress.com/?p=18#comment-20</guid>
		<description>Hi David,

Thank you for commenting. If I remember correctly, there were glimpses of progress early on in the game, probably within a few hours. However, these glimpses were not enough to convince me that what I was doing was helping. 

For me, I think the &quot;lights went on&quot; after a week or two when I ended up re-writing some of the code I had written earlier in the project. This was the result of the tests pointing out flaws in the implementation. It was definitely a strange feeling at first. I don&#039;t believe I would have realized the benefits unless this happened. 

All I can say is that it was a very liberating experience and I feel fortunate that for some reason I suffered through the pain early on. It would have been very easy to just throw out the whole concept.

Best regards,
Scott</description>
		<content:encoded><![CDATA[<p>Hi David,</p>
<p>Thank you for commenting. If I remember correctly, there were glimpses of progress early on in the game, probably within a few hours. However, these glimpses were not enough to convince me that what I was doing was helping. </p>
<p>For me, I think the &#8220;lights went on&#8221; after a week or two when I ended up re-writing some of the code I had written earlier in the project. This was the result of the tests pointing out flaws in the implementation. It was definitely a strange feeling at first. I don&#8217;t believe I would have realized the benefits unless this happened. </p>
<p>All I can say is that it was a very liberating experience and I feel fortunate that for some reason I suffered through the pain early on. It would have been very easy to just throw out the whole concept.</p>
<p>Best regards,<br />
Scott</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David San Filippo</title>
		<link>http://blog.saadware.com/2008/07/02/purposeful-software-development/#comment-19</link>
		<dc:creator>David San Filippo</dc:creator>
		<pubDate>Thu, 03 Jul 2008 13:45:23 +0000</pubDate>
		<guid isPermaLink="false">http://saadware.wordpress.com/?p=18#comment-19</guid>
		<description>Great Post. In my original blog post, I probably went a bit off track discussing my own problems with TDD instead of dealing with the Cargo Cult aspect of some developers. You did a good job of addressing that as we need to really understand the practices we perform, not just with TDD, but with everything we do.

I also really like your description of your &quot;A ha&quot; moment, where you no longer felt like you were just flailing. I am curious to how long it took for you to reach that point.</description>
		<content:encoded><![CDATA[<p>Great Post. In my original blog post, I probably went a bit off track discussing my own problems with TDD instead of dealing with the Cargo Cult aspect of some developers. You did a good job of addressing that as we need to really understand the practices we perform, not just with TDD, but with everything we do.</p>
<p>I also really like your description of your &#8220;A ha&#8221; moment, where you no longer felt like you were just flailing. I am curious to how long it took for you to reach that point.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
