<?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: Ignoring Testing can be Explained, but Never Excused</title>
	<atom:link href="http://lostechies.com/chrismissal/2009/01/26/ignoring-testing-can-be-explained-but-never-excused/feed/" rel="self" type="application/rss+xml" />
	<link>http://lostechies.com/chrismissal/2009/01/26/ignoring-testing-can-be-explained-but-never-excused/</link>
	<description>Thoughts while working and playing as a Software Developer</description>
	<lastBuildDate>Thu, 11 Apr 2013 16:53:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
	<item>
		<title>By: Stephen Smith</title>
		<link>http://lostechies.com/chrismissal/2009/01/26/ignoring-testing-can-be-explained-but-never-excused/#comment-29</link>
		<dc:creator>Stephen Smith</dc:creator>
		<pubDate>Tue, 27 Jan 2009 23:13:38 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chrismissal/archive/2009/01/26/ignoring-testing-can-be-explained-but-never-excused.aspx#comment-29</guid>
		<description>@Paul,

TDD ideally is just &quot;enough design up front&quot; and then you are NOT limited to your initial design decisions which would have been made when you knew least about the module being implemented.

The refactoring provides the freedom to always permit more optimal designs to emerge as you discover more about the nature of the requirements being implemented and the best way to implement them.

Doing TDD well is an art to be learnt in itself with practice and mentoring. </description>
		<content:encoded><![CDATA[<p>@Paul,</p>
<p>TDD ideally is just &#8220;enough design up front&#8221; and then you are NOT limited to your initial design decisions which would have been made when you knew least about the module being implemented.</p>
<p>The refactoring provides the freedom to always permit more optimal designs to emerge as you discover more about the nature of the requirements being implemented and the best way to implement them.</p>
<p>Doing TDD well is an art to be learnt in itself with practice and mentoring. </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: freddy</title>
		<link>http://lostechies.com/chrismissal/2009/01/26/ignoring-testing-can-be-explained-but-never-excused/#comment-28</link>
		<dc:creator>freddy</dc:creator>
		<pubDate>Tue, 27 Jan 2009 15:07:12 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chrismissal/archive/2009/01/26/ignoring-testing-can-be-explained-but-never-excused.aspx#comment-28</guid>
		<description>@Paul,

TDD doesn&#039;t negates the need for an application architecture that is concerned with the bigger aspects of the system. It is about design of the more granular pieces that make up the software.</description>
		<content:encoded><![CDATA[<p>@Paul,</p>
<p>TDD doesn&#8217;t negates the need for an application architecture that is concerned with the bigger aspects of the system. It is about design of the more granular pieces that make up the software.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Cowan</title>
		<link>http://lostechies.com/chrismissal/2009/01/26/ignoring-testing-can-be-explained-but-never-excused/#comment-27</link>
		<dc:creator>Paul Cowan</dc:creator>
		<pubDate>Tue, 27 Jan 2009 11:47:26 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chrismissal/archive/2009/01/26/ignoring-testing-can-be-explained-but-never-excused.aspx#comment-27</guid>
		<description>I often hear the TDD is design argument which seems to contradict what most have previously stated. It is often quoted that you need tests in order to refactor. This would lead you to believe the tests are indeed there to TEST nothing has broke during the refactoring.

Also TDD seems like a bad design choice. We start writing code with no idea of design in place until after countless refactorings a design is somehow discovered.

This voyage of discovery seems somewhat wasteful.

The SOLID acronym so the new darling of alt.net. I&#039;m waiting for a post saying there is no excuse not to write code that does not adhere to SOLID.</description>
		<content:encoded><![CDATA[<p>I often hear the TDD is design argument which seems to contradict what most have previously stated. It is often quoted that you need tests in order to refactor. This would lead you to believe the tests are indeed there to TEST nothing has broke during the refactoring.</p>
<p>Also TDD seems like a bad design choice. We start writing code with no idea of design in place until after countless refactorings a design is somehow discovered.</p>
<p>This voyage of discovery seems somewhat wasteful.</p>
<p>The SOLID acronym so the new darling of alt.net. I&#8217;m waiting for a post saying there is no excuse not to write code that does not adhere to SOLID.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Cowan</title>
		<link>http://lostechies.com/chrismissal/2009/01/26/ignoring-testing-can-be-explained-but-never-excused/#comment-26</link>
		<dc:creator>Paul Cowan</dc:creator>
		<pubDate>Tue, 27 Jan 2009 07:59:31 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chrismissal/archive/2009/01/26/ignoring-testing-can-be-explained-but-never-excused.aspx#comment-26</guid>
		<description>It just feels wrong that we have to have verification and backup for every line of code we write in the shape of multiple assertions.

I often hear the TDD is design argument which seems to contradict what most have previously stated. It is often quoted that you need tests in order to refactor. This would lead you to believe the tests are indeed there to TEST nothing has broke during the refactoring.

Also TDD seems like a bad design choice. We start writing code with no idea of design in place until after countless refactorings a design is somehow discovered.

This voyage of discovery seems somewhat wasteful.

The SOLID acronym is the new darling of alt.net. I&#039;m waiting for a post saying there is no excuse not to write code that does not adhere to SOLID.</description>
		<content:encoded><![CDATA[<p>It just feels wrong that we have to have verification and backup for every line of code we write in the shape of multiple assertions.</p>
<p>I often hear the TDD is design argument which seems to contradict what most have previously stated. It is often quoted that you need tests in order to refactor. This would lead you to believe the tests are indeed there to TEST nothing has broke during the refactoring.</p>
<p>Also TDD seems like a bad design choice. We start writing code with no idea of design in place until after countless refactorings a design is somehow discovered.</p>
<p>This voyage of discovery seems somewhat wasteful.</p>
<p>The SOLID acronym is the new darling of alt.net. I&#8217;m waiting for a post saying there is no excuse not to write code that does not adhere to SOLID.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stephen Smith</title>
		<link>http://lostechies.com/chrismissal/2009/01/26/ignoring-testing-can-be-explained-but-never-excused/#comment-25</link>
		<dc:creator>Stephen Smith</dc:creator>
		<pubDate>Tue, 27 Jan 2009 04:30:51 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chrismissal/archive/2009/01/26/ignoring-testing-can-be-explained-but-never-excused.aspx#comment-25</guid>
		<description>My development philosophy is the alternative to writing testable code is writing DETESTABLE code - in both senses of the word.

My experience is that where I have been and the excuse to not invest in quality practices such as TDD is a lack of time because of deadlines. It is the most compelling argument for investing in TDD.

Quality can NOT be bolted onto a product by additional QA testing at the end. Quality must be built in by the use of quality practices and tools. A significant characteristic of quality is that is closes the feedback loop as early as possible and as often as required. Automated testing such as that produced as a result of applying TDD and automated user acceptance testing meets these quality characteristics perfectly.

Where we have relied on QA testing to close the feedback loop many loops are being closed a long time after the code was written and many loops are being closed all at the one time, resulting in many raised bugs to resolve, when we least want the stress in the development - test - release cycle for an application release. 

Many developers can see the benefits of the growing suite of unit tests as a result of applying TDD as being a powerful regression tool. They find difficulty in understanding that TDD&#039;s real value is as a powerful object-oriented design tool that via continuous refactoring continuously permits more optimal designs, conforming to SOLID principles, to emerge as the developer continuously discovers more about the nature of the requirements being implemented and concurrently simpler and more elegant designs for implementing them. Where we have relied on QA to essentially &quot;clean up&quot; after us fixing each bug has often resulted in unknowingly creating several others as there has been little or no attempt at implementing separation of concerns, a real circus.

Applying TDD is a powerful communication mechanism for determining exactly what are the requirements to be implemented. The tests are a black and white, pass or fail, explicit view of the expected behaviour of the module being implemented. The automated tests are executable documentation. It drives out all forms of ambiguity in the requirements or the developer&#039;s interpretation of the requirements. Business analysts have always appreciated the fact that I will be persistant in working with them in teasing out the exact meaning of the requirements as it provides invaluable feedback to them that I have understood the requirements and where needed they have gone back to the business for clarification where required. Business analysts worst nightmare is where the developer does not understand and has made their own assumptions where there is ambiguity.

Delivering business value in software development boils down to building the right thing (the optimal requirements that deliver business value to the user) and building the thing right (the optimal design). TDD, along with other forms of automated testing, is such an important enabler and verifier in being able to build the right thing and to build it right.</description>
		<content:encoded><![CDATA[<p>My development philosophy is the alternative to writing testable code is writing DETESTABLE code &#8211; in both senses of the word.</p>
<p>My experience is that where I have been and the excuse to not invest in quality practices such as TDD is a lack of time because of deadlines. It is the most compelling argument for investing in TDD.</p>
<p>Quality can NOT be bolted onto a product by additional QA testing at the end. Quality must be built in by the use of quality practices and tools. A significant characteristic of quality is that is closes the feedback loop as early as possible and as often as required. Automated testing such as that produced as a result of applying TDD and automated user acceptance testing meets these quality characteristics perfectly.</p>
<p>Where we have relied on QA testing to close the feedback loop many loops are being closed a long time after the code was written and many loops are being closed all at the one time, resulting in many raised bugs to resolve, when we least want the stress in the development &#8211; test &#8211; release cycle for an application release. </p>
<p>Many developers can see the benefits of the growing suite of unit tests as a result of applying TDD as being a powerful regression tool. They find difficulty in understanding that TDD&#8217;s real value is as a powerful object-oriented design tool that via continuous refactoring continuously permits more optimal designs, conforming to SOLID principles, to emerge as the developer continuously discovers more about the nature of the requirements being implemented and concurrently simpler and more elegant designs for implementing them. Where we have relied on QA to essentially &#8220;clean up&#8221; after us fixing each bug has often resulted in unknowingly creating several others as there has been little or no attempt at implementing separation of concerns, a real circus.</p>
<p>Applying TDD is a powerful communication mechanism for determining exactly what are the requirements to be implemented. The tests are a black and white, pass or fail, explicit view of the expected behaviour of the module being implemented. The automated tests are executable documentation. It drives out all forms of ambiguity in the requirements or the developer&#8217;s interpretation of the requirements. Business analysts have always appreciated the fact that I will be persistant in working with them in teasing out the exact meaning of the requirements as it provides invaluable feedback to them that I have understood the requirements and where needed they have gone back to the business for clarification where required. Business analysts worst nightmare is where the developer does not understand and has made their own assumptions where there is ambiguity.</p>
<p>Delivering business value in software development boils down to building the right thing (the optimal requirements that deliver business value to the user) and building the thing right (the optimal design). TDD, along with other forms of automated testing, is such an important enabler and verifier in being able to build the right thing and to build it right.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rainwebs</title>
		<link>http://lostechies.com/chrismissal/2009/01/26/ignoring-testing-can-be-explained-but-never-excused/#comment-24</link>
		<dc:creator>rainwebs</dc:creator>
		<pubDate>Mon, 26 Jan 2009 19:58:21 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chrismissal/archive/2009/01/26/ignoring-testing-can-be-explained-but-never-excused.aspx#comment-24</guid>
		<description>@m4bwav: good point. 

Maybe some words from the lead developer/architect&#039;s point-of-view to this. In teams with limited resources and/or limited timeframes, you&#039;ve to decide for the important things. First, the functionality you&#039;ve to deliver, second the documentation quality (Javadocs, etc.) for later maintenance, third all the modern extras, like TDD. I can skip unit tests if I test on a higher level (e.g. the user interface). This is what the elder did in the past. And it worked with the right testing teams. 

And the real question to me is what do I loose not following the TDD ideas? I don&#039;t think its stability. If the test team is smart, this is no problem. Maybe flexibility in changing or extending existing code. Some bugs will be found later. But, what does this cost me in the end? Basically, I&#039;ve to be more careful with my interface designs and have to invest more time in pre-planning. 

With limited resources and limited time frames I can&#039;t expect to get extra time for refactoring. So, the design has to hit the target earlier anyway. I&#039;ve no problem to invest more time in design, and skip unit tests. Maybe not modern today, but it worked in the past. 

Some words about my experience with the team. All developers love to write unit tests. It&#039;s ok to me. I&#039;m the opposite to the lead developer m4bwav mentioned. I even change my designs if the arguments show that my ideas doesn&#039;t deliver the best result the team can produce: 

http://blog.rainer.eschen.name/2008/02/20/the-mission-of-a-software-architect/

But, it&#039;s not enough to be motivated. There are a lot of young developers in the team. Lack of experience, not only in TDD but also in software engineering principles, is a big point here. So, the more tests we have, and the more customizable (and complex) the implementation gets, the lesser useful the unit test are. Even continuous integration gets worser.

So, what&#039;s missing here (and that was not mentioned in this post)? Planning. TDD needs time to be successfully implemented. I think the developers try to follow all ideas of this post, but that&#039;s not the point. Only the quality of the unit tests result is important. This quality is not for free. We don&#039;t get it automatically. And it&#039;s a hard job to get it. Looking back the last years I think even without limitations TDD is only successful if your functional design is extended with a test design.

Provocation: is it really worth the effort, or is TDD only a hype? Any studies? Nobody is question the efficiency anymore.</description>
		<content:encoded><![CDATA[<p>@m4bwav: good point. </p>
<p>Maybe some words from the lead developer/architect&#8217;s point-of-view to this. In teams with limited resources and/or limited timeframes, you&#8217;ve to decide for the important things. First, the functionality you&#8217;ve to deliver, second the documentation quality (Javadocs, etc.) for later maintenance, third all the modern extras, like TDD. I can skip unit tests if I test on a higher level (e.g. the user interface). This is what the elder did in the past. And it worked with the right testing teams. </p>
<p>And the real question to me is what do I loose not following the TDD ideas? I don&#8217;t think its stability. If the test team is smart, this is no problem. Maybe flexibility in changing or extending existing code. Some bugs will be found later. But, what does this cost me in the end? Basically, I&#8217;ve to be more careful with my interface designs and have to invest more time in pre-planning. </p>
<p>With limited resources and limited time frames I can&#8217;t expect to get extra time for refactoring. So, the design has to hit the target earlier anyway. I&#8217;ve no problem to invest more time in design, and skip unit tests. Maybe not modern today, but it worked in the past. </p>
<p>Some words about my experience with the team. All developers love to write unit tests. It&#8217;s ok to me. I&#8217;m the opposite to the lead developer m4bwav mentioned. I even change my designs if the arguments show that my ideas doesn&#8217;t deliver the best result the team can produce: </p>
<p><a href="http://blog.rainer.eschen.name/2008/02/20/the-mission-of-a-software-architect/" rel="nofollow">http://blog.rainer.eschen.name/2008/02/20/the-mission-of-a-software-architect/</a></p>
<p>But, it&#8217;s not enough to be motivated. There are a lot of young developers in the team. Lack of experience, not only in TDD but also in software engineering principles, is a big point here. So, the more tests we have, and the more customizable (and complex) the implementation gets, the lesser useful the unit test are. Even continuous integration gets worser.</p>
<p>So, what&#8217;s missing here (and that was not mentioned in this post)? Planning. TDD needs time to be successfully implemented. I think the developers try to follow all ideas of this post, but that&#8217;s not the point. Only the quality of the unit tests result is important. This quality is not for free. We don&#8217;t get it automatically. And it&#8217;s a hard job to get it. Looking back the last years I think even without limitations TDD is only successful if your functional design is extended with a test design.</p>
<p>Provocation: is it really worth the effort, or is TDD only a hype? Any studies? Nobody is question the efficiency anymore.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Cowan</title>
		<link>http://lostechies.com/chrismissal/2009/01/26/ignoring-testing-can-be-explained-but-never-excused/#comment-23</link>
		<dc:creator>Paul Cowan</dc:creator>
		<pubDate>Mon, 26 Jan 2009 19:26:30 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chrismissal/archive/2009/01/26/ignoring-testing-can-be-explained-but-never-excused.aspx#comment-23</guid>
		<description>Your post brought me to words:

http://the-software-simpleton.blogspot.com/2009/01/assertthattdd-istrue.html
</description>
		<content:encoded><![CDATA[<p>Your post brought me to words:</p>
<p><a href="http://the-software-simpleton.blogspot.com/2009/01/assertthattdd-istrue.html" rel="nofollow">http://the-software-simpleton.blogspot.com/2009/01/assertthattdd-istrue.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: m4bwav</title>
		<link>http://lostechies.com/chrismissal/2009/01/26/ignoring-testing-can-be-explained-but-never-excused/#comment-22</link>
		<dc:creator>m4bwav</dc:creator>
		<pubDate>Mon, 26 Jan 2009 17:23:16 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chrismissal/archive/2009/01/26/ignoring-testing-can-be-explained-but-never-excused.aspx#comment-22</guid>
		<description>re: &quot;Writing Tests Takes Too Long&quot;/&quot;Explained due to lack of project structure or poor code.&quot;

If the deadline is too tight, and the lead developer is not at all familiar with TDD, then your kind of f**ked. 

 I would like to refactor the code to make it more testable, but the lead developer would both be concerned about the time I&#039;m taking because they wouldn&#039;t really care what it was for, and because I would be altering their poor design.  Many lead developers are defensive about their position, and wouldn&#039;t like someone upstaging them by refactoring the code for reasons they don&#039;t understand.

I love TDD, but I think TDD advocates forget that teaching TDD, and it&#039;s concepts takes time for those unfamiliar to them.  And in time deadline situations, especially with rookie leads, it&#039;s going to be hard sell. </description>
		<content:encoded><![CDATA[<p>re: &#8220;Writing Tests Takes Too Long&#8221;/&#8221;Explained due to lack of project structure or poor code.&#8221;</p>
<p>If the deadline is too tight, and the lead developer is not at all familiar with TDD, then your kind of f**ked. </p>
<p> I would like to refactor the code to make it more testable, but the lead developer would both be concerned about the time I&#8217;m taking because they wouldn&#8217;t really care what it was for, and because I would be altering their poor design.  Many lead developers are defensive about their position, and wouldn&#8217;t like someone upstaging them by refactoring the code for reasons they don&#8217;t understand.</p>
<p>I love TDD, but I think TDD advocates forget that teaching TDD, and it&#8217;s concepts takes time for those unfamiliar to them.  And in time deadline situations, especially with rookie leads, it&#8217;s going to be hard sell. </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: schambers</title>
		<link>http://lostechies.com/chrismissal/2009/01/26/ignoring-testing-can-be-explained-but-never-excused/#comment-21</link>
		<dc:creator>schambers</dc:creator>
		<pubDate>Mon, 26 Jan 2009 16:47:34 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chrismissal/archive/2009/01/26/ignoring-testing-can-be-explained-but-never-excused.aspx#comment-21</guid>
		<description>Good post.

While I agree that you should always test and there is no excuse for it. Another thing that really effects testing is getting legacy code under test. Sometimes the technical debt is just too great to get old code under test.

From the aspect of new development however, I agree completely, there is no excuse for leaving out tests.</description>
		<content:encoded><![CDATA[<p>Good post.</p>
<p>While I agree that you should always test and there is no excuse for it. Another thing that really effects testing is getting legacy code under test. Sometimes the technical debt is just too great to get old code under test.</p>
<p>From the aspect of new development however, I agree completely, there is no excuse for leaving out tests.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Nijhof</title>
		<link>http://lostechies.com/chrismissal/2009/01/26/ignoring-testing-can-be-explained-but-never-excused/#comment-20</link>
		<dc:creator>Mark Nijhof</dc:creator>
		<pubDate>Mon, 26 Jan 2009 16:16:18 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chrismissal/archive/2009/01/26/ignoring-testing-can-be-explained-but-never-excused.aspx#comment-20</guid>
		<description>Great read! Just this afternoon a college said something like: &quot;I don&#039;t like this test, to complex&quot; and after we looked at it we agreed that the existing code had to many responsibilities which made it harder to create a test for the new functionality using it. We changed the code and the test became simple again.</description>
		<content:encoded><![CDATA[<p>Great read! Just this afternoon a college said something like: &#8220;I don&#8217;t like this test, to complex&#8221; and after we looked at it we agreed that the existing code had to many responsibilities which made it harder to create a test for the new functionality using it. We changed the code and the test became simple again.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
